效果:
七牛免费ssl证书,有效期一年,使网站变成https格式访问。

准备工作
vps或者云服务器一台
七牛帐号并且余额大于10元
可以成功访问的站点,如:http://www.chengbin.name

申请七牛SSL证书
2016在11月,七牛发布了免费SSL证书,亚洲诚信的DV证书。申请起来也很简单,参见七牛SSL证书申请。
当然,正规的说,申请的证书只能用于CDN加速

绑定自定义域名
通过个人面板-证书管理,我申请了域名为www.chengbin.name的SSL证书,验证成功(七牛免费证书介绍)后,接下来就是绑定自定义域名了。
进入七牛云空间首页,点击对象存储,选择你想要使用https的bucket,在融合 CDN加速域名自定义域名点击右边,进行添加自定义域名。

在通信协议选项中选择HTTPS,可以选择或者手动填写证书。如果申请成功,下拉就可以看到我们的证书了。选中后,七牛会自动填写证书内容和私钥。这时,不要急着点击完成,将证书内容复制保存为certificate.crt(名字可以自行改,后缀需要保持一下,下同),将私钥内容复制保存为certificate.key,为后面配置做准备。这么做的原因主要是,我不知道怎么去下载证书内容和私钥,所以就采用这种比较原始的方法了。如果你知道的话,请告诉我。

最后,填完所有内容之后,点击创建即可。这时,添加的域名应该还处于审核状态,需要你添加CNAME,按照要求填写CNAME之后,进入nginx设置环节。

nginx设置
由于我的主站使用的Let's Encrypt证书,并且没有进行泛域名的配置,实际上Let's Encrypt也暂时不支持。那么,对static.excaliburhan.com进行设置。

首先,我们需要把保存的certificate.crt和certificate.key传到服务器的相应目录,我这的目录是/etc/nginx/certs。nginx简单配置如下。

server {
    listen       443;
    server_name  www.chengbin.name;

    ssl    on;
    ssl_certificate        /usr/local/nginx/certs/certificate.crt;
    ssl_certificate_key    /usr/local/nginx/certs/certificate.key;

    index index.html index.htm index.php default.html default.htm default.php;
}

注意
重启nginx,将七牛CDN的域名换成自定义的域名,发现Chrome报错:隐私设置错误。研究发现,主要是我nginx主站设置了HSTS和HPKP,并且都设置了includeSubDomains。而我的主站使用的SSL证书和七牛的SSL证书并不是一个厂商,所以,请求被当成了劫持攻击了!

add_header    Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
add_header    Public-Key-Pins ...(pin-sha256指纹设置);max-age=604800; includeSubDomains;

解决方法就是去掉includeSubDomains。

add_header    Strict-Transport-Security "max-age=31536000";
add_header    Public-Key-Pins ...(pin-sha256指纹设置);max-age=604800;

而且我还去掉了preload,原因有二,一是preload list申请必须包含includeSubDomains;二是个人网站申请Chrome的preload list基本无效。

除此之外,还要添加七牛SSL证书的CA的Public Key指纹,七牛的SSL证书是TrustAsia DV SSL CA - G5,指纹是IiSbZ4pMDEyXvtl7Lg8K3FNmJcTAhKUTrB2FQOaAO/s=。当然你也可以采用根证书VeriSign Class 3 Public Primary Certification 的指纹:JbQbUG5JMJUoI6brnx0x3vZF6jilxsapbXGVfjhN8Fg=。不推荐使用站点证书生成的指纹。

添加完毕后,使用service nginx restart重启nginx即可。

配置301转向

server       
{  
    server_name chengbin.name www.chengbin.name;
    rewrite ^/(.*) https://www.chengbin.name/$1 permanent;
    access_log off;
}

参考链接:
七牛免费证书介绍
七牛免费SSL证书,配置自定义域名CDN加速

最后由 chengbin 编辑于2017年01月10日 12:42