Keytool JKS

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]