文档说明:
1.演示环境操作系统CentOS 6虚拟机环境,IP=172.16.249.209
安装httpd服务版本:httpd-2.2.rpm
2.CA、https签证、https中的配置站点信息、ssl.conf信息需要根据实际情况配置,且配置路径信息一致
3.本篇文档为简要演示,上述具体站位置零散不做截图,配置前需了解httpd配置,不做赘述
4.相关文档
OpenSLL创建私有CA详情链接:http://xuding.blog.51cto.com/4890434/1732751
httpd-2.2配置文件定义详情链接:http://xuding.blog.51cto.com/4890434/1734376
一、https概述
1.HTTPS(Hyper TextTransfer Protocol over Secure Socket Layer)
以安全为目标的HTTP通道,简单讲是HTTP的安全版,用于安全的HTTP数据传输
HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。,加密后数据为二进制文本
表示:https://
2.端口&协议:443/tcp
HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)
ssl: v3、tls: v1
注意:SSL会话是基于IP地址创建;所以单IP的主机上,仅可以使用一个https虚拟主机;
即一个IP只能一个使用443端口,但是能多个80端口
二、搭建https服务器
1.安装http程序,配置站点
# yum install -y httpd
# vim/etc/httpd/conf/httpd.conf
2.为服务器申请数字证书;
(1)CA服务器端:创建私有证书颁发机构
~]# cd /etc/pki/CA
~]#(umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)
~]#openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out/etc/pki/CA/cacert.pem -days 3655
~]#mkdir -pv /etc/pki/CA/{certs,crl,newcerts}
~]#touch /etc/pki/CA/{serial,index.txt}
~]#echo 01 > /etc/pki/CA/serial
(2)https服务器端:发起创建证书请求
~]# mkdir /etc/httpd/ssl
~]# cd /etc/httpd/ssl
~]#(umask 077; openssl genrsa -out /etc/httpd/ssl/https.key 2048)
~]#openssl req -new -key /etc/httpd/ssl/https.key -out /etc/httpd/ssl/https.csr -days 365
(3)将https服务器的请求生成文件发送给CA进行签署操作
~]# scp … … /tmp
~]# openssl ca -in/tmp/https.csr -out /etc/pki/CA/certs/https.crt -days 365
(4)将签署后的证书返回给https服务器即可使用
~]# scp … …
3.配置httpd支持使用ssl,及使用的证书;
(1)安装并查看mod_ssl模块
[root@localhost~]# yum -y install mod_ssl
[root@localhost~]# rpm -ql mod_ssl
[root@localhost~]# httpd -M | grep ssl
(2)修改配置文件:/etc/httpd/conf.d/ssl.conf
[root@localhost ~]# vim /etc/httpd/conf.d/ssl.conf修改部分配置
DocumentRoot |
定义默认虚拟主机的文档页面 |
ServerName |
定义默认虚拟主机的服务名 |
SSLCertificateFile |
定义证书文件路径 |
SSLCertificateKeyFile |
定义私钥文件 |
注释:
1)/etc/httpd/conf.d/ssl.conf中定义启动mod_ssl.so模块,且定义监听端口
2)
4. 测试基于https访问相应的主机;
# openssls_client [-connect host:port] [-cert filename] [-CApath directory] [-CAfilefilename]
openssl s_client-connect 172.16.249.209:443
三、浏览器测试
1.访问https://172.16.249.209:443
(1)此时会报错因为CA为信任的证书不发机构,所以需要导入CA的证书
(2)网站本身通信已经经过了SSL加密
2.让浏览器信任CA所颁发的证书
(1)复制CA的证书/etc/pki/CA/cacert.pem到本地,将其改为.crt格式
(2)具体的浏览器不同,注意Chorm浏览器可能本身的安全等级过高
四、注意问题
1.删除测试页面/etc/httpd/conf.d/welcome.conf
2.在容器内只能定义一次,位置可在/etc/httpd/conf.d/ssl.conf中,或者/etc/httpd/conf.d/*自定义
一个ip只能建立一个基于虚拟主机的https
3.本机Windows的浏览器基于域名测试,需要在C:\Windows\System32\drivers\etc\host文件中定义DNS指向
4.https加密对于前端的负载均衡器压力较大
5.本次配置完成后需要指定443端口才能访问https,因为默认访问的是80端口。生产环境中若偶像访问80端口时候自动跳转到443端口,需定义URL重定向来使得访问80端口时候自动跳转到443端口
6.不导入CA,也能够建立ssl通信