昨天搞了一晚上的 Let's Encrypt 都没成功,一直说 DNS 问题,或者是不能找到 A 记录。
后来才知道,原来是尼玛用了 cdn 的原因!!!于是关闭 cdn ,然后睡觉,等待第二天再来弄。
然后早上的时候又出现问题:
Let's Encrypt 部署要求关闭 nginx 的 80 端口-->但是关闭 80 端口之后-->网站就不能用了-->然后就不能通过验证!
最后在 V2EX 上提问,哈哈,很感谢 v2 的站长 @Livid 给出的代码!
那么这里就简单记录一下部署过程。
首先假设你已经在 vps 上部署了网站!没有的话可以参考我的第一篇文章部署一个 typecho 博客!其实不论是自己写的网站,还是其他网站程序,都是大同小异的!主要是要知道:
/usr/local/nginx/conf
。如果是自己安装的 nginx ,根目录可能在:/etc/nginx/
。/home/wwwroot/inotepad.cn
。知道这两个目录之后就好办了!
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
chmod +x letsencrypt-auto
./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 文件
打开你的 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
重新加载配置文件以生效!
/sbin/iptables -I INPUT -p tcp --dport 443 -j ACCEPT
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.