文章目录
- Android开发 使用platform.pk8和platform.x509.pem文件生成platform.jks文件
- 环境准备
- 使用OpenSSL工具进行格式转换
- 1.将platform.pk8转换为PEM格式:
- 2.使用platform.pem和platform.x509.pem生成PKCS#12格式的PFX文件(platform.p12):
- 使用Keytool工具进行密钥导入
- 3.使用Keytool导入密钥库:
- 在Android Studio的build.gradle文件中进行配置
Android开发 使用platform.pk8和platform.x509.pem文件生成platform.jks文件
使用platform.pk8和platform.x509.pem生成platform.jks文件的过程涉及多个步骤,主要包括使用OpenSSL和Keytool工具进行格式转换和密钥导入。
环境准备
编译过AOSP源码,执行过source build/envsetup.sh命令
在aosp build/target/product/security目录下查看key:
**.pk8代表私钥,.x509.pem公钥,它们都是成对出现。**将platform.pk8和platform.x509.pem文件放在aosp根目录下,在在aosp根目录下执行以下命令:
使用OpenSSL工具进行格式转换
首先,你需要将platform.pk8和platform.x509.pem文件转换为PKCS#8格式的PEM文件(platform.pem)和PKCS#12格式的PFX文件(platform.p12)。这可以通过使用OpenSSL命令行工具完成,具体命令如下:
1.将platform.pk8转换为PEM格式:
openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem
openssl pkcs8
: 这是 OpenSSL 命令行工具中用于处理 PKCS#8 格式私钥的命令。-inform DER
: 这个选项指定输入文件的编码格式为 DER(Distinguished Encoding Rules)。DER 是一种用于编码 ASN.1 数据的二进制格式。-nocrypt
: 这个选项表示私钥是不加密的。如果私钥是加密的,你需要提供密码来解密它。-in platform.pk8
: 指定输入私钥文件的路径和名称。在这个例子中,输入文件是platform.pk8
,它应该是一个 DER 编码的 PKCS#8 格式私钥文件。-out platform.pem
: 指定输出私钥文件的路径和名称。在这个例子中,输出文件是platform.pem
,它将是一个 PEM 编码的私钥文件。
执行这个命令后,你会得到一个名为 platform.pem
的文件,其中包含了从 platform.pk8
文件中提取并转换为 PEM 编码的私钥。这个 PEM 编码的私钥可以用于需要私钥的任何应用程序或服务,例如 SSL/TLS 通信、代码签名等。
2.使用platform.pem和platform.x509.pem生成PKCS#12格式的PFX文件(platform.p12):
openssl pkcs12 -export -in platform.x509.pem -out platform.p12 -inkey platform.pem -name keyAlias -password pass:keyPassword
openssl pkcs12
: 这是 OpenSSL 命令行工具中用于处理 PKCS#12 格式密钥库的命令。-export
: 这个选项表示要导出一个 PKCS#12 密钥库。-in platform.x509.pem
: 指定输入证书文件的路径和名称。在这个例子中,证书文件是platform.x509.pem
。-out platform.p12
: 指定输出 PKCS#12 密钥库文件的路径和名称。在这个例子中,输出文件是platform.p12
。-inkey platform.pem
: 指定输入私钥文件的路径和名称。在这个例子中,私钥文件是platform.pem
。-name keyAlias
: 设置密钥库中条目的别名。在这个例子中,别名是keyAlias
。别名是在导入密钥库到 Java 或其他平台时用于引用密钥的标识符。-password pass:keyPassword
: 设置 PKCS#12 密钥库的密码。在这个例子中,密码是keyPassword
。这个密码用于保护密钥库文件,确保只有知道密码的人才能访问其中的密钥和证书。
执行这个命令后,你会得到一个名为 platform.p12
的 PKCS#12 密钥库文件,其中包含了从 platform.x509.pem
证书和 platform.pem
私钥导入的密钥和证书。你可以将这个密钥库文件用于需要证书和私钥的任何应用程序或服务,例如 SSL/TLS 通信、代码签名等。
使用Keytool工具进行密钥导入
接下来,使用Keytool将PFX文件转换为JKS文件(platform.jks):
3.使用Keytool导入密钥库:
keytool -importkeystore -destkeystore platform.jks -deststoretype JKS -deststorepass storePassword -srckeystore platform.p12 -srcstoretype PKCS12 -alias keyAlias -srcstorepass keyPassword
keytool
: 这是 Java 提供的密钥和证书管理工具。-importkeystore
: 这个选项表示要执行导入密钥库的操作。-destkeystore platform.jks
: 指定目标密钥库的路径和名称。在这个例子中,目标密钥库是platform.jks
。-deststoretype JKS
: 指定目标密钥库的类型。在这个例子中,类型是 JKS(Java KeyStore)。-deststorepass storePassword
: 设置目标密钥库的密码。在这个例子中,密码是storePassword
。这个密码用于保护密钥库文件,确保只有知道密码的人才能访问其中的密钥和证书。-srckeystore platform.p12
: 指定源密钥库的路径和名称。在这个例子中,源密钥库是platform.p12
,它是一个 PKCS#12 格式的密钥库。-srcstoretype PKCS12
: 指定源密钥库的类型。在这个例子中,类型是 PKCS#12。-alias keyAlias
: 设置导入条目在目标密钥库中的别名。在这个例子中,别名是keyAlias
。别名是在引用密钥库中的条目时使用的标识符。-srcstorepass keyPassword
: 设置源密钥库的密码。在这个例子中,密码是keyPassword
。这个密码用于访问源密钥库中的密钥和证书。
执行这个命令后,你会得到一个名为 platform.jks
的 Java 密钥库文件,其中包含了从 platform.p12
密钥库中导入的密钥和证书。你可以将这个 Java 密钥库文件用于需要证书和私钥的任何 Java 应用程序或服务。
在Android Studio的build.gradle文件中进行配置
signingConfigs {
main {
storeFile file('./platform.jks')
storePassword "123456"
keyAlias "platform"
keyPassword "123456"
}
}
如果对你有帮助,就一键三连呗(关注+点赞+收藏),我会持续更新更多干货~~