SSL安全访问协议及配置
一.https协议介绍
概述:
https=http+ssl(安全套接层)
https公钥验证失败警告:
1、证书不受信任会出现该警告
2、证书受信任,但并非在当前访问域名下也会出现此警告。
公钥证书查看方法:
上图所示为普通的https网站实例,某些网站https公钥类型不同则会有其它展现形式,如:
中国工商银行:
查看本机证书管理控制台:
受信任的证书颁发机构列表,若网页能正常访问,那么其证书就存在于该列表中:
工作原理步骤:
1、用户(客户端)先向服务器发送一个https请求
2、服务器拿到请求之后进行处理,服务器端存放了2个钥匙(私钥、公钥,公钥和私钥是不一样的,但是是一对,可以开一把锁),具体的处理步骤如下:先使用私钥把需要响应客户端的内容进行加密,再去把公钥随同响应内容一起发送给客户端
3、当浏览器获取到服务器端响应内容之后先去验证公钥的有效性,如果验证通过则继续后续操作,如果验证不通过,则会显示警告信息;受信任则产生随机的钥匙,然后使用公钥进行内容的加密
4、将加密完成的数据发送给服务器端
5、服务器端在获取加密信息之后再去使用私钥进行解密
6、服务器再去把需要响应的内容再返回给客户端,发送之前先使用私钥进行加密;
后续的步骤就是循环这个过程,只是后面不需要每次传送公钥
二.ssl协议配置
证书即公钥:
证书中有颁发者: 也就是证书的签发人(CA,即证书签发机构)
通过证书路径可以看到找到根证书:
证书的颁发是层级结构的,根证书父级还存在一个证书,该证书是全局证书,"自己发给自己",所有的子级证书都受信任于这个证书.
ssl部署时要求:证书使用的域名要和证书允许的域名一致(要么和"颁发给"或者和"使用者的可选名称"中给定的域名一致)
证书大多都是需要收费申请的,也有部分类型是免费的.现在CA一般不会给ip颁发,只给域名颁发,之前可以给ip颁发.
申请后的证书文件目录结构如:
CA机构不止一家
证书是有有效期的.
若域名通过https访问如下则表示https没有配置ok:
在apache中配置https协议环境
配置文件httpd-ssl.conf(apache目录下Conf/extra/httpd-ssl.conf)
修改httpd.conf文件,引入httpd-ssl.conf
“Include conf/extra/httpd-ssl.conf”
httpd中开启ssl扩展:
LoadModule ssl_module modules/mod_ssl.so
将证书文件以及其关联文件全部复制到apache目录下一个指定目录(如“i:/wamp/apache/conf/ssl/https/”)
即以下三个文件:
bundle.crt
privatekey.key
publickey.crt
crt证书文件内容是经过base64加密过的。
修改httpd-ssl.conf中相关配置段如下:
<VirtualHost _default_:443>
#ssl站点根目录
DocumentRoot "I:\www"
#ssl协议站点访问域名
ServerName www.itcast.biz:443
#管理员邮箱,在站点产生500错误会显示在页面上
ServerAdmin [email protected]
#ssl引擎开关
SSLEngine on
#ssl加密的组件,允许客户端使用的加密套件
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
#服务器证书文件
SSLCertificateFile "I:\www\Apache\conf\ssl\https\publickey.crt"
#服务器私钥证书
SSLCertificateKeyFile " I:\www\Apache\conf\ssl\https\privatekey.key"
#证书信任链文件
SSLCertificateChainFile " I:\www\Apache\conf\ssl\https\bundle.crt"
精简配置项后如下图:
注:在window下\/都可以使用,在linux下必须/。
重启apache