给网站添加HTTPS安全访问

By | August 31, 2016

1.在sslforfree.com 网站首页创建免费的SSL证书,这里同时创建具有两个域名的网站的证书,也就是一个证书同时服务两个域名:

2.1

3.2

4.3

5.4

6.5

7.之后需要在该网站用邮箱注册个账号,以方便日后管理证书的签发。

8.把下载到的zip上传到服务器

9.解压得到crt、certificate.crt、private.key三个文件,然后将这三个文件放在apache能够访问到的位置,这里放在/var/ssl/****_crt/ 目录下。

10.点击图5的“this guide”访问“How to install SSL certificates”主题网页,按步骤安装证书

打开上述网页,我用的是Apache,因而选择第四项:

 

6

11.这里可以跳过网页所描述的前两步,从第三步之后开始

12.下面要用到openssl和httpd的mod_ssl模块,故需要安装mod_ssl,安装时会连同安装openssl,安装完成在httpd/conf.d目录会多出一个conf文件(CentOS下):

13.编辑/httpd/conf.d/ssl.conf文件:

全局范围添加ServerName:

7

在<VirtualHost default:443>与</VirtualHost>之间编辑以下内容:

添加:

1)DocumentRoot "/var/www/****.com/htdocs"

2)ServerName ****.com

修改:

3)ErrorLog /var/www/****.com/logs/ssl_error_log

4)TransferLog /var/www/****.com/logs/ssl_access_log

5)SSLCertificateFile "/var/ssl/****_crt/certificate.crt"

6)SSLCertificateKeyFile "/var/ssl/****_crt/private.key"

7)SSLCACertificateFile "/var/ssl/****_crt/ca_bundle.crt"

8)CustomLog /var/www/****.com/logs/ssl_request_log \
9)在CustomLog指令下面添加:

将****.com的VirtualHost复制粘贴一份以供配置www.****.com,将粘贴出来的ServerName的值修改为www.****.com

于此,ssl.conf文件修改完成

14.将443端口和Ip 123.45.67.89(在第一步可查看)添加进系统防火墙的允许通过列表,在CentOS是:

  • # firewall-cmd –-zone=public –-add-port=443/tcp –-permanent
  • # firewall-cmd –-zone=public –-add-source= 123.45.67.89/32 –-permanent
  • # firewall-cmd -–reload

重启httpd进程:

  • # systemctl restart httpd

此时可以各自通过http和https协议正常访问****.com和www.****.com两个域名,这种情况下出现的问题是在使用http时不能自动转到https,当前的需求是访问http时转到https,解决办法可以是在网站根目录创建.htaccess文件(仅当.htaccess不存在的情况下,如果已经存在则修改即可),然后编辑.htaccess文件前面添加如下内容:

 

(这里需要注意的是必须确保通过HTTP访问80端口的虚拟主机配置中启用URL重写,改完后记得重启httpd!!)

  • 至此,终于配置好SSL,可以在浏览器中访问了。
  • 还有,要记得3个月后更换新的SSL证书

参考:

https://www.sslshopper.com/apache-redirect-http-to-https.html

https://httpd.apache.org/docs/2.4/rewrite/avoid.html

https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#rewriterule


© 2016 – 2018, Navin. All rights reserved.

鉴于本人的相关知识储备以及能力有限,本博客的观点或者描述如有错漏或是有考虑不周到的地方还请多多包涵,也欢迎指正,一起学习,共同进步。