1、演示环境:
192.168.1.145:CentOS 6.9 x86_64,Apache服务器
192.168.1.146:CentOS 7.4 x86_64,私建的CA服务器
备注:Apache和CA可以位于同一台服务器
2、192.168.1.145安装httpd服务,并启动:
# yum -y install httpd --> 版本:httpd-2.2.15
# cd /etc/httpd/conf
# cp httpd.conf httpd.conf.bak
# vim httpd.conf --> ServerName localhost:80
# service httpd start
# ss -tnl | grep :80
3、创建虚拟主机页面存放目录及测试页:
# mkdir -pv /web/vhosts/htdocs
# cd /web/vhosts/htdocs
# vim index.html --> <h3>Index Page</h3>
# vim test.html --> <h3>Test Page</h3>
4、创建基于主机名的虚拟主机:
# vim /etc/httpd/conf/httpd.conf,末尾新增如下代码:
650) this.width=650;" src="https://s4.51cto.com/wyfs02/M01/A7/36/wKioL1njbxqx4ZEWAAB14lAK6R8906.jpg" title="1.jpg" width="400" height="191" border="0" hspace="0" vspace="0" style="width:400px;height:191px;" alt="wKioL1njbxqx4ZEWAAB14lAK6R8906.jpg" />
# service httpd reload
5、以管理员权限运行notepad,修改本地Windows 10的C:\Windows\System32\drivers\etc\hosts文件,末尾新增代码:192.168.1.145 web.vhosts.com,保存修改后访问测试页
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M00/08/85/wKiom1njcgbQczf8AAA8Qs7QNHI251.jpg" style="width:260px;height:100px;" title="2.jpg" width="260" height="100" border="0" hspace="0" vspace="0" alt="wKiom1njcgbQczf8AAA8Qs7QNHI251.jpg" />
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M02/08/85/wKiom1njcgahXzWzAABIa7CiyJ0745.jpg" style="width:300px;height:92px;" title="3.jpg" width="300" height="92" border="0" hspace="0" vspace="0" alt="wKiom1njcgahXzWzAABIa7CiyJ0745.jpg" />
650) this.width=650;" src="https://s5.51cto.com/wyfs02/M02/A7/36/wKioL1njb1DwEzcrAAAsla8Kmg0931.jpg" style="width:550px;height:31px;" title="4.jpg" width="550" height="31" border="0" hspace="0" vspace="0" alt="wKioL1njb1DwEzcrAAAsla8Kmg0931.jpg" />
6、192.168.1.146创建私有CA:
(1)安装相关软件包:# yum -y install openssl openssh-clients
备注:OpenSSL的配置文件是/etc/pki/tls/openssl.cnf,此处无需修改,使用默认配置即可
(2)创建保存证书信息的数据库文件:# touch /etc/pki/CA/index.txt
(3)创建保存证书序列号的文件:# echo 01 > /etc/pki/CA/serial
(4)生成私钥cakey.pem:# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M02/A7/36/wKioL1njcjji3NdXAABKghT0ahc572.jpg" title="5.jpg" width="670" height="79" border="0" hspace="0" vspace="0" style="width:670px;height:79px;" alt="wKioL1njcjji3NdXAABKghT0ahc572.jpg" />
备注:genrsa子命令常用选项
genrsa:用于生成RSA密钥对的OpenSSL子命令
-out cakey.pem:私钥保存位置
2048:密钥长度,也可以使用1024或4096
更多genrsa子命令选项可查看:# man genrsa
(5)生成CA证书cacert.pem:
# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem
650) this.width=650;" src="https://s4.51cto.com/wyfs02/M00/A7/36/wKioL1njcoCDXPHOAAE8r6iqNQY027.jpg" title="6.jpg" width="950" height="251" border="0" hspace="0" vspace="0" style="width:950px;height:251px;" alt="wKioL1njcoCDXPHOAAE8r6iqNQY027.jpg" />
其中ca.keyso.com为证书颁发者
备注:req子命令常用选项
req:用于证书签署请求和证书生成的OpenSSL子命令
-new:生成新证书签署请求
-x509:专用于CA生成自签证书
-key cakey.pem:生成CA证书请求时用到的私钥
-days 7300:证书的有效期限为20年
-out cacert.pem:证书的保存路径
更多req子命令选项可查看:# man req
7、192.168.1.145生成证书签署请求文件并发送至192.168.1.146:
(1)安装相关软件包:# yum -y install openssh-clients
(2)创建用于存放密钥的目录:# mkdir -pv /etc/httpd/ssl
(3)生成私钥web-vhosts-com.key:# (umask 077; openssl genrsa -out /etc/httpd/ssl/web-vhosts-com.key 2048)
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M01/A7/36/wKioL1njctuTFjrMAABcyC-ouMs808.jpg" title="7.jpg" width="700" height="78" border="0" hspace="0" vspace="0" style="width:700px;height:78px;" alt="wKioL1njctuTFjrMAABcyC-ouMs808.jpg" />(4)生成证书签署请求文件web-vhosts-com.csr:
# openssl req -new -key /etc/httpd/ssl/web-vhosts-com.key -days 7300 -out /etc/httpd/ssl/web-vhosts-com.csr
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M02/A7/36/wKioL1njcvqj0svHAAGBpWE7F6I332.jpg" title="8.jpg" width="850" height="276" border="0" hspace="0" vspace="0" style="width:850px;height:276px;" alt="wKioL1njcvqj0svHAAGBpWE7F6I332.jpg" />其中web.vhosts.com为证书颁发的对象
(5)将证书签署请求文件web-vhosts-com.csr发送至192.168.1.146:
# scp /etc/httpd/ssl/web-vhosts-com.csr root@192.168.1.146:/etc/pki/CA/certs
8、192.168.1.146签署证书并发还给192.168.1.145:
(1)签署证书:
# openssl ca -in /etc/pki/CA/certs/web-vhosts-com.csr -days 7300 -out /etc/pki/CA/certs/web-vhosts-com.crt
650) this.width=650;" src="https://s5.51cto.com/wyfs02/M00/A7/36/wKioL1njc3fj7FZxAAG31xwyAxw568.jpg" title="9.jpg" width="850" height="459" border="0" hspace="0" vspace="0" style="width:850px;height:459px;" alt="wKioL1njc3fj7FZxAAG31xwyAxw568.jpg" />备注:ca子命令常用选项
ca:用于签署证书请求的OpenSSL子命令
-in web-vhosts-com.csr:证书签署请求文件路径
-days 7300:证书的有效期限为20年
-out web-vhosts-com.crt:证书的保存路径
更多ca子命令选项可查看:# man ca
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M01/A7/36/wKioL1njc6Hw7EeHAAB1gURMx9o621.jpg" title="10.jpg" width="700" height="123" border="0" hspace="0" vspace="0" style="width:700px;height:123px;" alt="wKioL1njc6Hw7EeHAAB1gURMx9o621.jpg" />(2)将证书web-vhosts-com.crt发还给192.168.1.145:
# scp /etc/pki/CA/certs/web-vhosts-com.crt root@192.168.1.145:/etc/httpd/ssl
(3)192.168.1.145查看证书信息:
650) this.width=650;" src="https://s3.51cto.com/wyfs02/M00/08/85/wKiom1njdq3COddKAABQHzTrc30329.jpg" title="11.jpg" width="400" height="67" border="0" hspace="0" vspace="0" style="width:400px;height:67px;" alt="wKiom1njdq3COddKAABQHzTrc30329.jpg" />
# openssl x509 -in /etc/httpd/ssl/web-vhosts-com.crt -noout -text //显示的信息多
# openssl x509 -in /etc/httpd/ssl/web-vhosts-com.crt -noout -subject
# openssl x509 -in /etc/httpd/ssl/web-vhosts-com.crt -noout -serial
650) this.width=650;" src="https://s3.51cto.com/wyfs02/M02/A7/36/wKioL1njdBjyypoyAAByhZLXsQI663.jpg" title="12.jpg" width="700" height="76" border="0" hspace="0" vspace="0" style="width:700px;height:76px;" alt="wKioL1njdBjyypoyAAByhZLXsQI663.jpg" />
备注:
使用私钥web-vhosts-com.key和证书web-vhosts-com.crt生成微软专用证书web-vhosts-com.crt.pfx:
# cd /etc/httpd/ssl
# openssl pkcs12 -export -out web-vhosts-com.pfx -inkey web-vhosts-com.key -clcerts -in web-vhosts-com.crt
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M01/08/85/wKiom1njdwGy1TkiAACZIhMiW3M288.jpg" title="13.jpg" width="850" height="97" border="0" hspace="0" vspace="0" style="width:850px;height:97px;" alt="wKiom1njdwGy1TkiAACZIhMiW3M288.jpg" />
使用微软专用证书web-vhosts-com.pfx生成私钥web-vhosts-com.key和证书web-vhosts-com.crt:
# openssl pkcs12 -in web-vhosts-com.pfx -nodes -out web-vhosts-com.pem
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M00/08/85/wKiom1njdzriVZvIAABFDUtCOW8385.jpg" title="14.jpg" width="700" height="48" border="0" hspace="0" vspace="0" style="width:700px;height:48px;" alt="wKiom1njdzriVZvIAABFDUtCOW8385.jpg" />
# openssl rsa -in web-vhosts-com.pem -out web-vhosts-com.key
650) this.width=650;" src="https://s4.51cto.com/wyfs02/M02/A7/36/wKioL1njdJKyf9YxAAAnJTfa450526.jpg" title="15.jpg" width="600" height="31" border="0" hspace="0" vspace="0" style="width:600px;height:31px;" alt="wKioL1njdJKyf9YxAAAnJTfa450526.jpg" />
# openssl x509 -in web-vhosts-com.pem -out web-vhosts-com.crt
9、192.168.1.145配置Apache支持SSL:
(1)安装SSL模块:# yum -y install mod_ssl
备注:yum方式安装的Apache默认没有装载SSL模块,即没有/etc/httpd/conf.d/ssl.conf配置文件,也没有/usr/lib64/httpd/modules/mod_ssl.so模块文件
650) this.width=650;" src="https://s4.51cto.com/wyfs02/M00/A7/36/wKioL1njdOjS0jJXAAAcGz2DJXY213.jpg" title="16.jpg" width="250" height="42" border="0" hspace="0" vspace="0" style="width:250px;height:42px;" alt="wKioL1njdOjS0jJXAAAcGz2DJXY213.jpg" />
(2)配置HTTPS虚拟主机并访问测试页:
# vim /etc/httpd/conf/httpd.conf,末尾新增如下代码:
650) this.width=650;" src="https://s3.51cto.com/wyfs02/M02/08/85/wKiom1njd7vA-HjOAACqEErtnqI112.jpg" title="17.jpg" width="420" height="190" border="0" hspace="0" vspace="0" style="width:420px;height:190px;" alt="wKiom1njd7vA-HjOAACqEErtnqI112.jpg" />
备注:上述内容也可在配置文件/etc/httpd/conf.d/ssl.conf中直接修改
# httpd -t
# service httpd reload
# ss -tnl | grep :443
650) this.width=650;" src="https://s5.51cto.com/wyfs02/M00/A7/36/wKioL1njdUXRrBzQAAGcOLeTBfc111.jpg" style="width:800px;height:423px;" title="18.jpg" width="800" height="423" border="0" hspace="0" vspace="0" alt="wKioL1njdUXRrBzQAAGcOLeTBfc111.jpg" />
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M02/08/85/wKiom1njd_uBUP77AAIlkFh78WI634.jpg" style="width:800px;height:423px;" title="19.jpg" width="800" height="423" border="0" hspace="0" vspace="0" alt="wKiom1njd_uBUP77AAIlkFh78WI634.jpg" />
650) this.width=650;" src="https://s5.51cto.com/wyfs02/M00/08/85/wKiom1njd_zRXCBQAABREPyuv4E310.jpg" style="width:380px;height:103px;" title="20.jpg" width="380" height="103" border="0" hspace="0" vspace="0" alt="wKiom1njd_zRXCBQAABREPyuv4E310.jpg" />
650) this.width=650;" src="https://s5.51cto.com/wyfs02/M01/A7/36/wKioL1njdUbyTkaTAABafKr1lXk369.jpg" style="width:380px;height:89px;" title="21.jpg" width="380" height="89" border="0" hspace="0" vspace="0" alt="wKioL1njdUbyTkaTAABafKr1lXk369.jpg" />
650) this.width=650;" src="https://s5.51cto.com/wyfs02/M02/A7/36/wKioL1njdUbQiPPuAABSWBce0UQ404.jpg" style="width:500px;height:57px;" title="22.jpg" width="500" height="57" border="0" hspace="0" vspace="0" alt="wKioL1njdUbQiPPuAABSWBce0UQ404.jpg" />
(3)将所有HTTP请求(80端口)重定向到HTTPS(443端口),并访问测试页:
# vim /etc/httpd/conf/httpd.conf,在<VirtualHost*:80>和</VirtualHost>标签中新增如下代码:
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M01/A7/36/wKioL1njdfPz5-plAADBmqWPzaw323.jpg" title="23.jpg" width="480" height="246" border="0" hspace="0" vspace="0" style="width:480px;height:246px;" alt="wKioL1njdfPz5-plAADBmqWPzaw323.jpg" />
# httpd -t
# service httpd reload
直接访问web.vhosts.com,会自动跳转至https://web.vhosts.com
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M01/A7/36/wKioL1njdhfT85OhAABREPyuv4E933.jpg" title="24.jpg" width="380" height="103" border="0" hspace="0" vspace="0" style="width:380px;height:103px;" alt="wKioL1njdhfT85OhAABREPyuv4E933.jpg" />
直接访问web.vhosts.com/test.html,会自动跳转至https://web.vhosts.com/test.html
650) this.width=650;" src="https://s5.51cto.com/wyfs02/M00/08/85/wKiom1njeNnxjbyCAABafKr1lXk077.jpg" title="25.jpg" width="380" height="89" border="0" hspace="0" vspace="0" style="width:380px;height:89px;" alt="wKiom1njeNnxjbyCAABafKr1lXk077.jpg" />
/etc/httpd/conf/httpd.conf最终末尾一共新增了如下代码:
650) this.width=650;" src="https://s4.51cto.com/wyfs02/M01/08/85/wKiom1njePey5FHAAAFZdCIh_k8089.jpg" title="26.jpg" width="420" height="400" border="0" hspace="0" vspace="0" style="width:420px;height:400px;" alt="wKiom1njePey5FHAAAFZdCIh_k8089.jpg" />
10、在360安全浏览器中安装证书:
(1)360安全浏览器中访问效果:
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M02/08/85/wKiom1njeSWgCbvfAABORoSDSjM231.jpg" title="27.jpg" width="400" height="82" border="0" hspace="0" vspace="0" style="width:400px;height:82px;" alt="wKiom1njeSWgCbvfAABORoSDSjM231.jpg" />
(2)将192.168.1.146中的证书/etc/pki/CA/cacert.pem保存至本地Windows10桌面,并重命名为cacert.crt
(3)在360安全浏览器中安装证书:设置 --> 安全设置 --> 管理HTTPS/SSL证书
650) this.width=650;" src="https://s3.51cto.com/wyfs02/M01/08/85/wKiom1njeVbTIMamAAED2eBqA9M204.jpg" style="width:500px;height:459px;" title="28.jpg" width="500" height="459" border="0" hspace="0" vspace="0" alt="wKiom1njeVbTIMamAAED2eBqA9M204.jpg" />
650) this.width=650;" src="https://s5.51cto.com/wyfs02/M01/A7/36/wKioL1njdqCw16WgAADr3MwgU7I722.jpg" style="width:500px;height:467px;" title="29.jpg" width="500" height="467" border="0" hspace="0" vspace="0" alt="wKioL1njdqCw16WgAADr3MwgU7I722.jpg" />
650) this.width=650;" src="https://s5.51cto.com/wyfs02/M00/08/85/wKiom1njeVawfz-eAAD8HdEADI0046.jpg" style="width:500px;height:472px;" title="30.jpg" width="500" height="472" border="0" hspace="0" vspace="0" alt="wKiom1njeVawfz-eAAD8HdEADI0046.jpg" />
650) this.width=650;" src="https://s3.51cto.com/wyfs02/M02/A7/36/wKioL1njdqGR1ZalAADwo1dTZqo055.jpg" style="width:500px;height:472px;" title="31.jpg" width="500" height="472" border="0" hspace="0" vspace="0" alt="wKioL1njdqGR1ZalAADwo1dTZqo055.jpg" />
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M01/08/85/wKiom1njeVeyMxUtAADS0YshhD0461.jpg" style="width:500px;height:472px;" title="32.jpg" width="500" height="472" border="0" hspace="0" vspace="0" alt="wKiom1njeVeyMxUtAADS0YshhD0461.jpg" />
650) this.width=650;" src="https://s3.51cto.com/wyfs02/M00/A7/36/wKioL1njdqGjOKeTAAEoP7yX4qk494.jpg" style="width:400px;height:294px;" title="33.jpg" width="400" height="294" border="0" hspace="0" vspace="0" alt="wKioL1njdqGjOKeTAAEoP7yX4qk494.jpg" />
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M02/08/85/wKiom1njeVeCzgG4AAAikraqrj8132.jpg" style="width:140px;height:139px;" title="34.jpg" width="140" height="139" border="0" hspace="0" vspace="0" alt="wKiom1njeVeCzgG4AAAikraqrj8132.jpg" />
650) this.width=650;" src="https://s3.51cto.com/wyfs02/M00/A7/36/wKioL1njdqLCQnM8AAJ60eCHDX0418.jpg" style="width:500px;height:459px;" title="35.jpg" width="500" height="459" border="0" hspace="0" vspace="0" alt="wKioL1njdqLCQnM8AAJ60eCHDX0418.jpg" />
(4)重新打开360安全浏览器,再次访问测试页:
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M02/08/85/wKiom1njee7heVsuAABHCaZuZVg808.jpg" style="width:400px;height:82px;" title="36.jpg" width="400" height="82" border="0" hspace="0" vspace="0" alt="wKiom1njee7heVsuAABHCaZuZVg808.jpg" />
650) this.width=650;" src="https://s4.51cto.com/wyfs02/M02/A7/36/wKioL1njdzjSm0-zAABSe_VfFN0464.jpg" style="width:400px;height:73px;" title="37.jpg" width="400" height="73" border="0" hspace="0" vspace="0" alt="wKioL1njdzjSm0-zAABSe_VfFN0464.jpg" />
已没有“证书风险”的提示
(5)查看证书信息:
650) this.width=650;" src="https://s5.51cto.com/wyfs02/M00/A7/36/wKioL1njd6KjSyTmAADXIUwNBOE760.jpg" style="width:500px;height:263px;" title="38.jpg" width="500" height="263" border="0" hspace="0" vspace="0" alt="wKioL1njd6KjSyTmAADXIUwNBOE760.jpg" />
650) this.width=650;" src="https://s5.51cto.com/wyfs02/M02/08/86/wKiom1njelnwMtOcAAEAkGEoCas075.jpg" style="width:400px;height:500px;" title="39.jpg" width="400" height="500" border="0" hspace="0" vspace="0" alt="wKiom1njelnwMtOcAAEAkGEoCas075.jpg" />
备注:如果是生产环境中需要使用证书,建议从正规的证书颁发机构处申请。
本文出自 “天道酬勤” 博客,请务必保留此出处http://qiuyue.blog.51cto.com/1246073/1972572
配置Apache支持HTTPS
原文地址:http://qiuyue.blog.51cto.com/1246073/1972572