Python 中的双向 TLS 使用 Google Cloud KMS
Mutual TLS in Python using Google Cloud KMS
有没有办法使用存储在 Google 云密钥管理服务中的私钥通过 mTLS 发出 HTTP 请求?
在this blog post中,我们需要的是在Go中完成的。是否有可能在 Python 中实现相同的目标?我希望 Tink 库提供一些现成的解决方案,但找不到。
深入探讨该主题后,我做了以下内容"discoveries":
- 所有 Python HTTP 客户端似乎都依赖 OpenSSL
- OpenSSL 具有 engine interface,它允许将加密函数卸载到第三方(HSM 或类似 Google Cloud KMS 的东西)
- 与pyOpenSSL it's fairly easy to create SSL context for
urlopen
, which would use a custom OpenSSL engine. Here is an example: https://github.com/pyca/pyopenssl/issues/203#issuecomment-454900850
- 我无法找到支持 Google Cloud KMS 的现成 OpenSSL 引擎
所以这似乎是可以解决的,但需要一些努力。
同时发现亚马逊为AWS KMS提供了现成的OpenSSL engine for their AWS CloudHSM, so it should be fairly easy to use for mTLS in Python. But CloudHSM prices are quite high (which is understandable due to custom hardware). Also I found this Rust implementationOpenSSL引擎,看起来不错。也许也可以针对 Google Cloud KMS 对其进行返工...但我们最终可能会切换到 AWS KMS 或 CloudHSM。
虽然这不是一个非常完整的答案,但我希望它能帮助其他面临这个问题的人。
有没有办法使用存储在 Google 云密钥管理服务中的私钥通过 mTLS 发出 HTTP 请求?
在this blog post中,我们需要的是在Go中完成的。是否有可能在 Python 中实现相同的目标?我希望 Tink 库提供一些现成的解决方案,但找不到。
深入探讨该主题后,我做了以下内容"discoveries":
- 所有 Python HTTP 客户端似乎都依赖 OpenSSL
- OpenSSL 具有 engine interface,它允许将加密函数卸载到第三方(HSM 或类似 Google Cloud KMS 的东西)
- 与pyOpenSSL it's fairly easy to create SSL context for
urlopen
, which would use a custom OpenSSL engine. Here is an example: https://github.com/pyca/pyopenssl/issues/203#issuecomment-454900850 - 我无法找到支持 Google Cloud KMS 的现成 OpenSSL 引擎
所以这似乎是可以解决的,但需要一些努力。
同时发现亚马逊为AWS KMS提供了现成的OpenSSL engine for their AWS CloudHSM, so it should be fairly easy to use for mTLS in Python. But CloudHSM prices are quite high (which is understandable due to custom hardware). Also I found this Rust implementationOpenSSL引擎,看起来不错。也许也可以针对 Google Cloud KMS 对其进行返工...但我们最终可能会切换到 AWS KMS 或 CloudHSM。
虽然这不是一个非常完整的答案,但我希望它能帮助其他面临这个问题的人。