https是http over ssl的缩写。监听在TCP的443端口上,可以基于ssl或tls协议实现http协议的安全传输。可以帮助客户端完成服务器认证,即可确保访问的服务器为所要访问的服务器,又能保证数据传输的完整性、保密性。
用户和服务器端基于https进行会话的时候,首先要建立SSL会话,下面图是建立SSL会话的过程:
一、其中建立SSL的过程为:
(1) 客户端发送给服务器端可供选择的加密方式,并向服务器请求证书;
(2) 服务器端发送证书以及选定的加密方式给客户端;
(3) 证书验正:
如果信任给其发证书的CA:
(a)验正证书来源的合法性;用CA的公钥解密证书上数字签名;
(b)验正证书的内容的合法性:完整性验正
(c)检查证书的有效期限;
(d)检查证书是否被吊销;
(e)证书中拥有者的名字,与访问的目标主机要一致;
(4) 客户端生成临时会话密钥(对称密钥),并使用服务器端的公钥加密此数据发送给服务器,完成密钥交换;
(5) 服务用此密钥加密用户请求的资源,响应给客户端;
注意:SSL会话是基于IP地址创建;所以单IP的主机上,仅可以使用一个https虚拟主机;
二、配置httpd支持https:
(1) 为服务器申请数字证书;
测试:通过私建CA发证书
(a) 创建私有CA
(b) 在服务器创建证书签署请求
(c) CA签证
(2) 配置httpd支持使用ssl,及使用的证书;
# yum -y install mod_ssl
配置文件:/etc/httpd/conf.d/ssl.conf
DocumentRoot
ServerName
SSLCertificateFile
SSLCertificateKeyFile
(3) 测试基于https访问相应的主机;
# openssl s_client [-connecthost:port] [-cert filename] [-CApath directory] [-CAfile filename]
举例:
这里准备三个虚拟机,V1作为web服务器端,V2为客户端,V3为证书服务器。
1、在V3主机上建立私有CA:
2、建立自签证书:
3、填入CA信息:
4、给证书创建数据库索引文件和序列号:
至此证书就建立完成了。建立的CA为cacert.pem。
5、在V1端创建秘钥:
6、建立证书签署请求(主机名一定要和服务器的主机名保持一致,否则会验证不通过):
(邮箱地址和面可以选填)
7、在V1上把V1的证书签署请求发给证书服务器V3上,随便放在一个目录中即可:
8、在V3上签署V1的证书请求:
9、在V3上把V3签署后的证书发到V1上
这样,证书签署就完成了。
下面开始zai V1上配置httpd
由于http默认没有ssl模块,所以要安装一下组件(一定要配置好yum仓库啊!!!)
yuminstall –y mod_ssl
修改ssl.conf配置文件
再编辑V1的httpd配置文件/etc/httpd/conf/httpd.conf修改虚拟主机并修改V2的/etc/host文件,此编辑方法在上一篇文章中有,不再赘述;
启动httpd服务器service httpd start
查看443端口是否开启ss –tnl 1 | grep 443
在V1中编辑好页面后用V3给V2发一份证书
并在V2上用openssl访问V1测试
至此,就可以访问基于ssl的http服务器了^_^~
以上内容如有偏颇,望及时指正!