2021年3月
之前一直想把自己的网站开启https, 但是不知道怎么操作,最近下定决定准备研究下。在腾讯云申请的免费的DV ssl证书,证书下下来有三个文件,分别是1_root_bundle.crt,2_brucelog.club.crt,3_brucelog.club.key, 但是看了腾讯云部署ssl的教程,里面提到的文件根本没有,又看了阿里云和华为云部署ssl的教程也是找不到提到的文件。无奈只好搜索的更详细点,终于让我找到了树莓派apache2安装ssl证书的教程:https://www.cnblogs.com/Yogile/p/12483991.html 以及 https://blog.csdn.net/zjh1229/article/details/103236810。于是我结合这两个教程,给default-ssl.conf里添加了ServerAdmin webmaster@localhost的下面添加了ServerName www.brucelog.club,SSLEngine on前面的注释去掉,SSLCertificateFile=前的注释去掉,填写2_brucelog.club.crt的路径,SSLCertificateKeyFile=前的注释去掉,写3_brucelog.club.key的路径,SSLCertificateChainFile=写1_root_bundle.crt的路径,这里的顺序我也不知道对不对,如下图:
然后开启apache2的ssl模块:sudo a2enmod ssl
开启成功后提示重启apache2:systemctl restart apache2
然后开启刚才的配置的站点:sudo a2ensite default-ssl (其实后面才知道这一步就相当于把sites-available里的default-ssl.conf软连接到sites-enabled里000-default-ssl.conf,相当于default-ssl.conf在sites-enabled目录下建了个快捷方式,如果一开始已经把sites-available里的default-ssl.conf软连接到了sites-enabled里的000-default-ssl.conf,后面就不用再启用站点了sudo a2ensite default-ssl。更改sites-enabled里的000-default-ssl.conf就相当于更改sites-available里的default-ssl.conf)
然后重启apache2:sudo systemctl restart apache2,然后frpc开启web02 ,type=https, local ip=127.0.0.1, local port=8080, custom_domains=www.brucelog.club, 最后浏览器输入https://www.brucelog.club,然而期待中的小锁被没有出现,而是显示:此网站无法提供安全链接。
后面又想是不是要用frpc的https2http插件,然后又填了local ip和域名,结果还是没成功。
搞了几天,又在github上问了frp的人,说是可以直接用https插件,但是我也没搞明白怎么弄,最后也没解决,最后在腾讯云市场花了100块找了个评价最好的ssl安装服务商:成都运维一二三。第一天运维的人也不是很懂frp,给了我一个教程让我参考:https://blog.walterlv.com/post/add-https-support-for-web-service-using-frp.html 我试了下开启了https2http,填了证书路径,让我把1_root_bundle.crt证书里的内容复制下来紧接着粘贴到2_brucelog.club.crt的内容下方,去掉1_root_bundle.crt,只保留2_brucelog.club.crt,3_brucelog.club.key,后面才知道这就是相当于1和2的crt证书合成了一个pem证书, 填完重启frpc还是不行,如下图:
最后运维的人并没有解决问题说第二天再看。我自己后来觉得是不是frpc已经加载了证书,没必要apache2再加载一次把,就又把000-default-ssl.conf里的证书路径注释掉了,结果发现不仅没有开启https,apache2反而启动不了了,后面取消注释才恢复。第二天花了五分钟运维就说ssl搞好了,然后我把博客url都改成https,发现运维将https2http插件全部注释掉,只剩frp开启web02,type=https, local ip=127.0.0.1,local port=443,这里从8080改成了443,因为apache的ports.conf里监听的https端口就是443,Custom Domian=www.brucelog.club 结果发现真的开启了https,只是必须手动输入https才行,还不能http自动跳转https。然后又发现日志里的图片都打不开,一点就显示错误。运维说要把数据库里所有链接都换成https才行,然后就直接通过phpadmin把数据库都下了下来,然后运维帮我全部换成了https链接,然后我自己通过phpmyadmin上传了改好的数据库,果然图片可以显示了,不过又发现后台无法登陆,运维说第三天再看吧。这第三天我发现网址只有加/wordpress就可以显示,运维说原来是因为我们目录多了一层, 就帮我们把var/www/html/wordpress里的文件全部直接移到var/www/html目录下,这样网址就不用输/wordpress直接就能访问。然后后台也能正常登陆了。只是有几个图片还是无法显示,后来我直接手动把图片传了上去,果然前台就恢复了。最后我自己参考网上教程,在etc/apache2/sites-enabled/000-default.conf最后面加了三行代码开启了rewrite自动跳转:
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R=301]
但是并没有成功。折腾了半天,突然想到是不是要把000-default.conf里的vhost端口从80改成8080,因为apache的ports.conf监听的http端口一开始就被我改成了8080,所以000-default.conf里的端口也要保持一致,果然改了后自动跳转就成功了!输入http的网址就会自动跳转到https并且加绿色安全锁。
Wordpress终于成功开启了小绿锁~ 真折腾,新技能ssl证书安装:Get!
文章评论