传输层安全协议(英语:Transport Layer Security,缩写为 TLS),及其前身安全套接层(Secure Sockets Layer,SSL)是一种安全协议,目的是为互联网通信,提供安全及数据完整性保障。在网景公司(Netscape)推出首版Web浏览器的同时提出SSL,IETF{.mw-redirect}将SSL进行标准化,1999年公布了 TLS标准文件。
SSL包含记录层(Record Layer)和传输层,记录层协议确定了传输层数据的封装格式。传输层安全协议使用X.509认证,之后利用非对称加密演算来对通信方做身份认证,之后交换对称密钥作为会谈密钥(Session key)。这个会谈密钥是用来将通信两方交换的数据做加密,保证两个应用间通信的保密性和可靠性,使客户与服务器应用之间的通信不被攻击者窃听。
最近,和谐物分享网站 琉璃神社 弄 TLS/SSL 加密,据说 SSL 加密能有效防范关键字重置,心血来潮我也去搞一个。
配置 SSL 加密需要用到 SSL 证书,证书基本是收费的,而且很贵,便宜的像 Godaddy 的都比 .com 域名要贵。
好在有一家叫 StartCom 的公司提供免费的 SSL 证书,而且证书受主流浏览器信任。
Ⅰ SSL 证书的申请
# 免费的SSL证书提供商StartSSL详细图文注册教程 | 小蒋博客
申请挺简单,先填上个人资料注册,收邮件下一步,安装登录用的证书(记得备份),然后证书申请,填域名然后用验证。
接着填上私钥密码,得到一串私钥,保存为 ssl.key 。
说点插曲,我在 SSH 终端使用 vi 编辑器复制私钥进去保存,因为没有回车换行导致头行前几位字符被吞掉,然后我以为是其它原因配置出错折腾了几小时才发现是私钥错了,坑死爹了!
得到私钥后需要解密,在终端 cd 到 ssl.key 的目录下,执行:
openssl rsa -in ssl.key -out ssl.key
再输入密码就得到了解密的私钥。
然后在 StartSSL 网站控制面板的 Tool Box 进入 Retrieve Certificate ,拿到申请的证书信息和公钥,保存为 ssh.crt 。
再在 Tool Box 的 StartCom CA Certificates 下载到 ca.pem 和 sub.class1.server.ca.pem 。
这样证书的所有文件就搞定了,如果在文件还在本地就上传到服务器上,ssl.key、ssl.crt、ca.pem 和 sub.class1.server.ca.pem 这四个。
Ⅱ Apache 配置 SSL
Apache + WordPress + SSL 完全指南
用 vi 编辑器修改 Apache 的配置文件,执行:
vi /etc/apache2/sites-available/default-ssl.conf
添加修改下面的内容,证书文件路径改为自己的,我也是照别人放的。
SSLEngine on SSLCertificateFile /etc/pki/tls/certs/ssl.crt SSLCertificateKeyFile /etc/pki/tls/private/ssl.key SSLCertificateChainFile /etc/pki/tls/sub.class1.server.ca.pem SSLCACertificateFile /etc/pki/tls/ca.pem
修改保存好 Apache 的配置文件后,执行:
a2ensite default-ssl.conf
确保 mod_ssl 已经开启:
a2enmod ssl
最后重启 Apache :
service apache2 restart
以上只是搞定 SSL 证书的配置,还有 WordPress 方面要折腾。
Ⅲ WordPress 配置 SSL
首先得把 WordPress 的设置里面的 Http:// 域名改为 Https:// 的,还要把数据库的文章、图片等链接全都改为 Https:// 的,用 SQL 语句或者 Velvet Blues Update URLs 插件都可以。
接着设置 Https 跳转,编辑网站目录下的 .htaccess 文件,就是设置 伪静态 那个文件,加入下面的字段(自行修改为自己的域名)。
RewriteEngine On RewriteCond %{HTTPS} !on [NC] RewriteCond %{HTTP_USER_AGENT} !(baiduspider|soso|bing|sogou|yahoo|sohu-search|yodao|robozilla|msnbot|msie|feedburner) [NC] RewriteRule (.*) https://umi.im%{REQUEST_URI} [R=301,NC,L]
修改完成后再 重启 Apache :
service apache2 restart
# Ⅳ 意外的情况
折腾了这么久应该搞定了啊,可惜的是还没有,又遇到各种突发情况。
1. Bilibili 外链视频无法加载,在 Http 链接下正常,只需要把 Html 外链代码的 http://share.acg.tv/flash.swf 替换成 https://static-s.bilibili.com/miniloader.swf ,SQL 语句或者插件批量替换,任君选择。
2. 多说插件出错,安装别人做的修改版多说插件( duoshuo-wordpress),后台管理不能显示还未解决。
3. 需要配置七牛 CDN 加速,进入七牛的管理面板,修改镜像源为 Https 链接的,并设置七牛 Https 域名,再同上修改七牛的 WordPress 加速插件。
4. 360 前端公共库不支持 SSL 只能关闭 ,Google 公共库被墙,只好用中科大提供的公共库。
Ⅴ 气死强迫症
折腾好所有后,地址栏那个绿色的小锁终于出现了。
但是很坑爹,我把出现在首页的两篇带 Flash 视频的文章移除掉才出现绿色的小锁子,不然就是一把灰锁加一个黄色三角形。
在文章页面,因为多说插件不支持 SSL ,所以还是不绿!WTF!