V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wxiluo
V2EX  ›  程序员

用 Let's Encrypt 给网站加上 HTTPS 完全指南

  •  
  •   wxiluo · 2016-05-29 19:25:34 +08:00 · 11175 次点击
    这是一个创建于 3082 天前的主题,其中的信息可能已经有所发展或是发生改变。

    周末看 Google I/O 2016 ,谷歌大力在推 HTTPS ,于是上手实践把自己的博客加上,与恶心的运营商劫持抗争到底。

    《用 Let's Encrypt 给网站加上 HTTPS 完全指南》传送门:

    https://ksmx.me/letsencrypt-ssl-https/?utm_source=v2ex&utm_medium=forum&utm_campaign=20160529

    最后成果, Qualys SSL Labs 安全测试 A+:

    24 条回复    2016-06-02 19:53:36 +08:00
    xencdn
        1
    xencdn  
       2016-05-29 19:32:54 +08:00
    qgy18
        2
    qgy18  
       2016-05-29 19:33:44 +08:00   ❤️ 4
    Google Analytics 用得很 666 ,我给满分!
    timothyye
        3
    timothyye  
       2016-05-29 19:48:12 +08:00 via Android
    赞一个
    yeyeye
        4
    yeyeye  
       2016-05-29 20:12:59 +08:00
    标题党 Windows 服务器部分啥都没提
    freaks
        5
    freaks  
       2016-05-29 20:40:37 +08:00   ❤️ 1
    为啥打开博客要老半天啊
    zacard
        6
    zacard  
       2016-05-29 20:51:47 +08:00 via iPhone   ❤️ 1
    非常棒。学习了
    lhbc
        7
    lhbc  
       2016-05-29 21:05:55 +08:00
    签个 ECC 证书,然后只允许以下 ciphers ,真省事。

    TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 (0xcca9) ECDH secp256r1 (eq. 3072 bits RSA) FS 256
    OLD_TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 (0xcc14) ECDH secp256r1 (eq. 3072 bits RSA) FS 256
    TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b) ECDH secp256r1 (eq. 3072 bits RSA) FS 128
    TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xc02c) ECDH secp256r1 (eq. 3072 bits RSA) FS 256
    TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 (0xc023) ECDH secp256r1 (eq. 3072 bits RSA) FS 128
    TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009) ECDH secp256r1 (eq. 3072 bits RSA) FS 128
    TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 (0xc024) ECDH secp256r1 (eq. 3072 bits RSA) FS 256
    TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a) ECDH secp256r1 (eq. 3072 bits RSA) FS 256
    4679kun
        8
    4679kun  
       2016-05-29 22:33:29 +08:00   ❤️ 1

    听说现在流行比这个
    skywing
        9
    skywing  
       2016-05-29 23:51:09 +08:00 via Android   ❤️ 2
    现在这些工具是越来越方便了,之前在 hostloc 写过一篇,传送门 http://www.hostloc.com/thread-313985-1-1.html 太复杂了
    kingcos
        10
    kingcos  
       2016-05-29 23:56:45 +08:00 via iPhone   ❤️ 1
    看了你的决定把博客也换成 https ,不过我的是 Hexo+GitHub Pages ,所以找了 CloudFare 弄的,不过现在好像我们的校园网访问不到我的博客了=_=
    amorphobia
        11
    amorphobia  
       2016-05-30 00:57:43 +08:00 via iPhone   ❤️ 1
    看了你的博客惊奇的发现你的左上角有个 logo ,然后我也去上传了一个 logo …
    lyragosa
        12
    lyragosa  
       2016-05-30 00:59:10 +08:00   ❤️ 1
    然而 chrome 现在的绿锁里面什么都不写了,还让不让人愉快的装 B 了
    Tony1ee
        13
    Tony1ee  
       2016-05-30 07:33:47 +08:00 via Android   ❤️ 1
    @lyragosa 移动版还是可以装逼的
    majinjing3
        14
    majinjing3  
       2016-05-30 08:03:55 +08:00 via Android   ❤️ 1
    赞!
    wxiluo
        15
    wxiluo  
    OP
       2016-05-30 09:13:01 +08:00 via iPad   ❤️ 1
    @qgy18 哈哈 确实 GA 我用的很熟悉呀。有时间可以写一篇有关 GA 的文章分享。
    aec4d
        16
    aec4d  
       2016-05-30 10:11:52 +08:00   ❤️ 2
    并不需要如此麻烦,在 nginx 下配置总结步骤如下(在 root 下执行)
    wget https://dl.eff.org/certbot-auto
    chmod a+x certbot-auto
    ./certbot-auto
    ~/.local/share/letsencrypt/bin/pip install -U letsencrypt-nginx
    ./certbot-auto --nginx -d www.demo.com -d demo.com --email [email protected] --agree-tos
    写入 crontab
    * * * * * /root/certbot-auto renew && service nginx reload
    ------------------------------------------------------------------
    如果使用 DNS 挑战,建议使用 https://github.com/Neilpang/acme.sh
    Kokororin
        17
    Kokororin  
       2016-05-30 11:45:20 +08:00   ❤️ 1
    hostker 一键申请&安装证书
    aitaii
        18
    aitaii  
       2016-05-30 12:25:06 +08:00   ❤️ 1
    楼上一键安装的效果 https://lgtiamo.com
    lslqtz
        19
    lslqtz  
       2016-05-30 14:12:46 +08:00   ❤️ 1
    我在用 GlobeSSL ,因为少所以装逼。沃通那种 CA 我不用。。上次才找到一个沃通的洞。 Let's Encrypt 太普及没逼格,不用 2333 。
    http://233.dog/f_62094421.png
    lslqtz
        20
    lslqtz  
       2016-05-30 14:15:13 +08:00   ❤️ 1
    @lyragosa 是的,因此我还是用 49 。
    013231
        21
    013231  
       2016-06-01 10:44:48 +08:00
    文章中關於 Nginx 配置的部分有些問題:

    1. http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_stapling
    "If the ssl_certificate file does not contain intermediate certificates, the certificate of the server certificate issuer should be present in the ssl_trusted_certificate file."
    由於上面 ssl_certificate 已經使用了 fullchian.pem, 合成 root_ca_cert_plus_intermediates 證書并配置 ssl_trusted_certificate 的部分是可以省掉的.

    2.` resolver`的作用是"resolve names of upstream servers into addresses", 在這個配置中, resolver 是用來解析 OCSP 服務器的域名的, 和你自己的域名沒有關係. 事實上如果這裡把 resolver 設為 DNSPod 的 NS, 會導致 Let's Encrypt OCSP 服務器的域名無法解析.
    wxiluo
        22
    wxiluo  
    OP
       2016-06-02 12:34:29 +08:00
    @013231 感谢指正。

    问题 1 ,我确实知道可以省略,但不清楚为什么模版中没有省去,猜测可能有兼容问题?我实际去掉 ssl_trusted_certificate 后,确实没有任何问题。

    问题 2 , resolver ,这个我确实没有查证,立刻修改。
    wxiluo
        23
    wxiluo  
    OP
       2016-06-02 12:42:30 +08:00
    @013231 已经更新原文。再次感谢。🙏
    013231
        24
    013231  
       2016-06-02 19:53:36 +08:00
    @wxiluo 生成的那個模板並不知道你的 ssl_certificate 是否含中間證書呀. 如果用了不含中間證書的 cert.pem, ssl_trusted_certificate 就不能省略. 你的文章中 ssl_certificate 用了 fullchain.pem, 所以後面就不用設置 ssl_trusted_certificate 了.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3132 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 12:48 · PVG 20:48 · LAX 04:48 · JFK 07:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.