Mar 11

Hi, HTTPS 不指定

felix021 @ 2016-3-11 01:16 [IT » 网络] 评论(0) , 引用(0) , 阅读(4513) | Via 本站原创 | |
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就好啦。

转载请注明出自 ,如是转载文则注明原出处,谢谢:)
RSS订阅地址: http://www.felix021.com/blog/feed.php
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   *非必须
网址   电邮   [注册]