我可以完全用Python签署X509证书吗?

时间:2016-06-25 19:09:38

标签: python python-2.7 google-app-engine ssl x509

我正在使用Google App Engine(GAE)python 2.7运行时。

我需要签名(并且可能还会生成)X509证书(.csr)

我找到了几个guides,它依赖于PyOpenSSL

据我了解,PyOpenSSL是OpenSSL的包装,在App Engine中不可用 Pycrypto可用,但没有针对X509的明确的预建签名方法。

如何仅使用python签署X509 .csr?

3 个答案:

答案 0 :(得分:3)

  

我可以完全用Python签署X509证书吗?

几乎可以肯定,但我认为现有的纯Python实现并不存在。我能找到的最接近的是oscrypto,但能够签署X509证书取决于是否有ctypes模块。

作者还编写了一个名为certbuilder的模块,该模块声称是“用于生成和签署X.509证书的Python库”,但它取决于oscrypto模块。

然而,真正的问题听起来更像......

  

我可以在Google App Engine Python标准环境中签署X509证书吗?

在这种情况下,oscrypto模块可能无济于事,因为根据文档,环境不允许使用ctypes模块。

您可以访问PyCrypto模块,虽然有a Python example使用它读取X509证书,并且C++ example验证X509证书,但Python绑定不会似乎完全支持编码和解码ASN.1。您可以将PyCryptoasn1crypto合并为与oscrypto相同的作者,以获得完整的ASN.1支持。

如果这些解决方案都没有任何用处,那么GAE Python Flexible EnvironmentGAE Custom Runtime应该允许您安装PyOpenSSL包,但是您必须联系他们的技术支持团队找出答案。

答案 1 :(得分:2)

我可能找到了解决方案:

Cryptography.io完全基于python,甚至还提供了如何自我签署证书的教程。

很高兴听到其他答案。

答案 2 :(得分:1)

这不是直接的答案,因为我从不使用C和Cython,但也许可以使用一些C库来完成这项任务。

来自Cython site

  

所有这些使得Cython成为包装外部C的理想语言   库,将CPython嵌入到现有应用程序中,并且快速   C模块,可以加速Python代码的执行。

似乎不是最简单但不是最好的解决方案,但谁知道:)