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

Can I sign an X509 certificate entirely in Python?

我在 Google App Engine (GAE) python 2.7 运行时中工作。

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

我找到了几个guides, that rely on PyOpenSSL

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

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

我可能找到了解决方案:

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

很高兴听到其他答案。

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

来自Cython site

All of this makes Cython the ideal language for wrapping external C libraries, embedding CPython into existing applications, and for fast C modules that speed up the execution of Python code.

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

Can I sign an X509 certificate entirely in Python?

几乎可以肯定,但我认为目前没有任何可用的纯 Python 实现。我能找到的最接近的是 oscrypto,但能否签署 X509 证书取决于 ctypes 模块是否可用。

作者还写了一个模块,叫certbuilder,号称是"Python library for generating and signing X.509 certificates",但是依赖oscrypto模块

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

Can I sign an X509 certificate on a Google App Engine Python Standard Environment?

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

您确实可以访问 PyCrypto 模块,尽管 a Python example of reading an X509 certificate using it, and a C++ example of verifying an X509 certificate, the Python bindings don't seem to have complete support for encoding and decoding ASN.1. You might be able to combine PyCrypto with asn1crypto 由与 oscrypto 相同的作者提供完整的 ASN.1 支持。

如果 none 这些解决方案有用,那么 GAE Python Flexible Environment or a GAE Custom Runtime 应该可以让您安装 PyOpenSSL 软件包,但您必须联系他们的技术支持团队找出答案。