之前通过阿里云申请的SSL免费证书(1年)到期了,想着如果每年都要手动上传KEY/PEM信息会有些麻烦,不如使用1Panel自带的证书申请+自动续签好了。于是尝试将某二级域名也替换成Let’s Encrypt免费证书。
结果以HTTP形式连着申请了两次都失败了,报错信息如下:
1 2 3 4 5 6 7 8 9
| 2024/09/09 16:20:37 开始申请证书,域名 [***.youdiandongxi.com] 申请方式 [HTTP] 2024/09/09 16:20:37 [INFO] [***.youdiandongxi.com] acme: Obtaining bundled SAN certificate 2024/09/09 16:20:37 [INFO] [***.youdiandongxi.com] AuthURL: https://acme-v02.api.letsencrypt.org/acme/authz-v3/************ 2024/09/09 16:20:37 [INFO] [***.youdiandongxi.com] acme: Could not find solver for: tls-alpn-01 2024/09/09 16:20:37 [INFO] [***.youdiandongxi.com] acme: use http-01 solver 2024/09/09 16:20:37 [INFO] [***.youdiandongxi.com] acme: Trying to solve HTTP-01 2024/09/09 16:20:41 [INFO] Deactivating auth: https://acme-v02.api.letsencrypt.org/acme/authz-v3/************ 2024/09/09 16:20:42 申请 [***.youdiandongxi.com] 证书失败, error: one or more domains had a problem: [***.youdiandongxi.com] acme: error: 403 :: urn:ietf:params:acme:error:unauthorized :: **.**.**.**: Invalid response from ....
|
最开始以为是申请的证书达到上限了,去Let’s Encrypt官网文档查阅了一番并没有看到有注册量上限,只有以下几种情况会报错:
- 所有签发请求均受每周 5 个重复证书的限制;
- 所有颁发请求都受到每个帐户、每个主机名、每小时 5 次失败的验证失败限制;
- 一个 IP 地址每 3 个小时最多可注册 10 个账户;
上述情况都没有针对累计证书数量做限制,又在1Panel的官方Github仓库找到了这个issues:
[FEATURE] 申请证书体验优化 #1621,其中有个回复是修改nginx配置(经我查看配置已经是正确的)
评论区有人测试可行,但我的配置已经是调整后的了
再查看错误信息error: 403 :: urn:ietf:params:acme:error:unauthorized
,403?unauthorized?突然想起来这个二级域名是我自己调试项目使用的,给它开启了HTTP Basic Authentication,每次登录时需要输入设置的用户名及密码!
登录验证示例
于是我尝试关闭了1Panel网站自带的密码访问功能。
当我发现可能是这个原因后,迅速关闭了密码访问
再次尝试后,申请成功!
拓展问题:如何在HTTP Basic Authentication中排除SSL续签目录?
因为1Panel的证书可以自动续签,如果开启了HTTP Basic Authentication,下次SSL续签访问该目录仍会被阻止导致申请失败!在与AI进行了友好交流之后,发现按以下配置项进行配置,可以解决该问题:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| server { ...
location / { auth_basic "Authentication"; auth_basic_user_file /***/***.pass;
root /***/***; }
location ^~ /续签验证目录 { allow all; root /***/***; }
... }
|