简述:
https:http over ssl 使用443端口
SSL会话的简化过程:
(1) 客户端发送可供选择的加密方式,并向服务器请求证书
(2) 服务器端发送证书以及选定的加密方式给客户端
(3) 客户端取得证书并进行证书验证
如果信任给其发证书的CA:
(a) 验证证书来源的合法性;用CA的公钥解密证书上数字签名
(b) 验证证书的内容的合法性:完整性验证
(c) 检查证书的有效期限
(d) 检查证书是否被吊销
(e) 证书中拥有者的名字,与访问的目标主机要一致
(4) 客户端生成临时会话密钥(对称密钥),并使用服务器端的公钥加密此数据发送给服务器,完成密钥交换
(5) 服务用此密钥加密用户请求的资源,响应给客户端
注意:SSL是基于IP地址实现,单IP的主机仅可以使用一个https虚拟主机
实验:实现https
方式一、使用自签名证书的https
(1)yum -y install mod_ssl
安装完之后只要重新启动httpd服务就支持https了
(2) 测试:基于https访问
curl -k https://192.168.119.129 -k表示忽略证书进行ssl连接,不加-k无法获取网页
650) this.width=650;" src="https://s5.51cto.com/oss/201710/20/083217353ce67190715039e4439145ee.jpg" style="float:none;" title="图片1.jpg" alt="083217353ce67190715039e4439145ee.jpg" />
测试:curl --cacert cacert.pem https://www.magedu.com -CAfile cacert.pem
650) this.width=650;" src="https://s4.51cto.com/oss/201710/20/ebb42de7b491abe4804f4a830dff87df.jpg" title="图片2.jpg" style="float:none;" alt="ebb42de7b491abe4804f4a830dff87df.jpg" />
650) this.width=650;" src="https://s4.51cto.com/oss/201710/20/c8f404c515ab10d7c3f8bbb96abfaa2f.jpg" title="图片3.jpg" style="float:none;" alt="c8f404c515ab10d7c3f8bbb96abfaa2f.jpg" />
方式二、向CA申请证书的https
1、yum -y install mod_ssl
2、创建私有CA
具体步骤及含义详见博文:http://13150617.blog.51cto.com/13140617/1968017
本文只在这里列出所需命令及文件:
cd /etc/pki/CA
echo 00 > serial
touch index.txt
(umask 066;openssl genrsa -out private/cakey.pem 4096) 创建私钥文件
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650 创建CA
650) this.width=650;" src="https://s4.51cto.com/oss/201710/20/0a02998bb1ad60b1df5a7caa8c6b67d6.jpg" title="图片4.jpg" style="float:none;" alt="0a02998bb1ad60b1df5a7caa8c6b67d6.jpg" />3、客户端申请证书
(umask 066;openssl genrsa -out /etc/httpd/conf.d/ssl/httpd.key 2048) 创建私钥文件
openssl req -new -key /etc/httpd/conf.d/ssl/httpd.key -out /etc/httpd/conf.d/ssl/httpd.csr 生成证书签署请求
650) this.width=650;" src="https://s3.51cto.com/oss/201710/20/bae2ceca93587a2448a987167f68efff.jpg" style="float:none;" title="图片5.jpg" alt="bae2ceca93587a2448a987167f68efff.jpg" />
scp /etc/httpd/conf.d/ssl/httpd.csr 192.168.119.128:/etc/pki/CA/ 将签署请求发送给CA
4、CA签署证书,并且发放证书
openssl ca -in httpd.csr -out certs/httpd.crt -days 365 签署证书
scp certs/httpd.crt 192.168.119.129:/etc/httpd/conf.d/ssl/ 发放证书
scp cacert.pem 192.168.119.129:/etc/httpd/conf.d/ssl/ CA的证书文件
5、修改配置文件,使其支持使用ssl,及使用的证书
vim /etc/httpd/conf.d/ssl.conf
SSLCertificateKeyFile /etc/httpd/conf.d/ssl/httpd.key 私钥文件
SSLCertificateFile /etc/httpd/conf.d/ssl/httpd.crt 证书文件
SSLCACertificateFile /etc/httpd/conf.d/ssl/cacert.pem CA证书
6、测试:在浏览器访问https://192.168.119.129
由于自己搭建的CA没有被信任,所以会有风险提示
650) this.width=650;" src="https://s3.51cto.com/oss/201710/20/6b3a5c206a96a75eeee4cedd6b719361.jpg" title="图片6.jpg" style="float:none;" alt="6b3a5c206a96a75eeee4cedd6b719361.jpg" />
650) this.width=650;" src="https://s4.51cto.com/oss/201710/20/fd91a2c74a37dca21056543f9ea193b1.jpg" title="图片7.jpg" style="float:none;" alt="fd91a2c74a37dca21056543f9ea193b1.jpg" />
安装CA证书并信任:
650) this.width=650;" src="https://s4.51cto.com/oss/201710/20/0ce770887f0b3f2982f5081bae6a9817.jpg" title="图片8.jpg" style="float:none;" alt="0ce770887f0b3f2982f5081bae6a9817.jpg" />
650) this.width=650;" src="https://s2.51cto.com/oss/201710/20/abc964f4567fff9176ecf8c4bbab8cf4.jpg" style="float:none;" title="图片9.jpg" alt="abc964f4567fff9176ecf8c4bbab8cf4.jpg" />
650) this.width=650;" src="https://s5.51cto.com/oss/201710/20/2a85d3adc226d79e587ff7942c1c9c0d.jpg" style="float:none;" title="图片10.jpg" alt="2a85d3adc226d79e587ff7942c1c9c0d.jpg" />
650) this.width=650;" src="https://s5.51cto.com/oss/201710/20/22796abc8515c6e92dc99749f07c1585.jpg" style="float:none;" title="图片11.jpg" alt="22796abc8515c6e92dc99749f07c1585.jpg" />
650) this.width=650;" src="https://s5.51cto.com/oss/201710/20/db4cd7f9f2c13ec0deacf50ff5e93cda.jpg" style="float:none;" title="图片12.jpg" alt="db4cd7f9f2c13ec0deacf50ff5e93cda.jpg" />
650) this.width=650;" src="https://s1.51cto.com/oss/201710/20/5eac41539e23decfdcd616a5fc698595.jpg" style="float:none;" title="图片13.jpg" alt="5eac41539e23decfdcd616a5fc698595.jpg" />
650) this.width=650;" src="https://s1.51cto.com/oss/201710/20/e0f415ed7bfd30327e3a4a49a6d67f1a.jpg" style="float:none;" title="图片14.jpg" alt="e0f415ed7bfd30327e3a4a49a6d67f1a.jpg" />
由于证书是颁发给www.magedu.com,所以url应该是https://www.magedu.com,那么需要加上DNS解析:
修改:C:\Windows\System32\drivers\etc\hosts
添加一行 192.168.119.129 www.magedu.com
然后再访问:
650) this.width=650;" src="https://s5.51cto.com/oss/201710/20/8e9a4fd7ce8891070c64485235693786.jpg" title="图片15.jpg" style="float:none;" alt="8e9a4fd7ce8891070c64485235693786.jpg" />
实验:http重定向到https
vim /etc/httpd/conf.d/test.conf
添加两行
RewriteEngine on 启动重定向引擎
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
说明:301表示永久跳转,302表示临时跳转
测试:
650) this.width=650;" src="https://s5.51cto.com/oss/201710/20/24f3ea16d59ab07615ca6629559b449f.jpg" title="图片16.jpg" style="float:none;" alt="24f3ea16d59ab07615ca6629559b449f.jpg" />
实验:HSTS
HSTS:HTTP Strict Transport Security
服务器端配置支持HSTS后,会在给浏览器返回的HTTP首部中携带HSTS字段。浏览器获取到该信息后,会将所有HTTP访问请求在内部做307跳转到HTTPS。而无需任何网络过程
HSTS preload list
是Chrome浏览器中的HSTS预载入列表,在该列表中的网站,使用Chrome浏览器访问时,会自动转换成HTTPS。Firefox、Safari、Edge浏览器也会采用这个列表。
实现HSTS示例:
vim /etc/httpd/conf.d/test.conf
Header always set Strict-Transport-Security "maxage=15768000" 以秒为单位
RewriteEngine on
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
测试:
650) this.width=650;" src="https://s5.51cto.com/oss/201710/20/d5742094a676a32c6ceabd83f1de1ad6.jpg" title="图片17.jpg" style="float:none;" alt="d5742094a676a32c6ceabd83f1de1ad6.jpg" />
650) this.width=650;" src="http://img.baidu.com/hi/jx2/j_0080.gif" alt="j_0080.gif" />
实验-----实现https
原文地址:http://13150617.blog.51cto.com/13140617/1974469