【问题标题】:Python AWS Lambda CertificatesPython AWS Lambda 证书
【发布时间】:2019-10-07 01:46:56
【问题描述】:

如何向 Python3 AWS Lambda 函数使用的信任库添加额外的 CA(证书颁发机构)?

【问题讨论】:

  • 不清楚你在问什么。什么是“外部服务之一”,为什么需要证书?
  • 我正在通过 https 访问休息服务。如果是 java 应用程序,我相信我需要在 truststore 中安装证书,但是由于在 AWS Lambda 上运行的 python 应用程序我不确定如何实现它
  • 这个问题很不清楚。您是在询问任何特定的证书吗?如果它是具有来自受信任 CA 的链的有效证书,您可能不需要做任何事情。但是,如果您使用的是自签名证书,那就不同了。

标签: python python-3.x amazon-web-services aws-lambda ssl-certificate


【解决方案1】:

如果您只需要一个 CA,那么在 linux 中使用以下命令获取您的 crt 文件并将其编码为 pem:

openssl x509 -text -in "{your CA}.crt" > cacert.pem

如果您需要将 CA 添加到默认 CA 包,请将 python3.8/site-packages/certifi/cacert.pem 复制到您的 lambda 文件夹。然后为每个 crt 运行这个命令:

openssl x509 -text -in "{your CA}.crt" >> cacert.pem

创建 pem 文件后,部署您的 lambda,并将 REQUESTS_CA_BUNDLE 环境变量设置为 /var/task/cacert.pem

/var/task 是 AWS Lambda 将压缩代码提取到的位置。

【讨论】:

  • 由于 ssl 验证,这使我对 aws 的调用不起作用,似乎它添加了我的证书但删除了默认证书?
  • @FranklinRivero 您是否复制了原始的 cacert.pem 包并将其附加到其中?老实说,我只需要访问一项服务,所以我自己没有测试那部分。
  • 我最终改用 CURL_CA_BUNDLE 并同时使用了 aws 服务和我的服务,我怎样才能获得用于访问 aws 服务的原始 cacert.pem(ssm、dynamodb、batch、sns 以及我调用的其他一些服务)。如果我打印 REQUESTS_CA_BUNDLE 它什么也没给我。
  • @FranklinRivero 默认情况下应该是 python3.8/site-packages/certifi/cacert.pem 中的内容。但我想亚马逊有可能将他们的证书添加到标准 python 证书中。
猜你喜欢
  • 2017-08-26
  • 2019-07-28
  • 2017-02-23
  • 1970-01-01
  • 1970-01-01
  • 2020-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多