针对指向其他主机的子域名进行加密设置

针对指向其他主机的子域名进行加密设置

我正在尝试设置一个双服务器系统,其中一个用于网络托管,另一个用于为网络托管服务器提供内容(CDN)。

我目前拥有两台服务器,它们都具有 Let's Encrypt SSL。

网站主机https://example.com

example.com 123.123.123.123

内容分发网络 (CDN)https://foo.com

foo.com 111.111.111.111

我已经为我的网络主机服务器设置了一个子域名: cdn.example.com,它指向 CDN 服务器foo.com 111.111.111.111

问题是没有cdn.example.comLet's Encrypt SSL。

我如何获取cdn.example.com指向 的Let's Encrypt SSL foo.com 111.111.111.111

当我跑步时:

certbot --apache --cert-name example.com -d cdn.example.com

它给出了一个错误:

Failed authorization procedure. cdn.example.com (http-01): urn:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from http://cdn.example.com/.well-known/acme-challenge/PaKenmvAqHoOdOBUhThxxxxx: "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML
2.0//EN\">\n<html><head>\n<title>404 Not Found</title>\n</head><body>\n<h1>Not Found</h1>\n<p"

IMPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: cdn.example.com    Type:   unauthorized    Detail: Invalid response from    http://cdn.example.com/.well-known/acme-challenge/PaKenmvAqHoOdOBUhThxxxxx: "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML
   2.0//EN\">\n<html><head>\n<title>404 Not    Found</title>\n</head><body>\n<h1>Not Found</h1>\n<p"

   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.

运行默认的 Debian 和 Apache2 安装。

我想我必须手动设置 CDN 服务器中的 acme-challenge 文件?我应该运行哪些命令?

答案1

简短的回答是“你不需要”。你的辅助主机 (foo.com) 上不需要 SSL。

您需要做的就是:

  1. 为 cdn.example.com 生成 SSL
  2. 设置反向 http 代理在您的 cdn.example.com 上。这样,所有 HTTPS 请求都将从 cdn.example.com 获得有效的 SSL,但内容将使用http://foo.com

Apache 配置:https://www.digitalocean.com/community/questions/apache-proxypass-and-reverseproxy-to-a-ssl-https-configured-domain

下面是我使用 NGINX 执行此操作的示例:

server  {
    listen  443 ssl;
    server_name  cdn.example.com;
    ssl  on;
#BEGIN OPTIONAL--in case you want to have more stats on foo.com
    proxy_set_header Host            $host;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header ClientIP $remote_addr;
#END OPTIONAL--
    ssl_certificate /etc/ssl/cdn.example.com.pem;
    ssl_certificate_key /etc/ssl/cdn.example.com.key;
    location  / {
            proxy_pass  http://foo.com:80/;
    }
}

答案2

为了实现你想要的:你可以复制CDN域的SSL配置(https://foo.com) 并针对域进行编辑;只需将cdn.example.com的痕迹替换为。foo.comcdn.example.com

由于我不知道您的服务器配置,因此我无法提供有关该过程的更多详细信息。

但是,作为一个建议(因为我不知道您的确切要求),我认为您实际上并不需要为您的 CDN 设置单独的域。在另一台服务器上,您只需为 创建一个配置即可cdn.example.com

相关内容