这年头你是想浏览器地址栏左边一直显示着“不安全”还是那把锁?对于一个个人博客来说,我又不需要网上支付,而且只是一个边缘小众blog到底怎么看待这事。我想全取决于管理员你到底看着舒服还是不舒服,而我本着学习折腾的精神,觉得不舒服,决定开始折腾。

这玩意简单来说就是找个机构给你发个证书,把你的链接信息进行加密然后告诉浏览器你的网站是安全的。第一反应是找个牛逼的大网站然后看看他家用哪家的证书就一定没错,是的,我第一次找了GlobalSign……见鬼了,他家不是给个人用户用的,一年好几百。找朋友咨询了一下,Let’s Encrypt是个不错的选择,免费,自动续期,尽管针对Unix系统,但win下也是可以的。可前提是你可以完全掌控你的操作系统,这意味着你需要一个云服务器而不仅仅是一个虚拟主机。OK,它的事情到此为止,在我这小站搬家后我会尝试。但现在我只有虚拟主机,所以无奈之下只能选择买证书,网上看到getssl不错,Certum的证书酸能接受,100块两年。开始折腾吧。

申请不是问题,遇到的第一个问题是Certum需要你证明自己是你申请域名的所有者,并提供三种证明的方法。第一种是根据whois信息中的email给你发邮件,但我不确定国内注册域名是什么情况,结论是找不到whois我的email。可能是找不到也可能是那个email就不是我的,无论如何这种情况很操蛋。第二种方法,在你的主机目录下建立一个包含一段代码的TXT文件,并让它能够被访问。这似乎是个可行的方法但我的结果是,这个TXT文件我可以无障碍浏览其他人不行,真TM见鬼了!OK,最后一种方法,在域名注册商那里的DNS解析里增加一个TXT记录。在这之前我都不知道原来DNS里还能添加TXT记录,这次也算是学到了。结果对面还是获取不到那段记录,我当时就觉得自己快疯了。还好在与getssl的人沟通过程中发现,是我当初建站的时候不懂,导致增加了其他解析我域名的DNS。所以certum找不到那个TXT记录。重新设置后,总算是通过了验证。好了,现在我有证书了,接下来开始配置。

不同系统下的证书文件是不一样的,好在getssl提供了所有主流系统的文件格式。另一个好消息是我的虚拟主机商提供添加自己证书的功能。虚拟主机有个好处就是在添加证书很简单,如果是云主机则需要一些配置,中间的配置过程等我搬家后再仔细体会吧。让我们先略过这段,后面还有事情要做。

首先是wordpress,在设置里需要更新你的网站网址,在http后面加s。

然后是在数据库里把所有含有http你网址的地方都改成https

update wp_posts set post_content = replace(post_content,'http://example.com','https://example.com'); 

当然,我看到有在function.php中写函数替换http的,都行吧,道理和目的都是一样的。到目前为止都还不错,SSL正常运行,无论是https还是那把小锁。但还存在最后一个问题,就是当我手动输入网址后进入的还是http,而通过上面的配置,在网站内有任何跳转都会进入https。这不是我想要的,既然都有证书了,就应该不管是手动输入还是跳转都应该进入https,所以后面是最后一步,http转https。

主要方法就是配置 .htaccess 文件,因为我是虚拟主机,直接编辑它即可。如果是云服务器还需要进行其他设置,这里同样等以后我体会了再说。直说编辑 .htaccess 。

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.yourdomainname.com/$1 [R,L] 

上面的意思是,如果访问的 ( RewriteCond )端口80,也就是http端口,就执行 RewriteRule,进入https。所以端口那里我们也可以这么写

RewriteCond %{SERVER_PORT} !^443$ 

只要访问的 ( RewriteCond )端口不是443,也就是https端口。

这里需要说明的是,如果没有 .htaccess 则需要新建一个。而如果是win系统,无法新增 .htaccess 这种命名的文件。方法:

我们先新建一个“新建文本文档.txt”文档,记事本打开,选择另存为,保存类型选择“所有文件(*.*)”,文件名输入“.htaccess”,保存。这样便生成了一个.htaccess文件。

 想说点什么吗?

 (拖动评论框右下角可扩展评论框面积;若评论发表后未显示请耐心等待审核)

左半红印发表于2019.06.28th