如何使用 Python 创建 JKS 或 P12 密钥库

Posted

技术标签:

【中文标题】如何使用 Python 创建 JKS 或 P12 密钥库【英文标题】:How to create a JKS or P12 keystore with Python 【发布时间】:2020-07-14 18:26:09 【问题描述】:

我正在编写一个 Python 3 脚本,除此之外,它有时需要创建一个 .JKS 或 .P12 密钥库。我曾经有一个使用 keytool 的 bash 脚本:

keytool -genkey -keyalg RSA -alias certAlias \
        -keystore keystore.jks -storepass $keyPass \
        -validity 360 -keysize 2048 \
        -noprompt -dname "CN=com.myCompany, OU=ID, O=AwesomeSoft, L=SF, S=CA, C=US" \
        -keypass $keyPass

mv ./keystore.jks src/main/resources/

现在我正在将相同的功能从该 bash 脚本移动到 python,我有一些问题需要解决,任何指针都会非常受欢迎。你可能会注意到上面的示例是针对 jks,而不是 p12。 .. 较新的版本必须能够,这取决于调用 certType 之前的变量并创建一个或另一个...或创建一个 jks 并稍后将其转换为 p12 ...我对选项持开放态度..

提前致谢!!

【问题讨论】:

【参考方案1】:

找到我的答案:

import os

certAlias = 'cert'
certAlg = 'RSA'
certSigAlg = 'SHA1withRSA'
certExp = '365'
certKeySize = '2048'
certKeyType = 'PKCS12' # Select PKCS12 or JKS 
certKeyPass = 'password123'
fileName = 'keystore'
dname = 'CN=mySite.com'

#

if certKeyType == "PKCS12":
    fileExt = 'p12' 
elif certKeyType == "JKS":
    fileExt = 'jks' 
certFile = fileName + '.' + fileExt

keytool = 'keytool -genkey -noprompt \
            -alias ' + certAlias + ' \
            -keypass ' + certKeyPass + ' \
            -keyalg ' + certAlg + ' \
            -sigalg ' + certSigAlg + '\
            -validity ' + certExp + ' \
            -dname ' + dname + ' \
            -keysize ' + certKeySize + ' \
            -keystore ' + certFile + ' \
            -storepass '+ certKeyPass +' \
            -storetype  ' + certKeyType 

os.system(keytool)

我做了这个并且工作,但我会玩添加更多逻辑......希望它可以帮助任何人。

【讨论】:

以上是关于如何使用 Python 创建 JKS 或 P12 密钥库的主要内容,如果未能解决你的问题,请参考以下文章

如何在 OpenSSL 中将 jks 文件转换为 p12 文件?

需要帮助将 P12 证书转换为 JKS

ktor sslConnector 从 jar p12 pkcs12 jks 密钥库和 mtls 相互 ssl 连接中服务/读取

将 P12 转换为 JKS 证书 Adode AIR to Native Android 问题

从jks证书中提取公钥和私钥(jks证书转pem证书)

nexus配置https(在nexus上配置jks证书方式)