AWS S3端点和正确的SSL验证



我们希望拥有我们的自定义brew存储库,使我们的开发人员能够轻松管理/更新我们的公司工具。我们决定将所有这些文件都保存在AWS S3存储桶中,并且在brew公式中只直接指向对象的url。我们唯一的限制是确保在我们的VPN网络后面可以访问AWS S3存储桶。

所以我们做了什么:

  1. 创建了新的bucket,比如说使用以下名称:downloads.example.com

  2. 已创建S3终结点。AWS创建的dns条目:*.vpce-XXXXXXXXXXXXXXX-XXXXXX.s3.eu-west-1.vpce.amazonaws.com

  3. 在bucket策略中,我们仅限制对AWS S3端点的访问:

"Condition": {
"StringEquals": {
"aws:SourceVpce": "vpce-XXXXXXXXXXXXXXX"
}
}
  1. 我们创建了一个route53 DNS条目:
record A downloads.example.com as an alias to *.vpce-XXXXXXXXXXXXXXX-XXXXXX.s3.eu-west-1.vpce.amazonaws.com

经过简单的配置后,只有当我们使用AWS CLI命令连接到VPN服务器时,我们才能获取/推送对象。

不幸的是,问题是当我们想要使用卷曲时,例如:

*   Trying 10.X.X.X:443...
* Connected to downloads.example.com (10.X.X.X) port 443 (#0)
...
* Server certificate:
*  subject: CN=s3.eu-west-1.amazonaws.com
*  start date: Dec 16 00:00:00 2021 GMT
*  expire date: Jan 14 23:59:59 2023 GMT
*  subjectAltName does not match downloads.example.com
* SSL: no alternative certificate subject name matches target host name 'downloads.example.com'
* Closing connection 0
* TLSv1.2 (OUT), TLS alert, close notify (256):

如果我跳过CA验证执行相同的命令,它会起作用:

20211217 16:56:52 kamil@thor ~$ curl -Ls https://downloads.example.com/getMe.txt -k
test file

你知道有没有什么方法可以让它正常工作吗?

我知道我们可以做以下事情,但我们希望看到其他选择:

  1. 通过VPN推送路由s3.eu-west-1.amazonaws.com,桶内策略限制仅访问我们的VPN公共IP
  2. 在ingress/nginx上安装正确的证书以进行重定向/代理
  3. 我们尝试了一些负载平衡器和ACM的组合,但没有成功

提前感谢您的帮助卡米尔

恐怕不能随心所欲。

创建端点时,AWS不会为您自己的域创建证书。它为自己拥有的域创建一个证书。

您可以使用进行检查

首先,下载证书

$ echo | openssl s_client -connect 10.99.16.29:443 2>&1 | sed --quiet '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > vpce.pem

然后您可以验证证书中的名称。

$ openssl x509 -noout -text -in vpce.pem  | grep DNS | tr "," "n" | sort -u
DNS:s3.eu-central-1.amazonaws.com
DNS:*.accesspoint.vpce-0f0d06a5091e70758-7mtj4kk7-eu-central-1a.s3.eu-central-1.vpce.amazonaws.com
DNS:*.accesspoint.vpce-0f0d06a5091e70758-7mtj4kk7.s3.eu-central-1.vpce.amazonaws.com
DNS:*.bucket.vpce-0f0d06a5091e70758-7mtj4kk7-eu-central-1a.s3.eu-central-1.vpce.amazonaws.com
DNS:*.bucket.vpce-0f0d06a5091e70758-7mtj4kk7.s3.eu-central-1.vpce.amazonaws.com
DNS:*.control.vpce-0f0d06a5091e70758-7mtj4kk7-eu-central-1a.s3.eu-central-1.vpce.amazonaws.com
DNS:*.control.vpce-0f0d06a5091e70758-7mtj4kk7.s3.eu-central-1.vpce.amazonaws.com
DNS:*.s3-accesspoint.eu-central-1.amazonaws.com
DNS:*.s3-control.eu-central-1.amazonaws.com
DNS:*.s3.eu-central-1.amazonaws.com
DNS:bucket.vpce-0f0d06a5091e70758-7mtj4kk7-eu-central-1a.s3.eu-central-1.vpce.amazonaws.com
DNS:bucket.vpce-0f0d06a5091e70758-7mtj4kk7.s3.eu-central-1.vpce.amazonaws.com

注意为了简洁起见,我从列表中删除了一些名称。

因此,要访问端点并且不存在证书问题,您需要使用证书中提供的名称之一。

最新更新