用于创建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第三方库


热门话题
如何将数据从浏览器拖放到具有自定义MIME类型的java swing应用程序中?   java JMockit:如何模拟受保护的方法?   java为什么待办事项已满时服务器socket连接未被拒绝?   java我应该如何并行化计算代价高昂的for循环并整理迭代结果?   java如何以不同的方式编写这部分代码?   java代码没有看到JTextField的值,尽管它显示在接口中   java我对Spring boot中的bean有问题   java在客户端使用CometD获取传输和EOF异常   如何在Java libGDX中正确地为游戏添加示意图   java捕获异常类型两次   java有没有办法在systemPath中使用变量来实现systemscope依赖关系?   在Java中导入多个类文件   java在Visual Studio代码中配置JDK   java我需要帮助在for循环中使用大写这个词,这个词不是用eclipse编写的,而是从txt文件导入的   JAVAutil。scanner类Java读取的输入值太多   java REST Web服务是否支持提供zip文件的范围标头?   java在java代码中生成安全的SQL