分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

HTTPS的实现

发布时间:2023-09-06 01:15责任编辑:郭大石关键词:暂无标签

WEB服务是互联网最常见的服务类型,随着技术的发展,安全是对用户来说头等大事,下面实验简单的还原了一下现在互联网最流行HTTPS的实现。

实验目的:

  1. 实现域名访问网页(DNS解析);

  2. HTTPS的实现(私建CA,实现自签和证书颁发);

  3. 实现HTTP重定向HTTPS,HSTS;

实验准备:

前提:所有主机关闭防火墙和SELINUX。

  1. HTTP SERVER:192.168.32.9,centos6.9;

  2. DNS SERVER:192.168.32.111,centos7.3;

  3. CA:192.168.32.111,centos7.3;

  4. CLIENT:192.168.32.101,centos6.9;

搭建HTTP服务:

  1. 安装HTTP服务,也可以使用rpm或者自己编译安装

]#yum install httpd -y

2.启动服务,开机自启

]#service httpd start]#chkconfig httpd on

3.ss -tan查看80端口是否开启

4.添加主页文件

]#cd /var/www/html]#vim index.html/var/www/html/:wq

5.重启服务,本机测试

650) this.width=650;" src="https://s3.51cto.com/wyfs02/M02/07/B9/wKiom1nOLrSRtrsLAAAYiTOijVw436.png-wh_500x0-wm_3-wmp_4-s_635207952.png" title="QQ图片20170929192548.png" alt="wKiom1nOLrSRtrsLAAAYiTOijVw436.png-wh_50" /> 

搭建DNS服务器

  1. 安装包,启动服务并设置开机自启

]#yum install bind -y]#systemctl enable named]#systemctl start named

2.ss -tan查看53端口是否开启

3.修改主配置文件,不绑定固定端口监听

]#vim /etc/named.conf  listen-on port 53 { any; };  allow-query   { any; };

4.添加要解析的域名

]#vim /etc/named.rfc1912.zoneszone "a.com" IN {        type master;        file "a.com.zone";};

5.添加解析库文件

]#vim /var/named/a.com.zone$TTL 1D@       IN SOA  dns1   admin.xiaomage.com. (                  31      ; serial                  1D      ; refresh                  1H      ; retry                  1W      ; expire                  3H )    ; minimum            NS   dns1dns1     IN   A       92.168.32.111websrv     IN   A       192.168.32.9www     IN  CNAME      websrv注意权限]#chown named:named a.com.zone

6.重启服务后 本机测试,修改本机DNS指向搭建的DNS地址

650) this.width=650;" src="https://s4.51cto.com/wyfs02/M02/A6/6B/wKioL1nONOnwJ-eVAAAX2feJi3c358.png-wh_500x0-wm_3-wmp_4-s_2617097726.png" title="微信截图_20170929195608.png" alt="wKioL1nONOnwJ-eVAAAX2feJi3c358.png-wh_50" />

CA的搭建

1.生成私钥

]#touch /etc/pki/CA/index.txt ]#echo 01 > /etc/pki/CA/seria]#(umask066;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)

2.生成自签名证书

]#openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem]#openssl x509 -in cacert.pem -noout -text   <===以文本形式查看证书

3.web服务器申请证书

]#/etc/httpd/conf.d/ssl]#cat /etc/pki/tls/openssl.cnf   <===默认前三项必须和CA证书相同,可以进行修改。countryName             = matchstateOrProvinceName     = matchorganizationName        = matchorganizationalUnitName  = optionalcommonName              = suppliedemailAddress            = optional]#openssl req -new -key httpd.key -out httpd.csr

4. 传到CA服务器进行签名

]#/etc/pki/CA]#scp httpd.csr 192.168.32.111:/etc/pki/CA/]#openssl ca -in httpd.csr -out httpd.crt -days 360]#scp httpd.crt 192.168.32.9:/etc/httpd/conf.d/ssl/    <===传给服务器

5.安装加密模块mod_ssl

]#yum install -y mod_ssl]#rpm -ql mod_ssl/etc/httpd/conf.d/ssl.conf/usr/lib64/httpd/modules/mod_ssl.so/var/cache/mod_ssl/var/cache/mod_ssl/scache.dir/var/cache/mod_ssl/scache.pag/var/cache/mod_ssl/scache.sem

现在可以先访问看看,是不信任的。当然可以点继续浏览此网站。

650) this.width=650;" src="https://s2.51cto.com/wyfs02/M00/A6/6D/wKioL1nOULTTFTXMAABsak9Xx-g944.jpg-wh_500x0-wm_3-wmp_4-s_3211625287.jpg" title="1506693273(1).jpg" alt="wKioL1nOULTTFTXMAABsak9Xx-g944.jpg-wh_50" />650) this.width=650;" src="https://s1.51cto.com/wyfs02/M02/07/BB/wKiom1nOUWiyadGnAAAaHmHcNb4029.jpg" title="1506693354(1).jpg" alt="wKiom1nOUWiyadGnAAAaHmHcNb4029.jpg" />

6.配置mod_ssl配置文件

]#vim /etc/httpd/conf.d/ssl.conf SSLCertificateFile /etc/httpd/conf.d/ssl/httpd.crt        <===证书路径 SSLCertificateChainFile /etc/httpd/conf.d/ssl/httpd.key        <===密钥路径 SSLCACertificateFile /etc/httpd/conf.d/ssl/cacert.pem              <===CA证书

7.重启服务,可以看到443端口打开了

]#service httpd reload]#ss -tanlLISTEN      0      128                     :::80                     :::*     LISTEN      0      128                     :::443                    :::*

8.将根证书安装到受信任的根证书颁发机构中,再次打开该网站已经是受信任的HTTPS访问啦。

650) this.width=650;" src="https://s3.51cto.com/wyfs02/M00/07/BB/wKiom1nOTqTTSKReAABIujOOYXk491.jpg-wh_500x0-wm_3-wmp_4-s_574981016.jpg" title="1506692611(1).jpg" alt="wKiom1nOTqTTSKReAABIujOOYXk491.jpg-wh_50" />

现在还有一个问题,我手动输入http://www.a.com还是继续能访问,而很多网站是手动输入www.a.com就可以直接跳转到加密网站的,而且网名们上网是不会去手动输入前缀的。

650) this.width=650;" src="https://s4.51cto.com/wyfs02/M01/A6/6D/wKioL1nOU3DiVTxEAAAg6yZYVCk388.png" title="微信截图_20170929220423.png" alt="wKioL1nOU3DiVTxEAAAg6yZYVCk388.png" />

上图两个地址是区分开来,可以通过HTTP重定向到HTTPS来完成自动跳转。

HTTP重定向;

]#vim /etc/httpd/conf.d/test.conf redirect temp / https://www.a.com/
测试]#curl http://www.a.com <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><html><head><title>302 Found</title></head><body><h1>Found</h1><p>The document has moved <a href="https://www.a.com/">here</a>.</p><hr><address>Apache Server at www.a.com Port 80</address></body></html>

在实际场景中,通过http跳转https是企业跳转是比较常见的,首先CLIENT发一个HTTP请求给SERVER,SERVER返回一个响应你要访问HTTPS,然后CLIENT再次发送HTTPS的请求,SERVER返回请求数据。这样的通讯进行了四次,比较浪费资源,给服务器带增加负担。于是就产生了HSTS,原理是服务器端配置支持HSTS后,会在给浏览器返回的HTTP首部中携带HSTS字段。浏览器获取到该信息后,会将所有HTTP访问请求在内部做307跳转到HTTPS。而无需任何网络过程。

HTST实现:

]#vim /etc/httpd/conf/httpd.confHeader always set Strict-Transport-Security "max-age=15768000"RewriteEngine onRewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]

HTTPS的实现

原文地址:http://maguofu.blog.51cto.com/12431016/1970045

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved