文章目录
- 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"
        }
    }
如果对你有帮助,就一键三连呗(关注+点赞+收藏),我会持续更新更多干货~~



















