苦等了十几天后个人网站的域名备案终于尘埃落定,当我满心欢喜地把我的网址键入浏览器,却忽然意识到开头的协议是http,而不是https。

差个s能差多少呢?
简单来说就是https比http 安全。
复杂说的话,以后慢慢深入了解下再探讨,今天的重点是,
个人网站如何安装ssl实现https?

第一步,购买ssl证书(白嫖)

由于我的服务器是在阿里云上,所以我的ssl证书也是在阿里云上获得的。
ssl证书分为单域名证书与泛域名(通配符)证书。
泛域名(通配符域名)证书:可保护一个域名以及该域名所有下一级域名,不限制下级域名数量。
例如你给一个顶级域名xxx.com安装了泛域名证书,那么www.xxx.com、bbs.xxx.com、news.xxx.com等等各种各样的下级域名,都受保护。
单域名证书:单纯保护一个下级域名,比如你给xxx.com安装了单域名证书,那么证书只能保护www.xxx.com,和xxx.com。
通常个人网站只需要安装单域名证书就行了,我在阿里云白嫖的就是DigiCert 免费版 SSL。

第二步,安装ssl证书

阿里云申请ssl证书并不复杂,几分钟就能搞定。安装证书也不难,就稍微麻烦那么一点。
下载证书并解压得到三个证书文件,把他们放到/etc/httpd/cert/## 下(需要新建目录cert)。
安装证书之前,Apache需要安装mod_ssl.so模块
执行命令:

安装完后目录/etc/httpd/conf.d下会出现一个ssl.conf
也就是a安装ssl过程中的主角,对它做如下配置:

Listen 443 https          //监听443端口 
LoadModule ssl_module modules/mod_ssl.so  
// DocumentRoot  "/var/www/html"           //网站目录 
ServerName www.liuyan.wang:443           //网址443端口
SSLEngine on SSLProtocol all -SSLv2 -SSLv3       //去掉不安全协议协议 
SSLCipherSuite ECDHE-RSA-AES128GCMSHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE     //Apache首选加密套件 
SSLCertificateFile /etc/httpd/cert/5317286_www.liuyan.wang_public.crt         //证书路径
SSLCertificateKeyFile /etc/httpd/cert/5317286_www.liuyan.wang.key       //证书路径
SSLCertificateChainFile /etc/httpd/cert/5317286_www.liuyan.wang_chain.crt      //证书路径

做完这一步你的网站就能够https访问了,但是输入www.xxx.com或者xxx.com的时候,网址自动跳转http而不是https, 要安全访问的话需要手动添加https,所以需要进一步配置

第三步,强制https

在网站根目录下新建文件 .htaccess,写入如下内容

RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

然后配置httpd.conf文件,找到 <Directory "/var/www/html">区域,做如下配置:

<Directory "/var/www/html">        //查找这里,你的网站根目录
AllowOverride All                              //修改这里,配置文件里有好几处,留意上下文不要改错地方
Require all granted
</Directory>

保存退出,重启httpd,会发现输入网址自动跳转https链接,你的网站安全了!

enjoy your lock!
PS:如果你的网站安装ssl之前有http的资源,比如图片图标等等,那么浏览器还是会提示不安全链接,
建议右键审查元素查看不安全链接一一替换,如果数量庞大,可以使用数据库的SQL语句。

最后修改:2021 年 11 月 11 日
如果觉得我的文章对你有用,请随意赞赏