Apache 使用HTTPS从外部域到CloudFlare DNS的CNAME

Apache 使用HTTPS从外部域到CloudFlare DNS的CNAME,apache,ssl,https,dns,cloudflare,Apache,Ssl,Https,Dns,Cloudflare,为客户开发的站点应该位于域test.clientdomain.com,显然我不能控制这个域 我使用CloudFlare作为DNS在test.mydomain.com上托管该网站。在我的服务器上,我有一个自签名SSL证书,我在CloudFlare上使用SSL选项Full SSL 因为生产服务器的IP地址可能会改变,我不想给客户端这个服务器的IP地址(这样他就可以在他的DNS文件中添加一个A记录)。我希望他们向我的test.mydomain.com添加一条指向test.clientdomain.co

为客户开发的站点应该位于域
test.clientdomain.com
,显然我不能控制这个域

我使用CloudFlare作为DNS在
test.mydomain.com
上托管该网站。在我的服务器上,我有一个自签名SSL证书,我在CloudFlare上使用SSL选项
Full SSL

因为生产服务器的IP地址可能会改变,我不想给客户端这个服务器的IP地址(这样他就可以在他的DNS文件中添加一个A记录)。我希望他们向我的
test.mydomain.com
添加一条指向
test.clientdomain.com
的CNAME记录。在这种情况下,如果IP地址更改,我可以在DNS文件中更改它,客户不必担心。为了实现这一点,我还设置了一个vhost文件,如下所示:

<VirtualHost *:80>
    ServerName test.clientdomain.com
    ServerAlias *.test.clientdomain.com

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/test.mydomain.com

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <Directory /var/www/html/test.mydomain.com>
                    Options Indexes FollowSymLinks MultiViews
                    AllowOverride all
                    Order allow,deny
                    allow from all
    </Directory>
</VirtualHost>
我有几个其他的web应用程序在这个Apache上运行,它们都有一个用于HTTP和HTTPS的vhost文件,它们工作得很好(因此自签名证书没有问题),唯一的区别是,在这种情况下,请求首先进入一个完全独立的域(
test.clientdomain.com
)而不是直接到我自己的域名
*.mydomain.com

总之,
test.clientdomain.com
的DNS文件将具有:

CNAME test.clientdomain.com -> test.mydomain.com
CNAME test.mydomain.com -> production.mydomain.com
A production.mydomain.com -> 123.123.123.123 (IP address of my production server)
test.mydomain.com
的DNS文件将具有:

CNAME test.clientdomain.com -> test.mydomain.com
CNAME test.mydomain.com -> production.mydomain.com
A production.mydomain.com -> 123.123.123.123 (IP address of my production server)

我是否需要为此用例配置不同的内容?

正如我从您的问题中所了解的,您正在为在该Apache中运行的各种web应用程序使用相同的证书。因此,它必须是
test.mydomain.com
production.mydomain.com
*.mydomain.com
的证书

但是,要进行此访问,您需要
test.clientdomain.com
的证书。换句话说,证书的名称与URL中的名称不匹配,因此无法继续。 我不知道CloudFlare代理,所以我无法判断该错误是否真的与名称的差异有关,或者您还有其他问题


我本应该询问更多关于这方面的信息,但我没有足够的声誉发表评论。希望这会有所帮助。

一般来说,您不能将Cloudflare CDN优势用于外部域的CNAME,但如果CDN部分对您不重要,您仍然可以使用Cloudflare名称服务器和DNS区域管理

只需确保您所在区域中目标子域的CDN已停用(
test.mydomain.com
),然后传入的请求将直接路由到您的服务器

您可以通过查看其DNS条目右侧的云图标来判断给定子域的CDN是激活的还是停用的:如果云为橙色,则CDN处于活动状态,如果云为灰色,则不处于活动状态

Cloudflare还支持其CDN基础架构中的外部CNAME解析(即提供其所有CDN优势),但它仅适用于其企业客户:

这实际上是有道理的,因此我尝试为
test.clientdomain.com
添加自签名证书,编辑vhost配置文件并重新启动Apache,但错误仍然存在。