网站全面升级HTTPS协议

3月22日更新

谷歌爸爸升级Chrome后,证书StartCom被拉黑了,无法访问。

12月7日更新

果然StartCom基本算不行了,每一家都不认可。今天刚好给公司的服务器配置SSL的时候,发现有一家厂子的SSL挺便宜的,4刀一年,遂入手三年。+-+;

基本配置和下面一样,这一家买的时候,你的Private Key是直接发送到邮箱的,所以需要用scp命令自己传送到服务器去。

配置成功的话可以通过下面命令测试下有效性:

nginx -t -c /your nginx config.conf
若测试通过的话,重启一下Nginx,就基本完成了。

可以把之前的Http的80端口监听做一下处理。

server {
listen 80;
server\_name xxx.com;
rewrite ^/(.\*) https://xxx.com$1 permanent;
}

这样基本就OK了。

正文

最近看了阿里安全的一篇文章全球HTTPS时代已来,你跟上了吗?写的很浅显易懂,想了想也趁此机会去把自己Blog更新成HTTPS的吧,对于淘汰旧的技术,我一向都是超级支持的。

当然第一步就是证书了,这里StartSSL可以注册,免费一年,可以无限续期。这个网站注册很有意思,用一次性密码登录过后,可以下载你对应的证书,安装在浏览器中,之后就可以使用了。登录到他们的后台,选择「Validations Wizard」把自己的域名添加进去就可以了。

在选择「Certificates Wizard」中填入CSR,这个CSR可以直接在Vps主机里面用命令生成:

openssl genrsa -out domon.pem 2048
openssl req -new -key domon.pem -out domon.csr

接着下一步,会下载下来StartSSL免费的SSL包,里面对应了常用的几种Web环境:N、A、IIS。

注意:Apache的证书是两个,需要把Root里面的复制到域名crt文件中。简单的方法就是直接使用Nginx目录下面的。

完了后,把这个crt文件上传到Vps当中,修改下配置文件,下面以Nginx为例:

  • 修改 listen 80 —> listen 443 ssl

  • 添加 ssl_certificate 下载后的crt文件

  • 添加 ssl_certificate_key 生成的key文件

  • 注意:每一行都需以分号结尾

      listen 443 ssl;
          server_name www.domon.cn;
          index index.html index.htm index.php;
          root  xxx;
          ssl_certificate xxx/domon.crt;
          ssl_certificate_key  xxx/domon.key  ;
    

确认无误的话,就可以重启下Nginx的服务,就可以带s的访问自己的主站了。

service nginx restart

后记

Chrome对于Https要求很高,在刚弄玩站的时候,我这里一直红色感叹号:

  • 由于我用的是Typecho,所以需要在他的配置文件config.inc.php中加入这样一行,开启Https资源
    /** 开启HTTPS */
    define('TYPECHO_SECURE',true);

  • 修改当前主题下面的评论comments.php
    $this->commentUrl(),将其替换为:echo str_replace("http","https",$this->commentUrl());

  • 发现我加的Cnzz统计是http的,我也将其替换成https的。

但是最终还有一个东西,我的图片资源是借用了下Orrindeng的域名,这酸爽,先把引用的这个图片删除了去就行了。

有时间在用个新的域名绑定下七牛的Https访问就好了。