[技术]子霖博客全站开启SSL https访问手记 WordPress如何开启全站https?

  • A+

细心的朋友已经发现博主的博客已经瞬间升级成小绿锁也就是全站开启了SSL访问,看了看发现网上关于WordPress方面的全站SSL以及与SSL的CDN配置方面的教程还是比较少的说,把开启流程记录下来备着下次用……

先晒晒来点成就感……

[技术]子霖博客全站开启SSL https访问手记 WordPress如何开启全站https?

[技术]子霖博客全站开启SSL https访问手记 WordPress如何开启全站https?

 1、申请免费SSL证书

平民老百姓的个人博客整个SSL纯粹为了装X,没人会无聊到嗅探小博客的数据,所以免费SSL证书足矣。目前国内沃通的免费SSL证书比较出名,国外的StartSSL似乎也不错。这个萝卜白菜各有所爱大伙自己选择,下面以沃通SSL证书申请为例。(https://buy.wosign.com/free/#ssl)

[技术]子霖博客全站开启SSL https访问手记 WordPress如何开启全站https?

填写完后点击提交申请,会要求验证邮箱。验证邮箱提供了包括Whois邮箱在内的几乎所有管理用邮箱,如果域名开启了whois保护可能获取不到你的真实邮箱。

[技术]子霖博客全站开启SSL https访问手记 WordPress如何开启全站https?

证书下载到本地后请按服务器环境选择解压,博主在这里只介绍LNMP环境证书的部署。

 

 2、Nginx环境下SSL证书的部署

For Nginx解压后得到一个CRT和一个KEY文件,可以将两文件上传到服务器任意位置,下面的例子里博主是将两文件放在/root/linblog下,并对应修改成SSL.CRT和SSL.KEY文件名。

[技术]子霖博客全站开启SSL https访问手记 WordPress如何开启全站https?

依次执行下面的命令,解密私钥和授权。


openssl rsa -in ssl.key -out /root/linblog/ssl.key
chmod 600 /root/linblog/ssl.key

 

如果只是简单的开启SSL不做任何另外优化配置,直接按下面的格式修改对应站点的conf文件。
server
{
listen 80;
listen 443 ssl;
ssl on;
ssl_certificate /root/linblog/ssl.crt;
ssl_certificate_key /root/linblog/ssl.key;
server_name xlinblog.net www.xlinblog.net;

 

到这里,SSL的基本部署结束,现在你可以用SSL方式登入WordPress了。

[infobg class="warning" closebtn="" color="" bgcolor=""]
注意:目前百度云加速、360网站卫士等傻瓜式CDN产品暂不支持HTTPS方式,如果开启了这类CDN请及时关闭云加速(调整至回源模式)或改用其他CDN,七牛也只有使用其提供的域名才能https方式访问,VeryCloud(下文介绍)、阿里云CDN、腾讯云CDN目前支持SSL方式。
[/infobg]

 

3、SSL的相关优化

 

3.1、SSL访客强制访问、国内蜘蛛回源

开启了SSL但是原来的http方式仍然可以访问,这并不是站长们所希望看到的。为了成功地装X我们得让所有访客都强制使用https访问,但是国内搜索巨头百度、360搜索普遍对https兼容不佳,接下来我们需要通过配置Nginx达到访客强制访问https、国内蜘蛛回源http的目的。

下面是博主博客的部分配置文件,请参考:

server
{
listen 80;
listen 443 ssl;
ssl on;
ssl_certificate /root/linblog/ssl.crt;
ssl_certificate_key /root/linblog/ssl.key;
ssl_session_timeout 5m; #5分钟session会话保持
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!ADH:!EXPORT56:RC4+RSA:+MEDIUM;
server_name xlinblog.net www.xlinblog.net;

#www域名跳转至主域名
if ($host = 'www.xlinblog.net' ) {
rewrite ^/(.*)$ https://xlinblog.net/$1 permanent;
}
#在此新增如下规则:
#如UA不匹配百度、360、神马,则设置变量为y(若需要加入更多,请以分隔符隔开)
if ($http_user_agent !~* "Windows\ NT\ 5.1|Windows\ NT\ 5.2|BaiduSpider|360Spider|YisouSpider") {
set $ssl "y";
}
#若请求协议是http,则继续将变量增量赋值es
if ($scheme = 'http' ) {
set $ssl "${ssl}es";
}
#若变量值为yes,即命中上述2个条件,则跳转到https
if ( $ssl = "yes" ) {
rewrite ^(.*)$ https://$host$1 permanent;
}
# ==================== 以下为新增内容 =======================
#若UA匹配到不支持https的请求,则设置变量为n:
if ($http_user_agent ~* "Windows\ NT\ 5.1|Windows\ NT\ 5.2|BaiduSpider|360Spider|YisouSpider") {
set $ssl "n";
}
if ($scheme = 'https' ) {
set $ssl "${ssl}o";
}
#若变量值为no,即命中上述2个条件,则跳转到http
if ( $ssl = "no" ) {
rewrite ^(.*)$ http://$host$1 permanent;
}

上面的配置完美的解决了WinXP不支持SHA2加密以及国内部分搜索引擎对SSL支持不佳的情况!

 

3.2、关于支持SSL的CDN的使用

在互联网上裸奔从来不是好主意,在全民免费CDN时代几乎人人都开了个CDN提防不法之徒,虽说咱是个个人博客不怕D,但防人之心不可无这……也就是我为何没急着给MC服主网也来上一发SSL的原因,SSL时代许多CDN不支持https形式访问……

下面介绍一款每月50G免费流量的支持SSL的CDN产品——VeryCloud。关于SSL的CDN配置无非就是多了个证书上传,上传证书后在“频道管理”中新建频道即可。

唯一需要注意的是填写源站时如果您使用了访客强制SSL配置请将端口改为SSL端口“443”,否则报错没商量![技术]子霖博客全站开启SSL https访问手记 WordPress如何开启全站https?

探测URL可随便填写一个你的网站可访问的https链接。

注意:如果您之前的域名在百度云加速、360网站卫士等DNS类CDN中,请及时转入DnsPod类DNS服务,这样就可以把搜索引擎流量使用DNSPOD分线路解析功能绕过CDN直达源站以实现之前的搜索引擎回源http。

虽然百度云加速提供了搜索引擎回源但经博主测试百度云加速所指的搜索引擎似乎只是百度蜘蛛,谷歌站长平台抓取的Header中仍有yunjiasu-nginx的存在!

开启此类CDN后,之前设定的WinXP回源功能将会失效(因为访客请求直接落到CDN上了),请根据访客群体自行取舍,若有更好的办法欢迎勾搭博主!

4、针对WordPress的SSL优化

上面的教程其实针对任何网站都适用,但是开启了SSL之后你是不是发现……尼玛这根本不是小绿锁呀咋是把灰色的锁还打把感叹号呢!对于处女座站长这绝壁不能忍有木有!

浏览器认定,当一个https网页中若是加载了http资源(css/js/图片等,不包括链出的网址a标签),这个网页中就存在不安全的因素。什么鬼?咱们只能顺着浏览器的意思,进行下面的优化。

进入WordPress后台,设置→常规,把WordPress地址(URL)、站点地址(URL)的http改成https。

[技术]子霖博客全站开启SSL https访问手记 WordPress如何开启全站https?

最好安装一个与SSL有关的插件Really Simple SSL,它能检测一些非SSL的资源,在wordpress后台下载启用,按照这样配置。

[技术]子霖博客全站开启SSL https访问手记 WordPress如何开启全站https?

对于使用了自定义主题的站长(你这不废话现在谁用Wordpress不用自定义主题),您还有的一下麻烦,由于主题不同我只介绍一些基本技巧以及主题的通病。

1、百度分享问题:百度分享服务器不支持SSL,但是不同主题调用的百度分享js不同,这里博主不好举例,建议动手能力牛逼的站长自行保存js到本地然后修改主题,目前博主是直接将主题关于百度分享的代码全部删除……

2、二维码问题:同上,根本没有支持https的二维码API啊反正没人用删掉删掉……

3、文章图片仍是http:没事现在我有大杀器!SQL替换掉!进入phpmyadmin或任意SQL管理工具在WordPress所在数据库执行以下命令(如果不是默认表名请替换):

update wp_posts set post_content = replace(post_content,"http://","https://")

副作用:一切文章内容都会被替换,包括链接……所以请自行检查是否有链出链接被修改导致无法访问。

4、外链跳转问题:不同代码不同方法,一般只要在对应代码内将http改为https即可。

5、其他http资源问题:Chrome内核浏览器进入开发模式(审查元素),

[技术]子霖博客全站开启SSL https访问手记 WordPress如何开启全站https?

在页面出现错误时,会在这里出现红叉;SSL资源不安全则有惊叹号并会给出不安全的资源名称,按提示修改即可。

实在不行,请将主题文件夹打包下载下来,利用win的搜索功能列出所有php文件并全选用NotePad++打开,软件支持在所有文件里查找字符串,搜搜“http://”分析并修改即可可别一股脑全部替换了……

 

教程到此结束,哎呀好累- -

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:2   其中:访客  2   博主  0

    • 迎風别葉index 迎風别葉index 1

      讲道理 80跳到443 写个301跳转不就好了