标题:Hi, HTTPS 出处:Felix021 时间:Fri, 11 Mar 2016 01:16:46 +0000 作者:felix021 地址:https://www.felix021.com/blog/read.php?2158 内容: Let's Encrypt项目进入Public Beta已经好久拉,不过因为使用dnspod作为域名的解析服务提供商,该项目官方刚开始的时候并不被支持(总是报错),所以拖了好久,今天才终于搞起来。 用起来还真是超简单: 1. 获取证书 $ git clone https://github.com/letsencrypt/letsencrypt $ cd letsencrypt $ ./letsencrypt-auto certonly -w /path/to/www-root felix021.com www.felix021.com 没有什么意外的话,获取到的证书就存在 /etc/letsencrypt/live/felix021.com/ 下面 2. 配置nginx 最简单的就是加上三行:引用 listen 443 ssl; ssl_certificate /etc/letsencrypt/live/felix021.com/cert.pem; ssl_certificate_key /etc/letsencrypt/live/felix021.com/privkey.pem; 但是比较推荐的做法是增加一个80端口redirect到https的配置:引用 server { listen 80; server_name felix021.com www.felix021.com; return 301 https://www.felix021.com$request_uri; } 然后执行 service nginx reload ,就生效了。 p.s. 对于我使用的bo-blog博客系统,还有一个坑,就是需要在blog设置里面将URL路径的http换成https,否则使用相对路径引用的css等静态文件资源还是会引用到http去(这是多么奇葩的一个特性啊...) 3. 定期更新 该项目提供的整数有效期只有90天,似乎短了点,但是实际上因为提供了命令行自动更新的方式,并不会造成多大困然,反而可以缩短因为证书泄漏而导致的风险期(貌似也提供了revoke功能,不过我没尝试)。因此官方宣称证书的有效期未来可能会进一步缩短。 想要renew证书,最直接的方式就是前面的certonly命令带上完整参数再跑一次。官方还提供了一个更简单的"letsencrypt renew"命令,会读取上次的配置来重新获取证书。 基于此可以写一个简单的renew脚本,放到root的crontab里,每个月跑一次就好拉。记得renew完要service nginx reload就好啦。 Generated by Bo-blog 2.1.0