获取AWS弹性IP的letsEncrypt CA证书

Sim*_*rtM 4 certificate amazon-web-services

指南: https ://docs.aws.amazon.com/AWSEC2/latest/UserGuide/SSL-on-amazon-linux-2.html

问题:

我必须在exact-online 和其他网站之间进行集成。为此,我在 Amazon linux 2 EC2 服务器上运行一个 java 后端,并使用控制器方法来监听精确的在线 webhook。我从 webhook 获取信息并使用他们的 api 将其发送到其他网站。所以我没有任何人可以访问的实际网页,这只是一个“内部”程序。

现在对于 webhook 我的控制器如下所示:

    @RequestMapping(value = "/WebHook", method = RequestMethod.POST)
    @ResponseBody
    public ResponseEntity<?> webhook(@RequestBody(required = false) ExactWebHookResponse exactWebHookResponse) {
        // handle exactWebHookResponse
        return new ResponseEntity<Object>(HttpStatus.OK);
    }
Run Code Online (Sandbox Code Playgroud)

Webhook 仅通过“https”协议进行通信。所以我的控制器应该监听对 https://{Elastic-IP}/WebHook 发出的 webhook 请求。

为了在 Amazon 服务器上初始化 SSL/TLS,我遵循了上述指南;我安装了 Apache,配置了我的安全组等。一切都很顺利,直到我尝试使用 LetsEncrypt-Certbot 获取 CA 证书。当我尝试获取域的证书时:{Elastic-IP} 它告诉我他们不向 IP 地址提供证书。因此,我尝试使用我的公共 DNS:ec2-{Elastic-IP}.us-east-2.compute.amazonaws.com,但他们不向“amazonaws.com”域提供证书。

我对 SSL/TLS 和证书一点也不熟悉,那么我在这里做错了什么?

Mic*_*bot 6

SSL/TLS 证书有两个目的——提供用于协商加密的签名公钥只是其中之一。另一个是证明服务器身份或控制权——您所连接的服务器不是冒名顶替者。

浏览器、curl 和 HTTP 客户端库信任您的证书,因为它是由受信任的证书颁发机构以加密方式签名的。

证书颁发机构在颁发证书时,本质上是为您和您的服务器提供担保——他们在颁发证书之前确认了您请求证书的授权。如果他们颁发了证书*.amazonaws.com或 AWS IP 地址,那就相当于他们断言他们相信并确认您是亚马逊……但事实并非如此。

因此,Let's Encrypt 不会为任何明显不属于您的内容提供证书。IP 地址不是您的,里面的主机名也不是您的*.amazonaws.com。亚马逊有一个免费的证书产品(亚马逊证书管理器),他们也不会为这些情况提供证书。

如果您想要来自 Let's Encrypt(或 ACM 或任何其他免费或非免费证书颁发机构)的证书,您需要一个域名。该服务不被人类访问这一事实并不真正相关。注册新域或从您已拥有的域分配主机名。将其指向 DNS 中的您的服务,您将能够获得证书。

当然,如果该服务完全属于单个组织内部,您可以为您喜欢的任何内容(无论是 IP 地址还是主机名)设置私有证书颁发机构,在这种情况下不需要外部验证,因为没有人会信任您的证书,但组织中选择信任您的私有 CA 的计算机除外。但设置私有 CA 并非易事。

  • @JamesDean 不,你不能。Let's Encrypt 有一个黑名单。它知道这些名称是短暂的,并且不允许这样做。 (4认同)