阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

网站如何实现https访问

246次阅读
没有评论

共计 3265 个字符,预计需要花费 9 分钟才能阅读完成。

实现 https

环境

1. 三台主机分别为 A,B,C。
2.A 主机设置为 CA 和 DNS 服务器,ip 为 192.168.213.129
3.B 主机为 client,ip 为 192.168.213.253
4.C 主机为 httpd server,ip 为 192.168.213.128
5. 已经在三台主机上启动了 httpd 服务,并且可以正常访问自己的网页。

1. 在 A 主机上创建 CA 和 DNS 服务器

1)创建所需要的文件
    生成证书索引数据库文件:touch /etc/pki/CA/index.txt  
            系统会自动生成个 index.txt.attr 文件。用来决定是否使证书为唯一性,也就是是否可以重复申请证书。指定第一个颁发证书的序列号:echo 01 > /etc/pki/CA/serial 

2)CA 自签证书
    生成私钥:cd /etc/pki/CA/
        openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048
        chmod 600 cakey.pem
    生成自签名证书:openssl req -new -x509 –key /etc/pki/CA/private/cakey.pem -days 7300 -out  /etc/pki/CA/cacert.pem

3)创建 DNS 服务器
    1》vim  /etc/named.conf
        options {listen-on port 53 {any ; };
        //   listen-on-v6 port 53 {::1; };
            directory   "/var/named";
            dump-file   "/var/named/data/cache_dump.db";
                statistics-file "/var/named/data/named_stats.txt";
                memstatistics-file "/var/named/data/named_mem_stats.txt";
                   allow-query     {any ; };
            recursion yes;
            dnssec-enable no;
            dnssec-validation no;
            dnssec-lookaside no;2》关闭防火墙和设置 selinux 为 permissive
        iptables -F
        setenforce 0
        
    3》创建解析
        1>vim /etc/named.rfc1912.zones
            zone "ab.com" IN {type master;
                file "ab.com.zone";
            };
        2>named-checkconf
        3>cd  /var/named/
        4>cp -a named.localhost ab.com.zone
        5>vim   ab.com.zone
            $TTL D
            @   IN SOA  dns  admin.ab.com. (3   ; serial
                                D  ; refresh
                                H  ; retry
                                W  ; expire
                                H )    ; minimum
                NS  dns
            dns A   192.168.213.128
            websrv  A     192.168.213.128
            mail    A     192.168.213.128
            www   CNAME  websrv
        6>named-checkzone ab.com /var/named/ab.com.zone
        7> 重新加载
            rndc reload
            service named reload or systemctl reload  named
            不行的话清除服务缓存,再来一遍
            rndc flush
            最有效的方式是重启服务(正常工作中尽量别这么用,怕影响其他的同步)service named restart or systemctl restart named
        8>rndc status

2. 在 C 主机

1)指向 DNS 服务器
    vim /etc/resolv.conf
        nameserver 192.168.213.129
    测试:
        dig -t A www.ab.com 

2)向 CA 申请证书
    1》生成证书请求
        生成私钥:(umask 066; openssl genrsa -out /etc/pki/tls/private/http.key 2048)
        生成证书申请文件:openssl req -new -key /etc/pki/tls/private/http.key  -days 365 -out /etc/pki/tls/http.csr
    2》将证书请求文件传输给 CA
        scp /etc/pki/tls/http.csr root@192.168.213.129:

3. 在 A 主机

1)CA 签署证书:openssl ca -in /tmp/http.csr –out  /etc/pki/CA/certs/http.crt -days 365
     注意:默认国家,省,公司名称三项必须和 CA 一致,但可以修改 /etc/pki/tls/openssl.cnf
        common name 要使用此主机在通信真实使用的名字
        
2)CA 证书和 CA 签署的证书发送给 C 主机,然后在 C 主机上进行配置。scp /etc/pki/CA/certs/http.crt root@192.168.213.128:
    scp /etc/pki/CA/private/cakey.pem root@192.168.213.128:

4. 在 C 主机

1)od_ssl 模块
    yum -y install mod_ssl
2)d_ssl 进行配置,配置文集为 ssl.conf
    vim /etc/httpd/conf.d/ssl.conf
        DocumentRoot "/var/www/html"
        SSLCertificateFile /etc/pki/tls/certs/httpd.crt
        SSLCertificateKeyFile /etc/pki/tls/private/httpd.key
        SSLCACertificateFile /etc/pki/CA/cacert.pem
    注:注意文件的路径,你放在那里就写成什么路径。3)重启服务,并进行测试
    service httpd  restart or systemctl restart httpd
    curl  --cacert  /path to/cacert.pem   https://www.ab.com

5. 在 B 主机

1》vim /etc/resolv.conf
    nameserver 192.168.213.128     (尽量就填写一个)
2》测试
    curl www.ab.com
3)CA 证书导入
    1》A 证书从 A 主机上拷贝过来
        scp root@192.168.213.129:/etc/pki/CA/cacert.pem /root/
    2》测试
        curl --cacert /root/cacert.pem https://www.ab.com

当在 B 主机上测试成功时,这个 https 就大致实现了。不过呢,一般都设置个强制跳转,也就是 http 直接跳到 https 上。

6.http 重定向 https(强制跳转)

 在 C 主机上
    vim /etc/httpd/conf/httpd.conf
        Redirect  temp|permanent   /    https://www.ab.com
        注:temp 为临时跳转代号 302,permanent 为永久跳转代号 301,二者二选一。service httpd restart or systemctl restart httpd

实际上,在实际运行中不是用上面的方法来把 http 重定向为 https 的,而是采用 HSTS。HSTS 使 http 调整到 https 的过程中没有网络过程,减少请求次数,节约了网络资源,所以应用更为广泛。

7.HSTS 实现 http 重定向 https

 在 C 主机上 
    vim /etc/httpd/conf/httpd.conf
        Header always set Strict-Transport-Security "max-age=15768000"
        RewriteEngine on
        RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
    service httpd restart or systemctl restart httpd

到此为止,上述就是整个实现 https 的过程,若有什么地方错误,欢迎广大朋友指出!

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-11/148568.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3265字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中