文档说明:

1.演示环境操作系统CentOS 6虚拟机环境,IP=172.16.249.209

     安装httpd服务版本:httpd-2.2.rpm

2.CAhttps签证、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: v3tls: 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

https服务器(CentOS 6)搭建&测试_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模块,且定义监听端口

https服务器(CentOS 6)搭建&测试_https_02

       2)<VirtualHost _default_:443>定义默认虚拟主机,当根据FQDN请求有多个站点的主机,均未找到时候会返回默认主机定义的页面。

https服务器(CentOS 6)搭建&测试_CA_03

 

 

  4. 测试基于https访问相应的主机;

        # openssls_client [-connect host:port] [-cert filename] [-CApath directory] [-CAfilefilename]

                        openssl s_client-connect    172.16.249.209:443

https服务器(CentOS 6)搭建&测试_CA_04

 

 

 

三、浏览器测试

1.访问https://172.16.249.209:443

   (1)此时会报错因为CA为信任的证书不发机构,所以需要导入CA的证书

https服务器(CentOS 6)搭建&测试_https_05

   (2)网站本身通信已经经过了SSL加密

https服务器(CentOS 6)搭建&测试_https_06

 

2.让浏览器信任CA所颁发的证书

   (1)复制CA的证书/etc/pki/CA/cacert.pem到本地,将其改为.crt格式

   (2)具体的浏览器不同,注意Chorm浏览器可能本身的安全等级过高

https服务器(CentOS 6)搭建&测试_ssl_07

 

 

 

四、注意问题

1.删除测试页面/etc/httpd/conf.d/welcome.conf

2.</VirtualHost>容器内只能定义一次,位置可在/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通信