1.使用以下命令行生成新密钥:
keytool -genkeypair -alias upload -keyalg RSA -keysize 2048 -validity 9125 -keystore keystore.jks
此密钥必须为 2048 位 RSA 密钥,有效期为 25 年。
2.将该密钥的证书导出为 PEM 格式:
keytool -export -rfc -alias upload -file upload_certificate.pem -keystore keystore.jks
1.查看密钥方式:
keytool -list -v -keystore ~全路径/keystore.jks -alias 别名 -storepass 密码 -keypass 密码
2.生成p12文件方式:
keytool -importkeystore -srckeystore 全路径/keystore.jks -destkeystore 全路径/keystore.jks -deststoretype pkcs12
3.生成pem文件指令:
keytool -export -rfc -alias olive -file upload_certificate.pem -keystore 全路径/keystore.jks
4.DER转PEM
openssl x509 -in deployment_cert.der -inform der -outform pem -out cert.pem
第1步:生成一个私钥
以下示例使用NIST P-256曲线生成椭圆曲线私钥,并将其写入key.pem。这种类型的私钥适用于Google Pay API。
openssl ecparam -name prime256v1 -genkey -noout -out upload_certificate.pem
可选:查看私钥和公钥
以下示例显示如何查看上一步中生成的私钥和公钥:
openssl ec -in upload_certificate.pem -pubout -text -noout
第2步:生成Base64编码的公钥
Google Pay API要求公钥以未压缩的点格式进行Base64编码。要从上一步中生成的私钥生成此格式的公钥,请使用以下命令:
openssl ec -in key.pem -pubout -text -noout 2> /dev/null | grep “pub:” -A5 | sed 1d | xxd -r -p | base64 | paste -sd “\0” -
生成Base64编码的公钥:BEoDV5BTrDCI7orEbhpdMvGBJ9jSHPHV1vc98dHzNLzPfJkJilJfRsyguhyiLZGPhVnK3ockia2ezHtenwZzoto=
第3步:以PKCS8格式生成Base64编码的私钥
要执行解密,您需要将您的私钥传递给Tink库。Tink库接受一个ECPrivateKey对象或String包含以Base64编码的PKCS8格式编码的私钥。要将步骤1中生成的私钥转换为Base64编码的PKCS8格式,请使用以下命令:
openssl pkcs8 -topk8 -inform PEM -outform DER -in key.pem -nocrypt | base64 | paste -sd “\0” -
以PKCS8格式生成Base64编码的私钥:MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg/Iqy3kV3j8sJL6SIvIFQ88HGK5Id6fAwso6oN5JDi7OhRANCAARKA1eQU6wwiO6KxG4aXTLxgSfY0hzx1db3PfHR8zS8z3yZCYpSX0bMoLocoi2Rj4VZyt6HJImtnsx7Xp8Gc6La