首先我们说俩句https

https:http over ssl 

SSL会话的简化过程

    (1) 客户端发送可供选择的加密方式,并向服务器请求证书

    (2) 服务器端发送证书以及选定的加密方式给客户端

    (3) 客户端取得证书并进行证书验证

    如果信任给其发证书的CA

    (a) 验证证书来源的合法性;用CA的公钥解密证书上数字签名

    (b) 验证证书的内容的合法性:完整性验证

    (c) 检查证书的有效期限

    (d) 检查证书是否被吊销

    (e) 证书中拥有者的名字,与访问的目标主机要一致

    (4) 客户端生成临时会话密钥(对称密钥),并使用服务器端的公钥加密

    此数据发送给服务器,完成密钥交换

    (5) 服务用此密钥加密用户请求的资源,响应给客户端

     注意:SSL是基于IP地址实现,单IP的主机仅可以使用一个https虚拟主机

CA: 107 centos7  web服务器:106 centos6,客户端:centos5


  1. 服务器操作centos7

1CA

(umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem  2048 )

openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem  -days 3000

touch /etc/pki/CA/index.txt

echo 00 > /etc/pki/CA/serial

 

      2.Centos6操作: client 申请证书

创建一个目录专门放证书:mkdir /etc/httpd/conf.d/ssl/

(umask 066;openssl genrsa -out /etc/httpd/conf.d/ssl/httpd.key  2048 )

openssl req -new  -key  /etc/httpd/conf.d/ssl/httpd.key  -out  /etc/httpd/conf.d/ssl/httpd.csr

scp /etc/httpd/conf.d/ssl/httpd.csr  192.168.37.107:/etc/pki/CA/

 

     3. 颁发证书 centos7操作

openssl ca -in  /etc/pki/CA/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 300

然后就会发现证书文件已经存在

现在可以把证书拷给客户端了:

    scp certs/httpd.crt  192.168.37.106:/etc/httpd/conf.d/ssl/   

    scp cacert.pem  192.168.37.106:/etc/httpd/conf.d/ssl/

 

 

补充:CA也是可以修改配置文件的

https的实现_第1张图片

centos6里确认证书已经存在:cd /etc/httpd/conf.d/ssl

https的实现_第2张图片

                4. 现在可以在配置http的服务了

安装包:yum -y install mod_ssl

修改配置文件:/etc/httpd/conf.d/ssl.conf

修改路径:

SSLCertificateKeyFile /etc/httpd/conf.d/ssl/httpd.key

SSLCertificateFile /etc/httpd/conf.d/ssl/httpd.crt

SSLCACertificateFile /etc/httpd/conf.d/ssl/cacert.pem(上级CA的路径)

重新加载服务:servicehttpd reload

现在就可以访问了:在客户端

8153a50b10efa8608492927a95da962f.png

现在依然不信任我们自己搭建的CAso 我们可以自己把它导进去:

https的实现_第3张图片

https的实现_第4张图片

https的实现_第5张图片

https的实现_第6张图片

 

hosts文件中添加一个域名解析(windowshosts

084f8a780d155533939b578e66709061.png

 

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

1.curl--cacert cacert.pem https://www.magedu.com/

2.openssl s_client -connect www.magedu.com:443   -CAfile /etc/pki/CA/cacert.pem

然后输入:

4e7b7ec76996c276fc3983d85b151c80.png-wh_

 

https的实现_第7张图片

 

 

http重定向https

v http请求转发至httpsURL

v 重定向

Redirect [status] URL-path URL

v status状态:

ü Permanent:Returns a permanent redirect status

(301) indicating that the resource has moved

permanently

ü Temp:Returns a temporary redirect status (302).

This is the default

v 示例:

Redirect temp / https://www.magedu.com/

 

RewriteEngine on重写引擎

 

位置:/etc/httpd/conf.d/httpd.conf

https的实现_第8张图片

然后重载。

位置:/etc/hosts

7d51a20d5e90dfef73f26d6d0b7c8ff8.png

测试:

https的实现_第9张图片

 

第二种方法:

位置:

https的实现_第10张图片

然后重载:service httpd reload

位置:/etc/hosts

80bd80e0f5a8c823cab8c84f006e0f49.png

测试:

https的实现_第11张图片