我正在使用一项服务 ( banana.com
),它允许我使用我的域名 ( orange.com
) 登录。
他们提到添加如下 CNAME 记录:
an.orange.com. 3600 IN CNAME service.banana.com.
我这样做了,但是当我访问 URL 时,我收到(在 Chrome 上)一个错误你的连接不是私人的””:
我的服务器在 Apache 上运行。
服务器为什么要证明它是an.orange.com
?它为什么一开始就访问我的服务器?地址不应该解析为 吗service.banana.com
?
答案1
该CNAME
记录声明an.orange.com
是规范名称 的别名service.banana.com
。
这意味着当客户端在 查找某些记录类型(例如A
)时,an.orange.com
响应实际上将具有 的A
记录service.banana.com
。
在常规应用程序中,例如示例中的 Web 浏览器,应用程序不知道或不关心是否存在以记录形式的间接寻址,CNAME
因为作为名称解析过程的一部分(它对其内部结构基本上是盲目的),它只是使用生成的 IP 地址。
考虑到这一点,当用户https://an.orange.com/
在其 Web 浏览器中导航到 时,浏览器将连接到 URL 的主机部分 ( an.orange.com
),它会解析此名称、获取 IP 地址、进行连接,然后它会完全期望从当前 URL 获取主机的有效证书(如果是 HTTPS),然后它会将 Host 标头与当前 URL 的主机部分 ( an.orange.com
) 作为请求的一部分发送。
这与 Web 浏览器对 HTTP 重定向的反应有很大不同,在 HTTP 重定向中,浏览器被告知导航到一个不同的 URL,并按照新的期望重新启动整个导航过程(例如,现在尝试连接到https://service.banana.com/
)。
对于 HTTPS,这意味着如果您想允许用户导航到,https://an.orange.com/
您必须拥有该名称的有效证书。