HTTPS和路由www.domain.com - > AWS弹性beanstalk上的domain.com(适用于chrome,但不适用于safari)

时间:2018-05-16 08:14:34

标签: amazon-web-services https elastic-beanstalk

我在AWS上运行了一个弹性beanstalk实例(没有负载均衡器)。

通过Route 53,我有一个别名,从我的域名“example.com”和“www.example.com”到Elastic Beanstalk实例。 工作得很好。

我还按照本教程中的每个http请求重新路由到https: https://blog.lucasferreira.org/howto/2017/07/21/set-up-let-s-encrypt-ssl-certificate-with-aws-elastic-beanstalk-single-instance.html

现在奇怪的是,如果进入Chrome浏览器“www.example.com”或“example.com”,一切正常,它会被转发到“https://example.com”。 如果我在Safari和Firefox中执行相同的操作,我会收到一条错误消息,指出https://www.example.com“此连接不是私有的”。 原因是证书适用于domain.com,但不适用于www.example.com

我是网络服务的新手,真的。我在这里做错了什么?

  • 我是否需要安装两个证书,一个用于domain.com,另一个用于www.example.com?我将如何根据以上的tutuorial做到这一点?
  • 我是否可以通过其他方式将流量从www.example.com重新路由到example.com,以便我不需要其他证书?
  • 或者我是否犯了一个基本错误w.r.t.无论如何,www.example.com,我不应该同时需要www和非www?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您可以尝试在https重写之前添加第二个重写条件。如果网址以www.开头,则将网址重写为https://example.com,删除www.

这可以避免将您的网址重定向到https,同时包含SSL未涵盖的www.

使用您上面链接的教程,您的VirtualHost配置将如下所示:

  <VirtualHost *:80>
      RewriteEngine On
      RewriteBase /
      RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
      RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
      RewriteCond %{HTTPS} off
      RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
  </VirtualHost>