gpt4 book ai didi

python - 如何使用 PKCS11 在 python 中建立 TLS session

转载 作者:行者123 更新时间:2023-12-04 21:28:53 25 4
gpt4 key购买 nike

我正在尝试在我控制的客户端和 Web 服务器之间建立 TLS channel 。客户端和服务器都使用我在私有(private) PKI 方案下创建的证书进行身份验证。客户端 key 和证书存储在 USB 加密狗类型 HSM 上。 Python 是主要的应用程序语言。

我可以使用 python-pkcs11 为我的项目执行所有必需的加密操作包,例如 AES 加密、HMAC 签名、RSA 签名等。但是,我找不到将 pkcs11 “绑定(bind)”到任何 TLS 库的方法。我的意思是调用处理 pkcs11 层并建立 TLS channel 的函数的“Pythonic”方式。请求不支持 pkcs11。 libcurl支持 pkcs11,但未在 pycurl 中实现, 也不是 pyopenssl .

我可以通过使用引擎 api 的 openssl 的 s_client CLI 工具来做到这一点:
openssl s_client -engine pkcs11 -verify 2 -CAfile path/to/CA.pem -keyform engine -key "pkcs11:...;object=rsa;type=private" -cert path/to/client-cert.pem -connect localhost:8443
我正在寻找的一个例子:
do_tls_with_pkcs(key=’pkcs11:URL’, cert=’cert.pem’, verify=’CA-cert.pem’)
据我所知,还没有这样的图书馆。现在我正在寻找一种解决方法。

我已经读过,如果以这种方式编译 openssl、libp11 和 python,则可以抽象所有这些,因此简单的请求调用将通过 HSM,对应用程序代码透明。虽然,我找不到任何关于如何做到这一点的 Material 。

最佳答案

我遇到了类似的问题,因为我想在 Python requests 上使用 PKCS#11 token (YubiKey、PIV 小程序) .

我想出了https://github.com/cedric-dufour/scriptisms/blob/master/misc/m2requests.py

它是不完美的,因为它不使用连接池并且不支持 HTTP 流或代理 - 就像请求的库存 HTTPS 适配器一样 - 但它完成了与需要 mTLS 的后端的简单连接的工作。

关于python - 如何使用 PKCS11 在 python 中建立 TLS session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58398697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com