Certbot在nginx上为域以外其他服务器上的子域获取证书

eh57zj3b  于 2022-11-28  发布在  Nginx
关注(0)|答案(1)|浏览(207)

我有一个域名example.com,它指向一个位于123.123.123.123的aws ec2示例,我还有一个位于主服务器的gitlab示例,位于231.231.231.231
我的域的记录设置如下:

example.com
A    123.123.123.123
git.example.com
A    231.231.231.231

这里没什么奇怪的:当我输入www.example.com时example.com我会进入AWS EC2示例,当输入www.example.com时git.example.com我会进入我家里的静态IP。路由器将端口80上的所有请求发送到我的Ubuntu服务器,其中nginx运行Gitlab示例,一切都正常。
nginx配置:

server {
    server_name git.example.com www.git.example.com;

    location /.well-known/acme-challenge/ {
      root /var/www;
      try_files $uri =404;
    }

    location / {
      proxy_pass http://127.0.0.1:4872;
    }

    proxy_set_header  Host               $host;
    proxy_set_header  X-Forwarded-For    $proxy_add_x_forwarded_for;
    proxy_set_header  X-Forwarded-Proto  $scheme;
    proxy_set_header  Accept-Encoding    "";
    proxy_set_header  Proxy              "";
}

现在我想用certbot设置SSL。我使用certonly--dry-run,因为我只是想测试它是否工作。

sudo certbot certonly --cert-name example --nginx -d "git.example.com,www.git.example.com" --dry-run

响应为错误:

- The following errors were reported by the server:

   Domain: git.example.com
   Type:   unauthorized
   Detail: Invalid response from
   http://git.example.com/.well-known/acme-challenge/...
   [231.231.231.231]: "<!DOCTYPE html>\n<html>\n<head>\n<meta
   charset=\"utf-8\">\n<style>body{font-family:Arial,Helvetica,sans-serif;font-size:12px;text-alig"

   Domain: www.git.example.com
   Type:   unauthorized
   Detail: Invalid response from
   http://www.git.example.com/.well-known/acme-challenge/...
   [231.231.231.231]: "<!DOCTYPE html>\n<html>\n<head>\n<meta
   charset=\"utf-8\">\n<style>body{font-family:Arial,Helvetica,sans-serif;font-size:12px;text-alig"

   To fix these errors, please make sure that your domain name was
   entered correctly and the DNS A/AAAA record(s) for that domain
   contain(s) the right IP address.

如果我尝试在手动模式下执行此操作,则会成功:

sudo certbot certonly --manual --preferred-challenges dns -d www.git.example.com -d git.example.com --dry-run

A区域以及AAAA都已正确配置和传播。
我想certbot可能不仅仅是git.example.com在这个IP上检查www.example.com和git.example.com,还检查example.com和www.example.com。因为它不能访问它们,所以返回错误。
有人知道我是对的吗,或者这个错误来自另一个问题?

0s0u357o

0s0u357o1#

假设这是一个本地服务器,您是否打开了HTTP端口以允许certbot连接?
Certbot使用端口443或80来质询域,您可能应该在防火墙上打开它。如果这不可能,您可以尝试其他质询,您可以在here中找到更多信息。

相关问题