Django应用程序,用于生成和签署模型。
项目描述
用于生成x509证书并使用PKCS#7标准签署模型的程序
http://bitbucket.org/bearstech/django-signature/
测试版:不适合生产使用
功能
PKI
生成(或加载)RSA密钥并将它们存储在Django模型中
生成x509证书并将它们存储在Django模型中
加载x509证书并查找与其他证书和密钥的关系
生成(或加载)x509请求并将它们存储在Django模型中
为根CA生成自签名的x509
验证证书链(使用CRLs)
签署证书请求
数字签名
使用PKCS#7标准签署/验证文本
使用PKCS#7标准签署/验证简单模型
支持FileField(使用sha512摘要)
良好的测试覆盖率
待办事项
签署复杂模型
使用OpenSSL.generate_index()生成索引
改进配置
证书加载带有续订
……等等
示例
有一个简单的PKI示例
from signature.models import Key, Certificate, CertificateRequest from datetime import datetime ca_pwd = "R00tz" c_pwd = "1234" # CA and Client keys ca_key = Key.generate(ca_pwd) c_key = Key.generate(c_pwd) # CA Cert ca_cert = Certificate() ca_cert.CN = "Admin" ca_cert.C = "FR" ca_cert.key = ca_key ca_cert.days = 150 ca_cert.is_ca = True ca_cert.generate_x509_root(ca_pwd) ca_cert.save() # Client's request rqst = CertificateRequest() rqst.CN = "World Company" rqst.C = "FR" rqst.key = c_key rqst.sign_request(c_pwd) rqst.save() # Sign client's request and return certificate # (you can give to Client's certificate CA capabilities with ca=True) c_cert = ca_cert.sign_request(rqst, 150, ca_pwd, ca=False) # Verify created certificate : c_cert.check() # Revoke certificate : c_cert.revoke(c_cert, ca_pwd) # Import a Key / Certificate: imported = Key.new_from_pem(pem_str, passphrase="gigowatt", user=None) imported = Certificate.new_from_pem(pem_str)
有关更多示例,请参阅tests/test_project/apps/testapp/tests.py中的SignaturePKITestCase
有一个简单的签名示例
# Sign Text text = "This is a data" data_signed = c_cert.sign_text(text, c_pwd) result = c_cert.verify_smime(data_signed) # Sign Model (get text) auth1 = Author(name="Raymond E. Feist", title="MR") data_signed = c_cert.sign_model(auth1, c_pwd) result = c_cert.verify_smime(data_signed) # Sign Model (get Signature) auth1 = Author(name="Raymond E. Feist", title="MR") signed = c_cert.make_signature(auth1, self.c_pwd) signed.check_pkcs7(signed)
有关更多示例,请参阅tests/test_project/apps/testapp/tests.py中的SignatureTestCase
测试
cd tests
python bootstrap.py
./bin/buildout.py -v
./bin/test-1.2 或 ./bin/test-1.1
需求
Django >= 1.1
OpenSSL