最新消息:点击查看大S的省钱秘笈

博客服务器全站开始强制使用HTTPS安全连接

网络相关 Slyar 152浏览 0评论

文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。

2015-09-30_233918

这学期修CSCI 530天天就是各种加密解密安全什么的,然而自己的博客居然还是HTTP裸奔状态。之前一直没有升级到HTTPS主要是因为SEO的考虑,因为百度一直对HTTPS网站索引的支持度为0。然而在今年5月份,百度贴出了公告声称百度已经支持索引HTTPS并且跟Google一样会提高HTTPS页面的权重,现在已经没有任何理由不升级服务器到HTTPS了。升级到HTTPS后网站在地址栏就会显示绿色小锁表示加密了

2015-09-30_234037

为了给用户提供一个安全可靠的网络环境,继启用https加密之后,百度搜索再次重磅推出:全面支持https页面直接收录;另外从相关性的角度,百度搜索引擎认为权值相同的站点,采用https协议的页面更加安全,排名上会优先对待。 - 时间:2015年5月25日 作者:百度站长平台

启用HTTPS之前需要有证书,而证书需要首先在自己服务器上创建CSR,对应的公钥和私钥。这里我全部都拿Nginx服务器举例,Apache也不会差太多,都是基于openssl的。因为我只有一个主机域名www.slyar.com,所以证书方便选择了COMODO的PositiveSSL,每年9刀。需要注意COMODO要求证书至少是2048位,见下面的命令。激活证书的时候需要注意common name那里要填写自己的域名地址,我因为并不使用slyar.com,所以这里写的就是www.slyar.com,需要注意这两个主机地址是不同的。其他的组织名公司名什么的如果没有就写NA,不要留空。下面简单说一下步骤

1、以root登录,升级服务器。这里是为了解决去年OpenSSL的一个大漏洞CVE-2014-0224,因为ChangeCipherSpec消息的问题可能导致中间人攻击,解密并修改被攻击的服务器和客户端之间的通信,从而获得加密的数据。

查看OpenSSL版本,确认至少在1.0.1h以上,

openssl version -a

如果没有,升级服务器,以Debian为例

apt-get update
apt-get upgrade

2、创建CSR和私钥

openssl req -new -newkey rsa:2048 -nodes -keyout www.slyar.com.key -out www.slyar.com.csr

得到2个文件,私钥www.slyar.com.key,CSR文件www.slyar.com.csr,其中CSR里面的内容在激活证书的时候需要提交

3、购买证书,完成激活,下载证书文件

下载的证书文件通常是一个压缩包,有些是2个文件,有些是4个文件

如果是2个文件,是这样的:

www_slyar_com.ca-bundle

www_slyar_com.crt

如果是4个文件,通常都是这样的:

www_slyar_com.crt

COMODORSADomainValidationSecureServerCA.crt

COMODORSAAddTrustCA.crt

AddTrustExternalCARoot.crt

其中www_slyar_com.ca-bundle就是自动合并了其他3个文件的产物,一个道理

4、合并证书,顺序一定不能错

cat www_slyar_com.crt www_slyar_com.ca-bundle > www.slyar.com.crt

或者

cat www_slyar_com.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > www.slyar.com.crt

最后产生的www.slyar.com.crt是4个文件的合并,此文件与之前产生的www.slyar.com.key一起组成了Nginx需要使用的证书

5、把www.slyar.com.crt和www.slyar.com.key复制到Nginx的conf目录下,比如/usr/local/nginx/conf/

cp www.slyar.com.crt www.slyar.com.key /usr/local/nginx/conf/

6、修改Nginx配置文件或者vhost/下的虚拟主机配置文件,启用https,配置加密方式等

#合并80和443配置文件也可以,一起配置,最后强制转移80到443就可以了
listen 80;
listen 443;

#指定证书文件
ssl_certificate www.slyar.com.crt;
ssl_certificate_key www.slyar.com.key;

#禁用不安全的SSLv1 2 3,只使用TLS
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_prefer_server_ciphers on;

#RC4也是不安全的了,只能去掉
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

#301转移
if ($server_port = 80) {
return 301 https://$server_name$request_uri;
}

7、测试Nginx配置文件并重新reload配置文件

Nginx -t
service nginx reload

这样服务器的HTTPS就配置完了。下面说一下WordPress相关

1、首先后台地址先改成HTTPS

2015-10-01_002229

2、文章里的图片可能会导致"小黄锁"问题,因为图片在以前是HTTP的,这时浏览器就会提示Mixed content不走HTTPS。这个问题是WordPress的设计缺陷,数据库里的图片地址是完整路径,包括了HTTP。。。修改一下数据库把图片地址都改成相对路径就好了,让浏览器判断协议

UPDATE wp_comments SET
comment_content = replace(post_content, 'http://', 'https://');

3、一些插件可能比较老旧或者根本不支持HTTPS,卸载或者替换吧。比如我把百度分享插件和多说都干掉了,这些老古董都不支持HTTPS

4、部分插件是因为引用了远程JS或者CSS,下载这些文件放到服务器上,然后修改源代码把这些远程调用都改成本地调用就可以了。Chrome的Ctrl+Shift+I可以调出Console查看哪些内容是不安全的引用

这样基本上就升级完毕了,测试一下各类页面都没有问题即可。如果想测试自己的服务器是否是安全的HTTPS连接,可以用SSL Labs的测试页面,结果如题图。

https://www.ssllabs.com/ssltest/

转载请注明:Slyar Home » 博客服务器全站开始强制使用HTTPS安全连接

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (1)

  1. 看起来很高级的样子
    HeroLong1年前 (2015-10-02)回复