用于创建Microsoft样式的“pkcs 7续订请求”的Python模块

pkcs7csr的Python项目详细描述


https://travis-ci.org/magnuswatn/pkcs7csr.svg?branch=masterhttps://codecov.io/gh/magnuswatn/pkcs7csr/branch/master/graph/badge.svghttps://badge.fury.io/py/pkcs7csr.svg

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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用Java将JSON转换为哈希映射   java如何通过使用MapStruct从源对象复制值来填充目标对象内部的映射?   注入泛型类型为@InjectGuice的类时发生java错误   字符串如何在JavaIDE中导入基本符号   在Java中将JSON转换为List<List<String>>   java Java9 HttpClient SSLHandshakeException   java jOOQ代码生成器   java如何调整图标(图像按钮),使其不会放大?   java我可以在使用Eclipse时安装2个或更多Android SDK吗   sqlite Java实现DAO   如何解决此错误?“java.lang.NoSuchFieldError:org.apache.http.conn.ssl.SSLConnectionSocketFactory上的实例。<clinit>。”   java Maven:将基于OSP的zip文件解压缩到WEBINF/lib   java如何在每次调用函数时获取当前gps位置?