将PointDNS用于非www并处理SSL

时间:2018-07-16 18:31:55

标签: ruby-on-rails ssl heroku dns subdomain

我一直在使用Heroku托管我的应用程序(www.justbooked.com),godaddy是域的存储位置。由于某种原因,最近的非www版本例如justbooked.com不再起作用。

GoDaddy似乎没有为根级域(example.com)提供ANAME / ALIAS或其他CNAME样式的功能。

我想知道如何使justbooked.com像www.justbooked.com一样工作。 Godaddy是否可以通过其他方式实现?没关系,我有SSL证书等...

如果GoDaddy无法做到这一点,则可以使用类似PointDNS的方法,但是我仍然不确定如何使用现有的SSL证书配置PointDNS。

这里的任何帮助都会很棒,目标是使justbooked.com(非www)正常工作!

谢谢!

2 个答案:

答案 0 :(得分:1)

我想您的问题现在可能已经解决了,但是为了过去帮助像您和我这样的人(4周前遇到同样问题时找到了这个主题),我正在写一个步骤-有关如何使PointDNS在HTTPS上的www和非www域工作的分步指南。 在开始之前阅读所有步骤,包括注释。

  1. 通过Heroku的UI或使用CLI命令heroku addons:create pointdns:developer
  2. 在项目中为PointDNS创建附加组件
  3. 打开Heroku的UI并进入PointDNS仪表板。查找“名称服务器”选项卡,然后查看名称服务器列表。寻找最适合您的。
  4. 复制建议数量的名称服务器(不多,不少),转到购买域名的地方(在您的情况下为GoDaddy),然后编辑DNS服务器以指向PointDNS。请至少等待2个小时,这些更改才能生效。
  5. 通过Heroku的UI或使用CLI命令heroku domains:add justbooked.comheroku domains:add www.justbooked.com
  6. www域和非www域添加到Heroku自定义域列表中
  7. 复制每个域(以.herokudns.com结尾的两个DNS目标)。您可以通过Heroku的UI或使用CLI命令heroku domains
  8. 来检查DNS目标。
  9. 转到PointDNS仪表板,为根域(非www)添加ALIAS记录,为www域添加CNAME记录;在每一个上,添加您在上一步中复制的对应DNS目标。也许当您添加PointDNS加载项时,这两个域的记录是自动创建的;在这种情况下,只需编辑DNS目标。
  10. 再等待1个小时,然后Heroku将使用ACM(自动证书管理)为您自动设置SSL证书。如果一切顺利,那么您现在应该使两个域都在HTTPS协议上工作。

注意:

  1. 如果使用相同的git代码库有多个以上的Heroku应用程序,则需要在Heroku CLI命令中使用--app标志。
  2. 您说您已有一个SSL证书。如果要使用它而不是ACM给出的那个,则需要设置一个SSL端点。为此,请在步骤4之前,使用CLI命令heroku addons:create ssl:endpoint创建一个。之后,使用命令heroku certs:add server.crt server.key --type endpoint上传证书。 在步骤5 中,使用heroku domains代替heroku certs命令。在步骤6 中使用终结点DNS目标(以.ssl.herokudns.com结尾的目标)。
  3. 设置域和SSL证书后,您可能还希望将所有HTTP通信重定向到HTTPS。您只能通过将重定向逻辑编码到应用程序中来做到这一点。对于Ruby on Rails,您需要在config.force_ssl = true或类似名称中使用config/environments/production.rb
  4. 您可能会看到很多教程,其中使用.herokuapp.com链接而不是.herokudns.com作为PointDNS中的DNS目标。 这可能适用于HTTP流量,但是HTTPS会话将失败。即使您仅使用HTTP(也许正在使用免费的托管计划),也请使用.herokudns.com,因为以后设置HTTPS会更容易。

参考文献:

  1. Heroku Dev Center: Custom Domain Names for Apps
  2. Heroku Dev Center: SSL Endpoint
  3. Heroku Help: Can Heroku force an application to use SSL/TLS?
  4. Heroku Dev Center: PointDNS(有些陈旧,但可以成为很好的资源)

答案 1 :(得分:0)

通过pointdns指向任何网站时,您可以使用两种方式,一种是通过cname,另一种是使用诸如pointDNS之类的服务。如果您要专门在裸域(例如justbooked.com)上运行SSL,则需要在此处指向DNS

PointDNS配置非常简单,因为您只需要将Godaddy的dns记录添加到pointDNS

对于SSL,您可以使用ACM或在heroku设置中添加自己的证书。ACM使用让我们加密的SSL是免费的,但不允许使用通配符SSL。