HTTPS从根域(即apex或';裸';)重定向到';www';没有浏览器弹出的子域?
DNS A记录要求将IP地址硬编码到应用程序的DNS配置中 ......这。Heroku建议两种解决方法: …在apex使用支持类似CNAME功能的DNS提供程序,并使用子域重定向` 我的问题围绕后一个选项(因为DreamHost AFAIK不支持前者): 是否可以将HTTPS请求从根域(即apex或“裸域”)重定向到“www”子域,而无需浏览器弹出? 赫罗库认为不是: …需要SSL加密的应用程序应在根域上使用别名/ANAME配置。当通过SSL(即)请求根域时,子域重定向将导致浏览器错误 …但我希望这是一个不完整(或不正确)的陈述 澄清更新: 从apex重定向到“www”的真正问题是键入HTTPS从根域(即apex或';裸';)重定向到';www';没有浏览器弹出的子域?,https,Https,DNS A记录要求将IP地址硬编码到应用程序的DNS配置中 ......这。Heroku建议两种解决方法: …在apex使用支持类似CNAME功能的DNS提供程序,并使用子域重定向` 我的问题围绕后一个选项(因为DreamHost AFAIK不支持前者): 是否可以将HTTPS请求从根域(即apex或“裸域”)重定向到“www”子域,而无需浏览器弹出? 赫罗库认为不是: …需要SSL加密的应用程序应在根域上使用别名/ANAME配置。当通过SSL(即)请求根域时,子域重定向将导致浏览器错误 …但我
https://example.com
直接进入浏览器将发出证书警告。当然,这是一个边缘案例,但不是一个小案例
解决方案更新:
我用计算机解决了这个问题。(甚至不需要转移我的域名!)
<> P>我相信EasyDNS提供了类似的特性,但惊奇地发现大多数其他域名托管公司都没有。 < P>有两个独立但相互依存的间接考虑级别。第一个是DNS名称最终解析为什么IP地址。第二个是该IP地址上的服务器的功能 请记住,在浏览器中键入URL时,首先发生的是DNS查找。通常,这是由操作系统处理的,而不是浏览器本身 因此,您的浏览器将询问操作系统,“example.com的地址是什么?”操作系统将查找记录,如果它得到
CNAME
,将查找该记录,直到找到a
记录。然后,操作系统对浏览器做出响应并给出答案
然后,浏览器打开到该IP地址的TCP连接:
- 如果是http://URL,它将连接到端口80,然后发出http请求
- 如果https://URL连接到端口443,建立TLS/SSL连接(这意味着验证证书),然后通过安全通道发出HTTP请求
GET/
),服务器可以用301响应任何其他URL
请理解,注册商提供的“子域重定向”服务只不过是一个发出301s的常规HTTP服务器。当您选择注册商的重定向选项时,他们只需将域顶点的a
记录设置为他们控制的服务器,该服务器告诉浏览器转到www.example.com
由于大多数注册商不允许您将SSL证书上载到其重定向服务器,浏览器无法建立到服务器的必要安全连接,因此他们从不发出HTTP请求。因此,https请求://example.com失败了
那么,为什么你不能直接CNAME
apex呢
域系统使用规范名称提供这样的功能
(CNAME
)RR[记录资源]。CNAME
RR将其所有者名称标识为别名,并且
在文件的RDATA
部分中指定相应的规范名称
RR.如果节点上存在CNAME
RR,则不应显示其他数据
呈现;这确保了规范名称及其别名的数据
不能不同。此规则还确保缓存的CNAME
可以
在未与权威服务器检查其他RR类型的情况下使用
规范要求CNAME
记录是给定(子)域的唯一记录。这与在顶点上有SOA
记录的要求不一致。(有一些人试图更改规范,以允许CNAME
和SOA
共存,但仍有许多断开的SMTP实现会被域上的CNAME
混淆。)
您可以使用以下选项使SSL在apex上工作:
- 请使用在重定向服务器上支持SSL的第三方服务。您可能会为此付费。我不会推荐此路由,因为它会让您失去对可靠性的控制,并要求您将SSL证书的密钥交给可能值得信任或不值得信任的人
- 运行您自己的重定向服务器。由于apex需要一个
记录,因此您需要一个静态IP,而Heroku和AWS的ELB等服务不提供静态IP。因此,如果您处于云环境中,则很难(如果不是不可能)保证可靠性。另一方面,您可以保留对SSL密钥的控制A
- 使用允许您设置别名的DNS主机。将别名指向您的Heroku域/ELB/无论什么。这很可能是最好的选择
a
记录。换句话说:
a
记录记录,其中包含它从别名查找中获得的IP
CNAME
d所指向的同一个云负载平衡器。假设您已在www域上设置SSL,则裸域将