共计 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
正文完
星哥玩云-微信公众号