AWS 实例更改为 https

时间:2020-12-23 12:19:09

标签: amazon-web-services amazon-ec2 instance

我们现在使用 AWS 来设置我们的网站,我们最近正在尝试设置一个页面,让我们的客户可以向我们发送电子邮件。我们设置了一个 EC2 实例作为电子邮件服务器,但它在 HTTP 上运行。由于我们的网站是在 HTTPS 上运行的,ajax 无法发送 HTTP 消息,我们必须让 EC2 实例在 HTTPS 上运行,但我不知道该怎么做。

$.ajax({
    type: "POST",
    url: "https://ec2-*-*-*-*.*.compute.amazonaws.com/send",
    contentType: "application/json; charset=utf-8",
    beforeSend: function(request) {
        request.setRequestHeader("Access-Control-Allow-Origin", "*");
        request.setRequestHeader("Access-Control-Allow-Method", "POST");
    },
    async: true,
    data: JSON.stringify({
        "name": name,
        "email": email,
        "message": message
    }),
    traditional: true,
    error: function(xhr, status, error) {
        var errorMessage = xhr.status + ': ' + xhr.statusText
        alert('Error - ' + errorMessage);
    },
    success: function(result) {
        alert(" Good link");
    }
});

1 个答案:

答案 0 :(得分:2)

通常可以使用三种方式为您的实例设置 SSL。

  1. 在您的 EC2 前设置一个 load balancer (LB)。为此,您需要自己的自定义域。拥有域后,您可以从 AWS ACM 获得免费的公共 SSL 证书并将其轻松部署在 LB 上。使用 LB,您的应用程序将使用 HTTPS 连接到 LB。 LB 会将流量以 HTTP 形式转发到 AWS 内部网络中的实例。

  2. 在您的实例上手动设置有效的公共 SSL 证书。为此,AWS ACM 不能在步骤 1 中使用,因此您需要从第三方(不是 AWS)获取 SSL 证书。一个流行的选择是 https://letsencrypt.org/https://certbot.eff.org/。在实例上安装 SSL 通常需要设置反向代理,例如 nginx。顺便说一下,StackOverflow 正在使用letsencyrpt 作为它自己的 SSL 证书。

  3. 在您的 EC2 实例前设置一个 CloudFront (CF) distribution。您可以在 CF 发行版上使用带有 ACM SSL 证书的自定义域,或者您可以使用默认的 CF 端点,它也是 HTTPs。但是,这里的问题是 CF 和您的实例之间的流量将是跨 Internet 的 HTTP,这是一个安全风险。要解决此问题,您必须使用步骤 1 或 2 为 HTTP 设置有效的 SSL 证书。

相关问题