背景
起因是为微信小程序配置后端服务; 按照微信小程序的要求, 必须提供HTTPS+域名服务(需备案). 这篇文章是为了解决HTTPS的问题.
为网站配置免费的HTTPS证书. 经过对比后选择了certbot
使用方法
安装certbot
certbot的安装非常简单, 三行命令即可搞定:
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
./certbot-auto --nginx
配置nginx
核心的配置如下, 把YOUR_DOMAIN
换成你自己的域名. 配置完毕, 用systemctl restart nginx
重启nginx.
server {
#listen 80 default_server;
#listen [::]:80 default_server;
listen 443 ssl;
ssl on;
listen [::]:443 ssl ipv6only=on;
server_name YOUR_DOMAIN;
charset utf-8;
ssl_certificate /etc/letsencrypt/live/g2link.top/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/g2link.top/privkey.pem;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_session_timeout 5m;
ssl_prefer_server_ciphers on;
}
验证
在这里浪费了不少时间跳出坑.
2017年1月1日起,苹果强制所有 app 满足 HTTPS,即 iOS9 推出的 App Transport Security (ATS) 特性。
因此, 如上的nginx的配置里的ssl_ciphers
和ssl_protocols
, 如果为微信提供后台服务,
HTTPS 服务器的 TLS 版本支持1.2及以下版本,一般就是1.0、1.1、1.2要同时支持这三个版本,一个也不能少.
使用腾讯提供的苹果ATS检测工具 来验证证书通过后, 整个HTTPS的配置工作就大功告成了.
证书更新
./certbot-auto renew --quiet --no-self-upgrade
如果证书过期, 用如上命令更新证书,然后到腾讯的ATS检测工具上验证结果.