python - 是否可以使用 python 创建带有 sha_hash 的 SHACertificate?
问题描述
我看到使用 Java 可以做到这一点,我使用 PyJKS 创建了密钥库文件,该文件具有 PrivateKeyEntry 包含供我使用的 sha1 指纹,但我不知道如何将其转换为 SHACertificate 或 sha_hash上传到火力基地
key = crypto.PKey()
key.generate_key(crypto.TYPE_RSA, 4096)
cert = crypto.X509()
cert.get_subject().organizationName = 'myorg'
cert.get_subject().organizationalUnitName = alias
cert.set_serial_number(473289472)
cert.gmtime_adj_notBefore(0)
cert.gmtime_adj_notAfter(365*24*60*60*100)
cert.set_issuer(cert.get_subject())
cert.set_pubkey(key)
cert.sign(key, 'sha256')
dumped_cert = crypto.dump_certificate(crypto.FILETYPE_PEM, cert)
dumped_key = crypto.dump_privatekey(crypto.FILETYPE_PEM, key)
pke = jks.PrivateKeyEntry.new(alias, [dumped_cert], dumped_key, 'rsa_raw')
keystore = KeyStore.new('jks', [pke])
keystore.save(filePath, password)
解决方案
from cryptography.hazmat.primitives import hashes
from cryptography import x509
ks = jks.KeyStore.load(keystore, password)
for alias, pk in ks.private_keys.items():
cert = x509.load_der_x509_certificate((pk.cert_chain[0])[1])
sha1 = project_management.SHACertificate(bytearray(cert.fingerprint(hashes.SHA1())).hex(), "SHA_1")
推荐阅读
- python - wkhtmltopdf 以非零代码 -9 退出。错误。我怎样才能摆脱这个错误?
- arrays - 按 id 组合两个数组
- html - 做什么
标签在html中做什么? - java - 从Keycloak(用户->更新,删除)时如何将事件发送到我的服务器?
- django - 如何将两个条件作为参数传递给 django 中的 get() 查询?
- sql - 识别 SQL 中的特殊字符和数字
- python-3.x - 如何在 Beautiful Soup 中只包含指定的类而不包含子类?
- javascript - 测试扩展类时的 ES6 基类(超级方法)的玩笑模拟方法
- html - 引导菜单和汉堡包在一起
- python - matplotlib/seaborn 中时间直方图中的轴刻度