发表日期:2021-04-04 13:02文章编辑:jianzhan浏览次数: 标签:
飘易有一台网络服务器安裝了LNMP 1.5的运作自然环境,随后建立虚似服务器VHOST的情况下,应用了Let sEncrypt建立了完全免费的SSL资格证书,这一资格证书是彻底完全免费的,可是有3个月的限定,寓意着3个月后就必须续签,好运的是LNMP早已全自动给我们加上了一个方案每日任务,用以Let sEncrypt SSL完全免费资格证书的全自动续签。
LNMP 出示了一个 ACME.SH 脚本制作,便捷大家实行SSL续签。
查询cron方案每日任务:
crontab -l 52 0 * * * /usr/local/acme.sh /acme.sh --cron --home /usr/local/acme.sh /dev/null
这一全自动续签的脚本制作 acme.sh 会每日全自动运作一次。
可是飘高发目前好多个网站域名的SSL资格证书期满了以后,并沒有全自动续签取得成功。因此手动式实行下列这一脚本制作:
/usr/local/acme.sh /acme.sh --cron --home /usr/local/acme.sh
发觉出错以下:
[Fri Jan 17 14:16:21 CST 2020] Renew: [Fri Jan 17 14:16:24 CST 2020] Single domain= [Fri Jan 17 14:16:24 CST 2020] Getting domain auth token for each domain [Fri Jan 17 14:16:24 CST 2020] Getting webroot for domain= [Fri Jan 17 14:16:24 CST 2020] Getting new-authz for domain= [Fri Jan 17 14:16:27 CST 2020] The new-authz request is ok. [Fri Jan 17 14:16:27 CST 2020] Verifying: [Fri Jan 17 14:16:31 CST 2020] :Verify error:Invalid response from .well-known/acme-challenge/JyjWREY2lkrcpAFAD5gkZ0LffaTB2xQxB9Id-my5Puw: [Fri Jan 17 14:16:31 CST 2020] Please check log file for more details: /usr/local/acme.sh/acme.sh.log [Fri Jan 17 14:16:32 CST 2020] Error renew .
从这一不正确看来,能看到SSL必须认证网站域名下的这一文档:
/.well-known/acme-challenge/JyjWREY2lkrcpAFAD5gkZ0LffaTB2xQxB9Id-my5Puw
随后,再查询系统日志:
[Fri Jan 17 14:16:27 CST 2020] _currentRoot= /storage/wwwroot/ [Fri Jan 17 14:16:27 CST 2020] wellknown_path= /storage/wwwroot//.well-known/acme-challenge [Fri Jan 17 14:16:27 CST 2020] writing token:JyjWREY2lkrcpAFAD5gkZ0LffaTB2xQxB9Id-my5Puw to /storage/wwwroot//.well-known/acme-challenge/JyjWREY2lkrcpAFAD5gkZ0LffaTB2xQxB9Id-my5Puw [Fri Jan 17 14:16:27 CST 2020] Changing owner/group of .well-known to www:www ...... [Fri Jan 17 14:16:31 CST 2020] :Verify error:Invalid response from .well-known/acme-challenge/JyjWREY2lkrcpAFAD5gkZ0LffaTB2xQxB9Id-my5Puw:
能看到Let sEncrypt ACME.sh 这一脚本制作在写认证文档时,写错相对路径了:
/storage/wwwroot//.well-known/acme-challenge/JyjWREY2lkrcpAFAD5gkZ0LffaTB2xQxB9Id-my5Puw
这一相对路径恰当的应当是
/storage/wwwroot//public/.well-known/acme-challenge/JyjWREY2lkrcpAFAD5gkZ0LffaTB2xQxB9Id-my5Puw
留意,恰当的相对路径是正中间多了一个 public 文件目录。为何是那样?
由于这一新项目是一个 Laravel 新项目,而 Laravel 新项目默认设置的对外开放的文件目录便是 public 文件目录,而我还在建立虚似服务器的情况下,应用的是网站根目录,建立好服务器以后,手工制作去改动了 nginx 的配备文档,把
root /storage/wwwroot/;
改动为
root /storage/wwwroot//public;
这就造成 Let sEncrypt 纪录的初始相对路径不是带 public 的相对路径,要处理这一难题,便是把SSL的配备文档里的相对路径也改为有 public 文件目录的便可以了:
lnmp或lnmpa 得话 /usr/local/nginx/conf/ssl/网站域名/网站域名.conf lamp得话 /usr/local/apache/conf/ssl/网站域名/网站域名.conf
将
Le_Webroot= /storage/wwwroot/
改动为
Le_Webroot= /storage/wwwroot//public
再次实行acme脚本制作:
/usr/local/acme.sh /acme.sh --cron --home /usr/local/acme.sh
回到:
[Fri Jan 17 14:36:05 CST 2020] Renew: [Fri Jan 17 14:36:06 CST 2020] Single domain= [Fri Jan 17 14:36:06 CST 2020] Getting domain auth token for each domain [Fri Jan 17 14:36:06 CST 2020] Getting webroot for domain= [Fri Jan 17 14:36:06 CST 2020] Getting new-authz for domain= [Fri Jan 17 14:36:10 CST 2020] The new-authz request is ok. [Fri Jan 17 14:36:10 CST 2020] Verifying: [Fri Jan 17 14:36:14 CST 2020]&ess [Fri Jan 17 14:36:14 CST 2020] Verify finished, start to sign. [Fri Jan 17 14:36:15 CST 2020] Cert&ess. [Fri Jan 17 14:36:15 CST 2020] Your cert is in /usr/local/nginx/conf/ssl//.cer [Fri Jan 17 14:36:15 CST 2020] Your cert key is in /usr/local/nginx/conf/ssl//.key [Fri Jan 17 14:36:16 CST 2020] The intermediate CA cert is in /usr/local/nginx/conf/ssl//ca.cer [Fri Jan 17 14:36:16 CST 2020] And the full chain certs is there: /usr/local/nginx/conf/ssl//fullchain.cer [Fri Jan 17 14:36:16 CST 2020] Run reload cmd: /etc/init.d/nginx reload Reload service nginx... done [Fri Jan 17 14:36:16 CST 2020] Reload&ess
SSL 续签取得成功!
而且之后再到期的情况下,CRON方案每日任务也会全自动续签了。
【别的难题】
1、假如以前在nginx的配备文档里开启了 http 强制性自动跳转到 https 的配备,这一地区也会续签不成功,必须临时性先将这一段配备注解掉:
# http跳转301自动跳转https #if ($server_port !~ 443){ # rewrite ^(.*)$ pre>缘故非常简单,如今https早已到期了,再强制性自动跳转到https去认证下边的文档,自然不是取得成功的。
2、假如给你PC站和移动站全自动自动跳转兼容过,也必须留意临时性撤销全自动自动跳转,例如 手机端的配备:
# PC顾客端自动跳转 if ($http_user_agent !~* (mobile|nokia|iphone|ipad|android|samsung|htc|blackberry)) { #rewrite ^(.*) pre>不然认证文档会自动跳转到相匹配的PC端相对路径下来拉取,这一自然是不正确的。
3、頻率限定不正确
new-authz error: { type : urn:acme:error:rateLimited , detail : Error creating new authz :: too many failed authorizations recently: see docs/rate-limits/ , status : 429}这一是表明开启了SSL验证的頻率限定了,现阶段有一个限定是:每一个帐户每钟头每网站域名有数最多认证不成功 5 次的限定。大家略微等一会就行了。有关这一頻率限定,实际参照:
docs/rate-limits/