首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从外部域到HTTPS的CloudFlare域名

从外部域到HTTPS的CloudFlare域名
EN

Stack Overflow用户
提问于 2015-10-08 19:13:20
回答 2查看 1.7K关注 0票数 2

一个已经为客户开发的网站应该生活在域test.clientdomain.com上,显然我不在这个域的控制之下。

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

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

代码语言:javascript
复制
<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>

此设置适用于HTTP。当我想要添加HTTPS时,我还为端口443创建了一条vhost记录:

代码语言:javascript
复制
<IfModule mod_ssl.c>
    <VirtualHost *:443>
            ServerName test.clientdomain.com
            ServerAlias *.test.clientdomain.com

            DocumentRoot /var/www/html/test.mydomain.com

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

            SSLEngine on

            SSLCertificateFile      /etc/apache2/ssl/apache.crt
            SSLCertificateKeyFile /etc/apache2/ssl/apache.key

            <Directory /var/www/html/test.mydomain.com>
                    Options Indexes FollowSymLinks MultiViews
                    AllowOverride all
                    Order allow,deny
            </Directory>
            BrowserMatch "MSIE [2-6]" \
                            nokeepalive ssl-unclean-shutdown \
                            downgrade-1.0 force-response-1.0
            # MSIE 7 and newer should be able to use keepalive
            BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

    </VirtualHost>
</IfModule>

我打开了CloudFlare代理,以便所有请求都通过CloudFlare代理,但由于某种原因,它给出了以下错误:

代码语言:javascript
复制
SSL connection error

ERR_SSL_PROTOCOL_ERROR

我在这个Apache上运行了几个其他的web应用程序,都有一个HTTP和HTTPS的vhost文件,它们工作得很好(所以自签名证书没有问题),唯一的区别是,在这种情况下,请求首先到达一个完全独立的域(test.clientdomain.com),而不是直接到达我自己的域*.mydomain.com

因此,总而言之,test.clientdomain.com的DNS文件应该是:

代码语言:javascript
复制
CNAME test.clientdomain.com -> test.mydomain.com

test.mydomain.com的DNS文件将包含:

代码语言:javascript
复制
CNAME test.mydomain.com -> production.mydomain.com
A production.mydomain.com -> 123.123.123.123 (IP address of my production server)

我需要为这个用例配置一些不同的东西吗?

EN

回答 2

Stack Overflow用户

发布于 2015-10-08 19:50:37

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

但是,要进行此访问,您需要test.clientdomain.com的证书。否则,证书的名称将与URL中的名称不匹配,因此无法继续。我不知道CloudFlare proxy,所以我不知道这个错误是否真的与名称的差异有关,或者你还有另一个额外的问题。

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

票数 1
EN

Stack Overflow用户

发布于 2018-07-16 19:07:36

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

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

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

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

https://support.cloudflare.com/hc/en-us/articles/217371987-Managed-CNAME

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33014150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档