我試圖在不使用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. 在PHP中生成SAN CSR
- 2. 從CSR生成PFX
- 3. 使用BouncyCastle API生成CSR
- 4. phpseclib csr和密鑰生成
- 5. 爲多域生成CSR
- 6. 使用2個OU名稱生成CSR
- 7. 使用OpenSSL從SecKey生成CSR
- 8. 如何生成CSR像它IIS
- 9. 生成CSR,私鑰不會創建OSX
- 10. splancs包中的csr函數在多邊形外部生成點
- 11. 生成在python
- 12. 生成在Python
- 13. 生成在Python
- 14. 生成在Python
- 15. 生成在Python
- 16. 重新生成.KEY和.PFX文件中的.CSR文件?
- 17. 如何使用java從存在密鑰庫生成csr
- 18. 在iPhone應用上使用安全框架生成CSR?
- 19. 在python中生成IMEI
- 20. 在Python中生成熱圖
- 21. 在Python中生成URL?
- 22. Python生成Python
- 23. 如何使用存儲在智能卡中的密鑰生成CSR
- 24. OpenSSL在csr文件中生成未知的電子郵件地址?
- 25. 在C#中生成X.509證書密鑰對和簽名請求(CSR)
- 26. 從根CA生成證書基於.CSR文件
- 27. Bouncycastle公司生成的CSR缺少公鑰和屬性
- 28. 如何爲使用Nginx和Apache的SSL生成CSR?
- 29. 爲根域生成CSR(包括www還是不是?)
- 30. BouncyCastle或OpenSSL僅用公鑰生成證書籤名請求(CSR)
你不能使用任何工具包,或只是OpenSSL? 如果您有權訪問ASN.1編碼器,則PKCS#10(證書請求格式)非常簡單。 – 2010-07-16 04:28:58