首页 > 代码库 > Linux中https配置实例

Linux中https配置实例

https协议 :httpd是否支持ssl是决定于是否装载了ssl模块


http协议:文本编码格式(telnet可以验证明文传输的。

https协议:基于SSL二进制编码 https监听在443/tcp

httpd:ssl
ssl是基于IP地址创建,所以,每一个IP 仅创建一个SSL回话;
(也就是说一个IP只能建立一个ssl,要是你利用主机名建立多个网站,就只一个网站可支持ssl通信)

httpd的ssl的会话的建立相当占用系统资源,一般服务器端为了不占用系统资源一般生产厂商就会添加个硬件设备单独处理ssl认证。


ssl握手要完成的工作:
交换协议版本号
选择双方都支持的加密方式
客户端对服务器端实现身份验正
密钥交换(客户端选择一个临时的对称加密方式,用对方的公钥加密后传输给对方来身份验证)


客户端验证服务器证书:
有效性检查:证书是否仍然在有效期内。
CA的可信度检查:CA的公钥解密,能解密说明是可信的CA
证书的完整性检查:通过计算指纹码与之比对来验证完整性检测
持有者的身份检测:用自己的名称和对方在证书提供的名称是否一致(服务器用客户端的请求的名称当成公钥来加密证书,客户端能用自己的名称当成自己的私钥来解密,能解密就能确认身份)


配置:httpd工作于https配置流程:
(1)安装mod_ssl模块
(2)为服务器端生成私钥,并为提供证书 CA签发证书的,,,客户端的证书名字为自己请求的名称
(3)配置使用https的虚拟主机
(4)服务器重新装载配置。
(5)测试


实例:https配置安装过程。
(1)安装mod_ssl模块
#yum install mod_ssl -y-----安装模块
(2) 为服务端生成私钥,并为其提供证书;
# mkdir /etc/httpd/ssl && cd /etc/httpd/ssl
# (umask 077; openssl genrsa -out httpd.key 1024)
# openssl req -new -key httpd.key -out httpd.csr

签署后的证书为:/etc/httpd/ssl/httpd.crt
(3)配置使用https的虚拟主机;
# vim /etc/httpd/conf.d/ssl.conf
<VirtualHost _default_:443>----------- _default_默认服务器IP(要是想创建两个可以在添加一个IP地址)
DocumentRoot "/var/www/host1"-----------指定网站的跟目录
ServerName www.ning.com:443--------------指定服务器名称:(443端口可以不用指定因为上面VirtualHost有指定)
SSLCertificateFile /etc/httpd/ssl/httpd.crt------------指定httpd的已经签发过的证书
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key-------------指定httpd服务的私钥

(4)重新装载配置
#httpd -t --------检查下语法
#service httpd restart----------因为已经改变了监听接口,所以要重启服务
(5)测试:
window中的测试,需要把CA的证书下载到本地安装上才能正常使用
在这里我们是自建证书,所以才这样,(cacrt.pem----->本地--->并重名为cacrt.crt---->双击安装即可)

 安装证书
浏览器:https://www.ning.com

 证书颁发成功1
Linux中的测试:因为自建证书的原因,需要我们把自建证书的CA的自签证书复制过来,(#scp 172.16.3.20:/etc/pki/CA/cacert.pem /root/)
测试命令:openssl s_client
# openssl s_client -connect 172.16.3.20:443 -CAfile /root/cacert.pem
(指定连接那个服务器的IP和端口 -connect 172.16.3.20:443 ;指定刚复制过来的证书:-CAfile /root/cacert.pem)
GET /index.html HTTP/1.0
Host: www.ning.com
#openssl s_client -connect 172.16.3.20:443---如果不指定证书
Verify return code: 21 (unable to verify the first certificate)----将提示无法校验证书