漫漫长假,无心玩耍,给 miu.im 折腾上了 SSL。系统环境为阿里云 CentOS 6.5, WDlinux,Apache,WordPress,使用免费的 StartSSL。遇到不少坑,在此记录一下。
一、申请 StartSSL 证书
这部分网上有很多教程可参考,推荐 免费资源部落 的这篇教程,结合 大肥羊的折腾记录,有需要注意的几个地方:
-
选择验证 Email 时,列表中没有显示我现有的 Email,只好在域名邮箱管理中添加一个帐号
webmaster@miu.im
-
在最后一步保存证书时,同时需要下载 StartSSL 根证书文件,StartCom Root CA (
ca.pem
) 和 Class 1 Intermediate Server CA (sub.class1.server.ca.pem
)。也可以在 Toolbox > StartCom CA Certificates 下载。
将这两个证书合并成一个文件,我命名为
startssl.chain.class1.server.pem
。 -
解密证书 startssl.crt
证书文件需要解密后才能在服务器上使用。可在 Toolbox > Decrypt Private Key 进行解密:
至此我们得到了三个文件:
- startssl.key 私钥
- startssl.crt 解密后的证书
- startssl.chain.class1.server.pem StartSSL 根证书
二、服务器设置
重点来了,以下内容适用于 WDlinux,Apache。
(一)准备 ssl 模块
首先用 phpinfo()
查看 Apache 编译时是否有ssl,是否有 mod_ssl 模块,如果没有则如下执行可以完成(针对httpd-2.2.22版本,其他版本改成相应的版本号就可以)。
wget http://down.wdlinux.cn/in/http2222_ssl.sh sh http2222_ssl.sh
(二)上传证书
上传我们在 StartSSL 获取的三个文件(startssl.key,startssl.crt,startssl.chain.class1.server.pem)到 /www/wdlinux/apache/conf/
(三)编辑 /www/wdlinux/apache/conf/extra/httpd-ssl.conf
如果使用 vi 编辑器,使用 :set number
可显示行号, :20
可转到第20行。
- 指定证书路径
- 指定 StartSSL 根证书路径,即上面我们合并两个根证书得到的文件。如果不设置,Android 上的浏览器会提示不受信任的证书。
- 指定网站文件路径和域名
- (可选项非必须)强制使用 AES256 或AES128 加密方式,取决于浏览器的是否支持 AES256 或 AES128。古老的不支持 AES 加密的低端浏览器就无法访问网站了。
SSLCipherSuite AES256-SHA:AES128-SHA
SSLHonorCipherOrder on
- 关闭不够安全的 SSL v3。至于为什么要关,请阅读这篇文章:SSL 3 is dead, killed by the POODLE attack。关闭方法如下:
将SSLProtocol all -SSLv2
改为:
SSLProtocol all -SSLv2 -SSLv3
(四)编辑 /www/wdlinux/apache/conf/httpd.conf
service httpd restart
三、WordPress 设置
- 后台设置常规选项,博客地址将
http
修改为https
-
.htaccess
配置 http 重定向为 httpsRewriteEngine On RewriteCond %{HTTPS} !on [NC] RewriteRule (.*) https://miu.im%{REQUEST_URI} [R=301,NC,L]
如果启用了缓存,以上代码需要放到伪静态配置之前。
- 重新生成 sitemap,并在 robot.txt 中将 sitemap 修改为新地址
-
解决混合内容。网站中引用的外链资源,根据自己的情况处理。
-
替换文章中的本站资源链接。执行SQL语句:
UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://miu.im', '//miu.im');
-
文章地址二维码不再使用联图Api,改用 http://goqr.me/ 。
-
以前多说评论框时,评论中表情图片是 http,处理一下。
UPDATE wp_comments SET comment_content = REPLACE (comment_content, 'http://img.t.sinajs.cn/t35/style/images/', '//miu.im/ssl?type=image&url=http://img.t.sinajs.cn/t35/style/images/');
其中
//miu.im/ssl
这个地址是我写的一个小程序,服务器获取 http 图片然后再输出,这就实现了 http 资源转换为 https。当然这个程序最好是放到第三方平台上,不过目前我还没发现支持 SSL 的这样的平台,试过 https://coding.net,不支持 SSL 演示。
-
后记
Apache 配置这块反复调试了很久,终于达到较满意的效果。Qualys SSL Labs评分 A-,不支持较旧的浏览器那块减了分。
如果是国外主机使用startssl很容易被墙,境内主机应该没问题吧
不知道,先用着吧
主要体验一下 SSL 的部署,以后不管换哪家都会轻车熟路了
不会吧?我的好像也算国外主机,暂时没发现被墙。 😮
据说使用 StartSSL 免费证书的境外网站被墙过,不过很快解封。
先用着吧,反正到今年夏天,得益于 Let’s Encrypt 项目,免费证书就很容易申请了
新年也不忘折腾啊。 😉
这个年比较闲,放假也早
chrome上绿色的小锁真漂亮。赞一个。
深有同感! 就是看你们的小绿锁漂亮,给了我上 SSL 的动力
我最喜欢的是 Android 版 Chrome 的小绿锁,太漂亮了
从此我就闯入你们 https 圈了 😢
博客就这点好,可以当成互联网日记。并把自己的成果和朋友们一起分享。真心不错。我也是今天解决了NAS上搭建LNMP的方案,真开心 😣
你说的就是我写博客的目的了 😳
即使没人看也无所谓,写博客也是积累、实践和消化新技能的过程
TODO:
1. SPDY
2. 外链图片输出时转换
3. 视频音频
先收藏者 以后再弄
来撸撸~~ 👿