首先我们说俩句https
https:http over ssl
SSL会话的简化过程
(1) 客户端发送可供选择的加密方式,并向服务器请求证书
(2) 服务器端发送证书以及选定的加密方式给客户端
(3) 客户端取得证书并进行证书验证
如果信任给其发证书的CA
(a) 验证证书来源的合法性;用CA的公钥解密证书上数字签名
(b) 验证证书的内容的合法性:完整性验证
(c) 检查证书的有效期限
(d) 检查证书是否被吊销
(e) 证书中拥有者的名字,与访问的目标主机要一致
(4) 客户端生成临时会话密钥(对称密钥),并使用服务器端的公钥加密
此数据发送给服务器,完成密钥交换
(5) 服务用此密钥加密用户请求的资源,响应给客户端
注意:SSL是基于IP地址实现,单IP的主机仅可以使用一个https虚拟主机
CA: 107 centos7 web服务器:106 centos6,客户端:centos5
服务器操作centos7:
1CA
(umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048 )
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3000
touch /etc/pki/CA/index.txt
echo 00 > /etc/pki/CA/serial
2.Centos6操作: client 申请证书
创建一个目录专门放证书:mkdir /etc/httpd/conf.d/ssl/
(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
scp /etc/httpd/conf.d/ssl/httpd.csr 192.168.37.107:/etc/pki/CA/
3. 颁发证书 ,centos7操作
openssl ca -in /etc/pki/CA/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 300
然后就会发现证书文件已经存在
现在可以把证书拷给客户端了:
scp certs/httpd.crt 192.168.37.106:/etc/httpd/conf.d/ssl/
scp cacert.pem 192.168.37.106:/etc/httpd/conf.d/ssl/
补充:CA也是可以修改配置文件的
在centos6里确认证书已经存在:cd /etc/httpd/conf.d/ssl
4. 现在可以在配置http的服务了
安装包:yum -y install mod_ssl
修改配置文件:/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的路径)
重新加载服务:servicehttpd reload
现在就可以访问了:在客户端
现在依然不信任我们自己搭建的CA,so 我们可以自己把它导进去:
在hosts文件中添加一个域名解析(windows的hosts)
5. 测试基于https访问相应的主机
1.curl--cacert cacert.pem https://www.magedu.com/
2.openssl s_client -connect www.magedu.com:443 -CAfile /etc/pki/CA/cacert.pem
然后输入:
http重定向https
v 将http请求转发至https的URL
v 重定向
Redirect [status] URL-path URL
v status状态:
ü Permanent:Returns a permanent redirect status
(301) indicating that the resource has moved
permanently
ü Temp:Returns a temporary redirect status (302).
This is the default
v 示例:
Redirect temp / https://www.magedu.com/
RewriteEngine on重写引擎
位置:/etc/httpd/conf.d/httpd.conf
然后重载。
位置:/etc/hosts
测试:
第二种方法:
位置:
然后重载:service httpd reload
位置:/etc/hosts
测试: