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

centos 下 nginx 部署 Let's Encrypt 永久免费 SSL 证书过程--感谢 v2ex,反馈部署过程

  •  1
     
  •   tumbzzc · 2016-10-01 10:47:28 +08:00 · 7106 次点击
    这是一个创建于 2973 天前的主题,其中的信息可能已经有所发展或是发生改变。

    letsencrypt.png

    昨天搞了一晚上的 Let's Encrypt 都没成功,一直说 DNS 问题,或者是不能找到 A 记录。
    后来才知道,原来是尼玛用了 cdn 的原因!!!于是关闭 cdn ,然后睡觉,等待第二天再来弄。
    然后早上的时候又出现问题:
    Let's Encrypt 部署要求关闭 nginx 的 80 端口-->但是关闭 80 端口之后-->网站就不能用了-->然后就不能通过验证!
    最后在 V2EX 上提问,哈哈,很感谢 v2 的站长 @Livid 给出的代码!

    那么这里就简单记录一下部署过程。

    首先假设你已经在 vps 上部署了网站!没有的话可以参考我的第一篇文章部署一个 typecho 博客!其实不论是自己写的网站,还是其他网站程序,都是大同小异的!主要是要知道:

    1. nginx 的配置文件目录。比如我用 lnmp , nginx 配置文件目录就在:/usr/local/nginx/conf。如果是自己安装的 nginx ,根目录可能在:/etc/nginx/
    2. 网站的根目录。比如我的根目录就在:/home/wwwroot/inotepad.cn

    知道这两个目录之后就好办了!

    1 、获取 Let's Encrypt

    git clone https://github.com/letsencrypt/letsencrypt
    cd letsencrypt
    chmod +x letsencrypt-auto
    

    2 、执行安装证书

    ./letsencrypt-auto certonly -a webroot --webroot-path=/home/wwwroot/inotepad.cm --email [email protected] -d inotepad.cn -d www.inotepad.cn
    

    将目录、邮箱和域名换成你自己的
    之后看到
    QQ 截图 20161001103030.png
    就说明安装证书成功了!
    并且能看到证书的目录:
    /etc/letsencrypt/live/inotepad.cn/
    该目录下有四个文件

    cert.pem  - Apache 服务器端证书  
    chain.pem  - Apache 根证书和中继证书  
    fullchain.pem  - Nginx 所需要 ssl_certificate 文件  
    privkey.pem - 安全证书 KEY 文件  
    

    3 、修改 nginx 配置文件

    打开你的 nginx 配置文件,我的是:/usr/local/nginx/conf/vhost/inotepad.cn.conf
    修改记录:

    server  
        {  
            listen 80;
            server_name www.inotepad.cn inotepad.cn;
            return	301 https://$server_name$request_uri;  #非 http 跳转到 https
        }
    server
        {
            listen 443 ssl;
            ssl on;
            ssl_certificate /etc/letsencrypt/live/inotepad.cn/fullchain.pem;  #Nginx 所需要 ssl_certificate 文件
            ssl_certificate_key /etc/letsencrypt/live/inotepad.cn/privkey.pem; #安全证书 KEY 文件
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            ssl_prefer_server_ciphers on;
            ssl_ciphers AES256+EECDH:AES256+EDH:!aNULL;
    
            server_name www.inotepad.cn inotepad.cn;
            index index.html index.htm index.php default.html default.htm default.php;
            root  /home/wwwroot/notepad;
            [...] #更多的配置
    }
    

    保存之后,命令行输入
    nginx -s reload
    重新加载配置文件以生效!

    vultr 没有开启 443 端口,还需要自己开启 443 端口:

    /sbin/iptables -I INPUT -p tcp --dport 443 -j ACCEPT

    至此,部署 Let's Encrypt 已经成功了!可以试着打开 https://你的域名。看是否成功~

    13 条回复    2017-03-13 12:43:49 +08:00
    tumbzzc
        1
    tumbzzc  
    OP
       2016-10-01 10:52:19 +08:00
    所有的一切都是从网上找来的~~~我一个小白是不可能原创出文章的
    lygmqkl
        2
    lygmqkl  
       2016-10-01 11:16:38 +08:00 via iPhone
    收藏之 问个小白问题 现在所有浏览器都支持 https 了吗? 如果有不支持的怎么办?
    tumbzzc
        3
    tumbzzc  
    OP
       2016-10-01 11:21:20 +08:00
    @lygmqkl 没看到有不支持的
    Tink
        4
    Tink  
       2016-10-01 11:24:47 +08:00 via iPhone
    @lygmqkl 你应该问现在所有浏览器都支持 letsencrypt 的 ca 了吗.....
    xujialiang
        5
    xujialiang  
       2016-10-01 11:31:44 +08:00
    我想问个问题,就是如果我的 nginx 只是用来做反代,没有网站根目录,那么怎么配?谁知道捏?
    Tink
        6
    Tink  
       2016-10-01 11:39:48 +08:00 via iPhone
    @xujialiang 我和你的情况一样,目前是每次更新证书前, kill 掉 nginx ,然后 python 起一个 simple http server ,更新完之后 kill 掉 python ,重启 nginx
    xJogger
        7
    xJogger  
       2016-10-01 11:40:45 +08:00
    我选择 https://github.com/xdtianyu/scripts/tree/master/le-dns
    满足条件后基本一键生成证书, VPS 还不需要怎么配置。
    Tink
        8
    Tink  
       2016-10-01 11:44:39 +08:00 via iPhone
    @xujialiang@xujialiang 一个脚本就 OK ,这样主要是免去了修改或者添加 dns 解析的问题
    Showfom
        9
    Showfom  
       2016-10-01 15:03:34 +08:00 via iPhone   ❤️ 1
    哪要那么麻烦....acme.sh 欢迎你
    MaiCong
        10
    MaiCong  
       2016-10-01 15:04:52 +08:00 via iPhone
    官网有教程,两三句命令的事搞的这么麻烦?
    kid740246048
        11
    kid740246048  
       2016-10-01 16:18:46 +08:00 via Android
    可以直接安装 certbot ,使用更方便
    xujialiang
        12
    xujialiang  
       2016-10-01 16:28:13 +08:00
    @Tink thanks~~~~~~
    checkking2014
        13
    checkking2014  
       2017-03-13 12:43:49 +08:00
    请问怎么避免关闭服务器呢?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5837 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 02:00 · PVG 10:00 · LAX 18:00 · JFK 21:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.