用于创建Microsoft样式的“pkcs 7续订请求”的Python模块
pkcs7csr的Python项目详细描述
python模块,用于创建用于active directory证书服务的微软风格的“pkcs 7续订请求”。
这允许非IIS Web服务器从ADCS服务器自动续订其证书。
关于PKCS 7个续订请求
一个PKCS第7更新请求的要点是,您证明您拥有现有的有效证书,因此被授权获得具有相同主题的新证书。
它们由一个普通的pkcs 10 csr和一个包含原始证书的特殊续订证书扩展组成。然后将其放置在pkcs 7结构中,并用属于原始证书的私钥签名,从而证明您是原始证书的合法所有者。然后允许您使用与原始证书具有相同主题(和扩展名)的证书。
ADCS配置
<> P>为了使工作顺利进行,您的模板应具有启用“CA证书管理器批准”的选项,但允许以“有效的现有证书”重新注册。用于重新注册的服务帐户必须具有注册权限。然后,第一个证书需要由ca管理器批准,但续订可以自动进行。显然重要的是要彻底验证第一个证书,因为它可以在实践中永远使用。此外,如果相关密钥被泄露,则必须撤销所有未过期的证书。
安装
$ pipenv install pkcs7csr
示例用法
使用pkcs7csr和certsrv续订证书:
importpkcs7csrfromcertsrvimportCertsrvfromcryptographyimportx509fromcryptography.hazmat.backendsimportdefault_backendfromcryptography.hazmat.primitivesimportserialization# Read the certificate and key from filewithopen('/etc/pki/tls/certs/my_adcs_cert.pem','r')asopen_file:cert=x509.load_pem_x509_certificate(open_file.read(),default_backend())withopen('/etc/pki/tls/private/my_adcs_key.pem','r')asopen_file:key=serialization.load_pem_private_key(open_file.read(),password=None,backend=default_backend())# Create an PKCS #7 renewal requestcsr=pkcs7csr.create_pkcs7csr(cert,key)# Submit to the CA server using certsrvcertsrv=Certsrv('my-adcs-server.example.net','myUser','myPassword')pem_cert=certsrv.get_cert(csr,'myTemplate')# Write the new cert to the filewithopen('/etc/pki/tls/certs/my_adcs_cert.pem','w')asopen_file:open_file.write(pem_cert)# Reload apache or whatever here