Let's Encrypt 使用 webroot 方式签发证书一直失败?

2016-10-24 21:54:57 +08:00
 jsjcjsjc

./certbot-auto certonly --webroot -w /usr/share/nginx/html -d cl.getpocket.net

./certbot-auto certonly --webroot -w /var/www/html -d cl.getpocket.net

这 2 条命令为什么总是提示 Could not connect to cl.getpocket.net ?尝试一下 standalone 是可以的,所以应该是 nginx 的 root 位置我搞错了?

主要是想把 50 个域名的证书都放在一个地方,所以才想用 webroot 。。。。

9085 次点击
所在节点    NGINX
42 条回复
iA7489
2016-10-25 17:35:07 +08:00
无责任推荐 acme.sh 签发证书
w99wen
2016-10-25 17:37:24 +08:00
@iA7489 警察叔叔,就是他
chunchu
2016-10-25 17:52:18 +08:00
@w99wen
有 http 的连接,在 https 下会出现 css 文件不能加载,你需要将 http 部分也代理一下
lightening
2016-10-25 17:52:57 +08:00
@w99wen 看了前面留言,等我回家再看……

CSS 不能加载,我猜是从 HTTP url load 的?反代的所有 headers 都加上了吗?
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
类似这样
lslqtz
2016-10-25 18:36:12 +08:00
@jsjcjsjc 你知道 https 吗。。
lslqtz
2016-10-25 18:36:46 +08:00
@jsjcjsjc 不对,当我没说。。
你申请 ssl 的时候,要改成用地址,不能挂反代
yidinghe
2016-10-25 18:43:33 +08:00
用 root 运行吧,在这之前确保 nginx 配置文件配置好了相应的域名,如果有 alias 的话每个域名都要配置到。
jsjcjsjc
2016-10-25 19:04:35 +08:00
@fangdingjun @lightening @lslqtz @yidinghe
估计知道原因了~~~
我的域名虽然指向了 ip ,但是在 nginx 的配置文件里面没有为所有的域名设置 root/www 的路径,所以用 webroot 的话不能验证。。。

因为我只想做一下 https 的 301 转发。。。。。想这样的,不需要指定 root 的路径。。
由于域名比较多想把证书都放在一起,以后新加的证书也放在一一个文件下。。。大家有办法吗?

server
{
listen 80;
server_name airtranst.com www.airtranst.com *.airtranst.com;
location / {
rewrite ^/(.*)$ https://airtranst.com$1 permanent;
}
}

server {
server_name airtranst.com;
listen 443;

ssl on;
ssl_certificate /etc/letsencrypt/live/airtranat.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/airtranat.com/privkey.pem;

return 301 http://artransat.com$request_uri;
}
lightening
2016-10-25 19:49:29 +08:00
https://github.com/Neilpang/acme.sh 会把所有证书放在 ~/.acme.sh 下吧
jsjcjsjc
2016-10-25 20:37:50 +08:00
@lightening 这么牛~~~我去试试看
wangxiaodong
2016-10-25 22:04:08 +08:00
楼上各位,都忘了 Let's Encrypt 是支持 DNS 验证的,根本不需要 webroot 方式。

服务器什么都不用做,直接到域名商获取 API KEY ,通过 https://github.com/xenolf/lego 开源项目直接 DNS 进行 HTTPS 认证即可。

lego 的 Docker 容器是: docker pull xenolf/lego

我网站的所有域名都是通过 lego 的 dns 方式签发的, 大家可以点开我网站的 https 证书进行查看

最后贴下我的网站 https://congci.com
jsjcjsjc
2016-10-25 22:46:05 +08:00
@wangxiaodong 一个比一个牛~~~
lightening
2016-10-26 00:59:34 +08:00
@wangxiaodong 用 DNS 方式签发时自动 renew 时需要新 token 吧?需要每三个月手工 update DNS ?
lightening
2016-10-26 01:01:58 +08:00
@wangxiaodong 哦,做了各大 DNS 运营商的 api 啊,不错。
lslqtz
2016-10-26 10:38:44 +08:00
@jsjcjsjc 求给草榴的代理密码
jsjcjsjc
2016-10-26 11:56:43 +08:00
@lslqtz 啥叫代理密码?
lslqtz
2016-10-26 13:47:47 +08:00
@jsjcjsjc 用户名密码
zhfish
2016-10-26 17:45:27 +08:00
jsjcjsjc
2016-10-26 19:06:25 +08:00
@lslqtz 我没有设置啊...
liyangyijie
2016-10-27 09:23:53 +08:00
@w99wen
server {
listen 80;
listen 443 ssl http2;
add_header Strict-Transport-Security "max-age=63072000; preload";
server_name xx.ml;
ssl_certificate /etc/nginx/xx.ml.crt;
ssl_certificate_key /etc/nginx/xx.ml.key;
location / {
proxy_cache cache_one;
proxy_cache_valid 200 304 3d;
proxy_cache_key $host$uri$is_args$args;
proxy_set_header Host www.t66y.com;
proxy_set_header Accept-Encoding "";
#insu
#proxy_pass http://45.64.64.102/;
#cloudf
proxy_pass http://104.27.120.116/;
subs_filter_types text/css text/xml text/javascript;
subs_filter http://www.viidii.info https://xx.ml/css;
subs_filter www.t66y.com xx.ml;
#替换 dmm 图片
subs_filter http://p.dmm.co.jp http://202.6.244.170;
subs_filter http://pics.dmm.co.jp http://202.6.244.170;
subs_filter http://image.news.dmm.co.jp http://103.254.144.37;
sub_filter_once off;
proxy_redirect http://www.t66y.com/ /;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
}
location /css {
proxy_pass http://www.viidii.info/;
proxy_set_header Accept-Encoding "";
}
}

可登录 css 完整

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

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

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

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

© 2021 V2EX