我试图在不使用OpenSSL的情况下在Python中生成CSR。如果有人能指出正确的方向,我会非常感激。在Python中生成CSR
1
A
回答
-2
与其他语言一样,Python只是实现算法。我几乎不知道密码学,但是如果我必须在Python中实现这一点,我会寻找一个关于如何实现CSR的规范。
通过Google和维基百科我找到了this RFC。你的任务是在Python中实现它。
就我个人而言,我可能会首先尝试使用命令行工具(如果需要从Python中调用system()
函数)。
1
m2crypto可能是一个解决方案(请参阅CreateX509Request in the contrib example),虽然它依赖于OpenSSL。
您也可以使用python-nss,它使用Mozilla's NSS library。最近添加了nss.nss.CertificateRequest
。可在网站上的那一刻API文档是不是最新的,但这里有一些指针较新的版本:
- http://koji.fedoraproject.org/koji/packageinfo?packageID=6444
- http://koji.fedoraproject.org/koji/buildinfo?buildID=185589
这也是在CVS:
:pserver:[email protected]:/cvsroot/mozilla/security/python/nss
1
我在过去几天开始使用PyCrypto和PyASN1实现CSR生成器。第一个代码是可用的https://github.com/jandd/python-pkiutils
3
我假设你不想使用命令行openssl本身和Python的lib是好的。
这是我编写的一个帮助函数,用于创建CSR。它从生成的密钥对和CSR返回私钥。该函数依赖于pyOpenSSL.crypto。
def create_csr(self, common_name, country=None, state=None, city=None,
organization=None, organizational_unit=None,
email_address=None):
"""
Args:
common_name (str).
country (str).
state (str).
city (str).
organization (str).
organizational_unit (str).
email_address (str).
Returns:
(str, str). Tuple containing private key and certificate
signing request (PEM).
"""
key = OpenSSL.crypto.PKey()
key.generate_key(OpenSSL.crypto.TYPE_RSA, 2048)
req = OpenSSL.crypto.X509Req()
req.get_subject().CN = common_name
if country:
req.get_subject().C = country
if state:
req.get_subject().ST = state
if city:
req.get_subject().L = city
if organization:
req.get_subject().O = organization
if organizational_unit:
req.get_subject().OU = organizational_unit
if email_address:
req.get_subject().emailAddress = email_address
req.set_pubkey(key)
req.sign(key, 'sha256')
private_key = OpenSSL.crypto.dump_privatekey(
OpenSSL.crypto.FILETYPE_PEM, key)
csr = OpenSSL.crypto.dump_certificate_request(
OpenSSL.crypto.FILETYPE_PEM, req)
return private_key, csr
相关问题
- 1. 从CSR生成PFX
- 2. 为多域生成CSR
- 3. 使用OpenSSL从SecKey生成CSR
- 4. 生成在python
- 5. 生成在Python
- 6. 生成在Python
- 7. 在iPhone应用上使用安全框架生成CSR?
- 8. 如何使用java从存在密钥库生成csr
- 9. 在Python中生成URL?
- 10. Python生成Python
- 11. 在C#中生成X.509证书密钥对和签名请求(CSR)
- 12. 如何使用存储在智能卡中的密钥生成CSR
- 13. 生成CSR&RSA私钥(用于SSL证书)
- 14. 从csr文件转换/生成密钥库文件?
- 15. 生成没有国家,州或组织单位的CSR
- 16. 从根CA生成证书基于.CSR文件
- 17. 生成与Python
- 18. 的Python - 生成
- 19. 使用keytool生成CSR文件时,它是否必须在托管服务器上生成?
- 20. 类中的python生成器
- 21. 如何在Python中修改生成器?
- 22. 在python中快速生成3D噪音
- 23. 在Python中生成唯一的排列
- 24. 在Python中生成JSON模式
- 25. 在Python中上下生成随机点
- 26. FPDF在Python中生成空白页面
- 27. 帮助在Python中生成Facebook API“Sig”
- 28. 在Python中生成一个临时URL
- 29. 在python中创建生成器
- 30. 用python代码在Javascript中生成Hmac
你不能使用任何工具包,或只是OpenSSL? 如果您有权访问ASN.1编码器,则PKCS#10(证书请求格式)非常简单。 – 2010-07-16 04:28:58