ssl - 是否有必要在与生产服务器的 EC2 链接上强制使用 SSL?

标签 ssl amazon-ec2 cloudflare

我通过 GoDaddy 拥有域名,我使用 CloudFlare 作为我的 DNS,虽然我有一个 SSL 证书。我的托管在 AWS 上。

当我通过我的域名访问该网站时,会强制执行 SSL,如果我通过 http 访问,它会被重定向到 https - 这正是我想要的。

但是,当我通过 EC2 域访问它时,未强制执行 SSL,大概是因为它不在 Cloud Flare 的证书上。

我的问题是,如果不将 EC2 域保留在为 SSL 强制执行的生产站点上,是否存在危险?我尝试跟踪我的域的来源,但它只能返回到强制使用 SSL 的 CloudFlare,所以我认为不可能将站点跟踪回 EC2 域?

最佳答案

为防止客户绕过 Cloudflare 并直接访问您的网站,您需要通过您在 Cloudflare 注册的域名将他们重定向回来。这将产生强制 HTTPS 的副作用。

我假设:

  • Cloudflare 正在终止 SSL,您的网络服务器仅运行 HTTP。

假设您的网络服务器是 Apache,有几种方法。

使用服务器别名重定向。像这样修改您的 VirtualHost 条目:

<VirtualHost *:80> 
    ServerAlias ec2-public-ipv4-address.compute-1.amazonaws.com
    redirect permanent / https://www.yoursite.com
</VirtualHost>

或修改您的网络服务器根目录中的 .htaccess

RewriteEngine On
RewriteCond %{HTTP_HOST} ^ec2-public-ipv4-address.compute-1.amazonaws.com$
RewriteRule ^(.*)$ https://www.yoursite.com/$1 [R=301,L]

将上面的 DNS 名称更改为您实际的 EC2 公共(public) DNS 名称。

如果他们使用公共(public) IP 地址访问您的网站,您会想要做同样的事情。

将此规则添加到 .htaccess:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^12\.34\.56\.789$
RewriteRule ^(.*)$ https://www.yoursite.com/$1 [L,R=301]

将上面的数字替换为您的公共(public) IP 地址。保留 IP 地址中的点 . 用反斜杠转义,例如 \.

关于ssl - 是否有必要在与生产服务器的 EC2 链接上强制使用 SSL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52240267/

相关文章:

linux - Rundeck-连接到EC2实例节点

Cloudflare Dashboard 和 Cloudflare Web Analytics 显示的访问次数截然不同

ssl - SSL 连接的 JMeter 和连接时间

java - Android 上是否有任何系统证书存储?

mysql - MySQL 查询框架是否正确?

amazon-s3 - 无法从 Cloudformation 中的 EC2 实例访问 S3 -- 调用 HeadObject 操作时发生客户端错误 (301) : Moved Permanently

mysql - Cloudflare 错误 522

mysql - 如何在 cloudflare 中使用页面规则阻止 url?

c# - 导出或保存 CX509PrivateKey

.net-3.5 - 通过 SSL (https) 的简单 HttpWebRequest 在 C# 下给出 404 Not Found