我有这个nginx.conf,它只是将http重定向到Https。现在对于acme-Client的第一次运行,我假设重定向到HTTPS将是一个问题,因为对于新的HTTPS域没有cert或nginx服务器块。Acme-Client和letsEncrypt有什么秘诀来处理这种情况吗?
由于这种情况很少发生,所以我设置了nginx.conf文件,其中包含要注释掉并启用的行,希望这是不言而喻的。
有什么评论吗?小费?我是不是想多了?文件如下:
用户WWW;
#无人用户;
Worker_Processs1;
#此默认错误日志路径已编译,以确保配置解析
#错误记录在某个位置,特别是在无人值守引导期间
#通常不会记录在任何地方。这条路将在每一个ngix上被触摸到
#无论此处配置的错误日志位置如何,都会启动。看见
#
#ERROR_LOG/var/log/nginx/error.log;
#
#PIDLogs/nginx.id;
事件{
Worker_Connections 512;
}
Http{
包括MIME.TYPE;
DEFAULT_TYPE应用/八位字节流;
#LOG_FORMAT Main‘$REMOTE_ADDR-$REMOTE_USER[$TIME_LOCAL]“$REQUEST”’
#‘$STATUS$BODY_BYTES_SEND“$http_referer”’
#‘“$http_USER_AGENT”“$http_x_Forwarded_For”’;
#ACCESS_LOG日志/acces.log main;
发送文件打开;
#tcp_nopush on;
#Keep Alive_Timeout 0;
保活_超时65;
继续前进;
#This“服务器将用户从http踢到HTTPS#
服务器{
听80;
服务器名称lazyranch.site www.lazyranch.site;
#ACCESS_LOG LOGS/host.acces.log main;
#第一次运行acme时,注释掉这个重定向#
#并启用(删除#)此“位置”#
#LOCATION/.WARKNOWN/ACEME-CHANGING/{
#PROXY_REDIRECT关闭;
#DEFAULT_TYPE“文本/普通文本”;
#alias/usr/local/www/acme/;
#Allow All;
}
#HTTPS服务器
#
服务器{
监听443 SSLHTP2;
服务器名称lazyranch.site www.lazyranch.site;
Ssl_证书/usr/local/etc/ssl/acme/lazygranch.site/fullchain.pem;
Ssl_证书_密钥/usr/local/etc/ssl/acme/private/lazygranch.site/privkey.pem;
共享的SSLSESSION_CACHE:SSL1M;
SSLSession_TIMEOUT 5M;
SSL_CIPHERS高:!空:!MD5;
启用SSL_PERFER_SERVER_CIPHERS;
位置/.知名/Acme-Challenges/{
代理重定向关闭;
DEFAULT_TYPE“文本/普通”;
别名/usr/local/www/acme/;
允许所有;
}
位置/{
根/usr/local/www/nginx/lazygranch.site/public_html;
索引index.html index.htm;
}
}
},我明白您的意思,但此方法是否适用于续订?
第一次尝试回复电子邮件时,您会不会觉得不舒服,将.well-now/acme-challenges请求留在http中,而将所有其他请求重定向到https?,?这就是了。
我仍然需要调试续订脚本。但我对这个鸡和蛋的问题思考了一段时间,读了一些类似的帖子,但并不完全是我的问题,我想我应该咨询一下“蜂巢”。也就是说,我知道我在最终产品中会有一个http到HTTPS重定向,所以我想了解问题所在。
我努力设置了一些逻辑陷阱来捕获对新nginx服务器的acme-client请求,结果却发现nginx.conf无论如何都需要编辑,所以尝试聪明是没有用的。从第一天开始,您可以在conf中保留http到https的重定向。
如果您对.Well-Know/*(质询)请求进行例外处理。
如果您控制整个服务器…
在《Apache2》中,我在这个全球背景下取得了成功:
别名/.well-now/acme-challengl//local/Folder/acme-challenges/
强制将所有vhost挑战放在一个文件夹中,我将进入nginx列表,看看这是否可能。尽管如此,我还是需要处理http与https之间的关系。
在HTTPS下续订证书有什么优势吗?如果没有,也许可以设置一个更花哨的重定向,永远不会将acme客户端的挑战重定向到HTTPS。是的,如果你不想要任何http流量,你仍然需要将http重定向到HTTPS。
这是它自己的问题。
问题是没有适当的考虑,在强制HTTPS之后,http acme-challenges可能失败。
拥有仅从HTTPS重定向中排除挑战的能力似乎满足了这两个要求。为清楚起见,acme-lient.首选使用纯http。在浏览器中,此nginx.conf执行以下操作:
1)http://www.domain.com/.well-known/acme-challenge/yadayada转到
Acme目录。
到http://www.domain.com/.well-known/acme-challenge/yadayada,然后转到
Acme目录
3)http//www.domain.com/notwellnow变成
我还没有和客户测试过这一点,因为我不想彻夜不眠。您可以看到,我使用了307将acme https返回到http。我不想让浏览器记住重定向。
用户WWW;
#无人用户;
Worker_Processs1;
#此默认错误日志路径已编译,以确保配置解析
#错误记录在某个位置,特别是在无人值守引导期间
#通常不会记录在任何地方。这条路将在每一个ngix上被触摸到
#无论此处配置的错误日志位置如何,都会启动。看见
#
#ERROR_LOG/var/log/nginx/error.log;
#
#PIDLogs/nginx.id;
事件{
Worker_Connections 512;
}
Http{
包括MIME.TYPE;
DEFAULT_TYPE应用/八位字节流;
#LOG_FORMAT Main‘$REMOTE_ADDR-$REMOTE_USER[$TIME_LOCAL]“$REQUEST”’
#‘$STATUS$BODY_BYTES_SEND“$http_referer”’
#‘“$http_USER_AGENT”“$http_x_Forwarded_For”’;
#ACCESS_LOG日志/acces.log main;
发送文件打开;
#tcp_nopush on;
#Keep Alive_Timeout 0;
保活_超时65;
继续前进;
#此“服务器”将用户从http踢到HTTPS,除非有ACEE挑战#
服务器{
听80;
服务器名称lazyranch.site www.lazyranch.site;
#ACCESS_LOG LOGS/host.acces.log main;
#选择所有端口80 ACME请求
位置/.知名/Acme-Challenges/{
代理重定向关闭;
DEFAULT_TYPE“文本/普通”;
别名/usr/local/www/acme/;
允许所有;
}
#此时的目标只是将http转换为HTTPS
位置/{
}
}
#HTTPS服务器
#
服务器{
监听443 SSLHTP2;
服务器名称lazyranch.site www.lazyranch.site;
Ssl_证书/usr/local/etc/ssl/acme/lazygranch.site/fullchain.pem;
Ssl_证书_密钥/usr/local/etc/ssl/acme/private/lazygranch.site/privkey.pem;
共享的SSLSESSION_CACHE:SSL1M;
SSLSession_TIMEOUT 5M;
SSL_CIPHERS高:!空:!MD5;
启用SSL_PERFER_SERVER_CIPHERS;
#这里的假设是ACEME挑战至少成功运行过一次
#因为系统管理员已经编写了代码来处理端口443下的这个特定域。
#但是证书可能会有问题,所以最好切换到端口80
#但我们不能丢了挑战代码
位置/.知名/Acme-Challenges/{
返回307 http://www.lazygranch.site$request_uri;
}
#否则正常处理
位置/{
根/usr/local/www/nginx/lazygranch.site/public_html;
索引index.html index.htm;
}
}
},以下是基于以上配置的实际预期结果(#2不同):
Http://www.domain.com/.well-known/acme-challenge/yadayada去了
Acme目录。
Http//www.domain.com/notwellKnowledge成为
我在这里记录了我所有的测试。阻塞论坛是没有用的,因为我认为nginx.conf仍然需要两周的时间来绕过缓存问题。
我不愿意把实际的链接放在这里,因为他们最终会是404。但这是有问题的链接,因此不存在沟通错误。
您应该切换到纯http。如果您的缓存是清空的,我最终会在我的服务器上看到200响应。你可以告诉我你点击链接的确切时间,我会在没有你的IP地址的情况下发布回复。
我还在宇宙射线会导致显示index.html的事件中添加了一个简单的html文件。
它还可以做http到HTTPS的事情。,http://www.lazygranch.site/.well-known/acme-challenge/test.txt
两人都回了一声:“问候!”
但是为什么您要将HTTPS Acme-Challenges重定向到HTTP?如果证书有问题,我宁愿让挑战转到http。显然,letsEncrypt有三种模式(挑战?)。一个是域名系统,我没有看到它被提供,但我在帖子中看到了它的引用。另外两个是HTTPS和http。我偶然看到一些帖子,其中HTTPS导致了续订问题。由于letEncrypt可以与http一起使用,我想我应该将其设置为默认设置。
还要注意的是,如果我为一般网站设置了自动http to https,我需要防止挑战被重定向到https,而在第一次运行时,HTTPS甚至不存在。
?基本上,我在这里保护我的基地,因为这应该是全自动的。
我怀疑letsEncrypt挑战甚至连浏览器缓存都做不到,但不妨学习一下如何强制新下载,作为一项有用的技能。我可以在头文件中这样做,但不确定一般情况下如何为文件做这件事。获取新证书或续订证书的请求可以指定您喜欢的方法(http|HTTPS|DNS)。
因此,将任何协议重定向到任何其他协议只会减少您的可用选择。
如果站点需要是HTTPS,则将所有流量重定向到HTTPS;但将质询请求排除在重定向之外。这样你就有了选择余地。
这个想法是你决定你想要的挑战是哪种方法,网站应该总是以这种方式接受它。
是的,重定向可以,也应该起作用,但为什么你要重定向呢?当你可以以任何你想要的方式请求挑战时。
或者甚至请求两次(一次在http中,然后立即在HTTPS中-成功的机会增加了一倍),我不清楚是否有第一次运行命令或过程,因为在FreeBSD引用上的说明。指示是手动运行每周脚本,如[QUOTE=“gariac,POST:14,TOPIC:35991”]
指示是只需手动运行每周脚本
[/报价]
这是你应该做的。
尽管我会编写脚本/自动执行该过程。
您可以显示您打算运行的每周脚本吗?
我唯一的补充很可能是:
为http运行一次脚本
为HTTPS运行一次脚本
(这样就减少了失败的可能性。),/usr/local/etc/periical/Week is
Usr/local/etc/acme/acme-client.sh使用
#!/bin/sh-e
BASEDIR=“/usr/local/etc/acme”
SSLDIR=“/usr/local/etc/ssl/acme”
DOMAINSFILE=“/usr/local/etc/letsencrypt/domains.txt”
ACME_FLAGS=“-v-e-m-b-n-N”
CAT“${DOMAINSFILE}”|读取域行时;执行
当过期时间>30天时设置+e#rc=2
Acme-客户端${ACME_FLAGS}${DOMAIN}${LINE}
Rc=$?
Set-e
[$rc-ne 0-a$rc-ne 2]&&退出$rc
完成
基本上是从
我是从不同的指南开始的,所以我的domain.txt在不同的位置。
我是通过运行acme-client.sh外壳(而不是周刊)来获得证书的。有错误的周刊,加里亚克:
如果证书有问题,我宁愿让挑战转到http。显然,letsEncrypt有三种模式(挑战?)。一个是域名系统,我没有看到它被提供,但我在帖子中看到了它的引用。另外两个是HTTPS和http。我偶然看到一些帖子,其中HTTPS导致了续订问题。由于letEncrypt可以与http一起使用,我想我应该将其设置为默认设置。
为了尝试对@RG305的S关于这一点的观察进行一点扩展,有您提到的三种方法,但在特定情况下使用的方法由您运行的客户端选择。证书颁发机构不是简单地随机或按某种顺序尝试它们,而是根据您的客户端所说的它被选择使用的内容。
只有HTTP-01方法(它最初在端口80上建立到HTTP的连接)愿意遵循HTTP重定向在另一个URL重试验证。(这可以是同一服务器上的HTTP或HTTPS URL,也可以是不同服务器上的URL,包括任意指定的端口。)但是,初始连接将始终使用端口80的HTTP,并且必须使用有效的回复进行应答,要么是请求的文件内容,要么是HTTP重定向消息。
TLS-SNI-01方法(最初在端口443上使用TLS建立连接)实际上并不以任何有意义的方式使用HTTP,也不愿意遵循重定向。它希望立即提供特定的自定义证书。如果未提供此证书,则验证失败。这意味着,例如,如果您有代表服务器终止HTTPS连接的CDN或防火墙,则无论您设置了哪种类型的HTTP重定向,都不能使用此验证方法。如果CDN或防火墙使用任何不同于预期的自定义证书进行响应,那么这个过程就结束了。我做了一个称为RTMF的新奇的东西,从技术上讲是RTF手册页面。对于acme-客户端,默认的http端口为80。您仍然需要nginx.conf位置陷阱来防止http到HTTPS的转换,但应该不需要用于将HTTPS踢回http以应对挑战的nginx.conf代码。
奇怪的是,手册建议每天检查证书更新。考虑到30天的宽限期,每周应该就足够了。
奇怪的是,手册建议每天检查证书更新。考虑到30天的宽限期,每周应该足够了。
我们建议一天一次,部分原因是证书可以被吊销。此外,一些网站有很多证书,应该随着时间的推移逐步续订,而不是在同一天全部续订。此外,我们认为在30天的宽限期内了解任何续订问题将是有价值的,特别是因为可能负责解决问题的人可能在某个时候度假。