Fork me on GitHub

Nginx配置阿里云免费SSL证书,咱也能用上HTTPS了

申请免费 SSL 证书

打开这个链接,品牌选择 Symantec,保护类型选择 1 个域名,证书类型选择免费型 DV SSL,域名个数选择 1 个,然后你就会发现费用只需要 0 元了 💪。

立即购买后需要选择补全信息,然后等待审批结果即可。

证书订单的流程如下:

补全信息 → 提交审核 → 查看进度 → 颁发证书 → 下载证书

注意:该证书的有效期只有一年

配置 nginx

找到已签发的订单,选择下载后会跳到教程页面,这里我再说明一下,以 nginx 为例

将证书下载下来,解压后里面有俩文件,不要修改里面的任何东西,
在 nginx 的安装目录下创建 cert 目录,将下载的证书丢进去,
然后修改配置文件内容,以我的配置为例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
server {
listen 443;
server_name xiaojun1994.top;
ssl on;
root /srv/www/blog;
index index.html;
ssl_certificate cert/215019006850496.pem;
ssl_certificate_key cert/215019006850496.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
}
}

以上属性中 ssl 开头的属性与证书配置有直接关系,其它属性请结合自己的实际情况复制或调整

最后,开启重定向功能,自动将 http 请求重定向到 https,有多种方式,这里说两种

1.

1
rewrite ^(.*)$  https://$host$1 permanent;

2.

1
2
3
if ($scheme = http ) {
return 301 https://$host$request_uri;
}

推荐使用第 2 种方式,因为我在使用百度站长平台 https 认证的时候它需要你把 http 重定向到 https,并返回 301 状态码。
但经过我测试以后发现 chrome 返回的是 307 状态码,原因未知,就不深追究了,应该是 chrome 为了安全做的措施吧

👻 别忘了重启 nginx

1
nginx -s reload