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

2016-10-01 10:47:28 +08:00
 tumbzzc

昨天搞了一晚上的 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@yourname.com -d inotepad.cn -d www.inotepad.cn

将目录、邮箱和域名换成你自己的
之后看到

就说明安装证书成功了!
并且能看到证书的目录:
/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://你的域名。看是否成功~

7103 次点击
所在节点    SSL
13 条回复
tumbzzc
2016-10-01 10:52:19 +08:00
所有的一切都是从网上找来的~~~我一个小白是不可能原创出文章的
lygmqkl
2016-10-01 11:16:38 +08:00
收藏之 问个小白问题 现在所有浏览器都支持 https 了吗? 如果有不支持的怎么办?
tumbzzc
2016-10-01 11:21:20 +08:00
@lygmqkl 没看到有不支持的
Tink
2016-10-01 11:24:47 +08:00
@lygmqkl 你应该问现在所有浏览器都支持 letsencrypt 的 ca 了吗.....
xujialiang
2016-10-01 11:31:44 +08:00
我想问个问题,就是如果我的 nginx 只是用来做反代,没有网站根目录,那么怎么配?谁知道捏?
Tink
2016-10-01 11:39:48 +08:00
@xujialiang 我和你的情况一样,目前是每次更新证书前, kill 掉 nginx ,然后 python 起一个 simple http server ,更新完之后 kill 掉 python ,重启 nginx
xJogger
2016-10-01 11:40:45 +08:00
我选择 https://github.com/xdtianyu/scripts/tree/master/le-dns
满足条件后基本一键生成证书, VPS 还不需要怎么配置。
Tink
2016-10-01 11:44:39 +08:00
@xujialiang@xujialiang 一个脚本就 OK ,这样主要是免去了修改或者添加 dns 解析的问题
Showfom
2016-10-01 15:03:34 +08:00
哪要那么麻烦....acme.sh 欢迎你
MaiCong
2016-10-01 15:04:52 +08:00
官网有教程,两三句命令的事搞的这么麻烦?
kid740246048
2016-10-01 16:18:46 +08:00
可以直接安装 certbot ,使用更方便
xujialiang
2016-10-01 16:28:13 +08:00
@Tink thanks~~~~~~
checkking2014
2017-03-13 12:43:49 +08:00
请问怎么避免关闭服务器呢?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/310130

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX