keytool 创建 jks 格式证书,以及转换 p12
创建命令
1
| keytool -genkeypair -alias [keyname] -keystore [demo.jks] -validity [365]
|
选择密钥算法 ECDSA
1
| keytool -genkeypair -alias [keyname] -keystore [demo.jks] -validity [365] -keyalg ec
|
最佳实践:
store 密码 与 key 密码保持一致。
密码长度大于8、包含大小写、含特殊字符:`!@#$%^&*()-_=+\|[{}];:’”,.<>/?
检查校验
1
| keytool -list -v -keystore [demo.jks]
|
或
base64 格式
主要用于 Facebook
1
| keytool -exportcert -alias [keyname] -keystore [demo.jks] | openssl sha1 -binary | openssl base64
|
兼容 Java
Java 最新版本 keytool 不再支持输出证书 MD5,可以使用 openssl 提取
MD5
1
| keytool -exportcert -alias [keyname] -keystore [demo.jks] | openssl dgst -md5 -c
|
SHA1
1
| keytool -exportcert -alias [keyname] -keystore [demo.jks] | openssl dgst -sha1 -c
|
SHA256
1
| keytool -exportcert -alias [keyname] -keystore [demo.jks] | openssl dgst -sha256 -c
|
转换 pem 格式
常用于 Google Play 上传证书
1
| keytool -export -rfc -keystore [demo.jks] -alias [keyname] -file [certificate.pem]
|
转换 p12 格式
将使用 EC 算法的 jks 转换为 p12 格式
1
| keytool -importkeystore -srckeystore [demo.jks] -srcstoretype JKS -deststoretype pkcs12 -destkeystore [demo.p12]
|
openssl 提取 p12 私钥
1
| openssl pkcs12 -nodes -in [demo.p12] -out [demo.private.pem]
|
openssl 提取公钥
1
| openssl pkey -in [demo.private.pem] -pubout -out [demo.public.pem]
|
生成 csr
1
| keytool -certreq -alias [keyname] -keystore [demo.p12] -storetype pkcs12 -file [demo.csr]
|