openssl 使用说明
将pem格式的公钥保存为der格式的公钥
openssl rsa -pubin -inform PEM -in <filename of key in PEM format> -outform DER -out <filename of key in DER format>
writing RSA key
pem格式证书转换成der格式证书
openssl x509 -outform der -in your-cert.pem -out your-cert.crt获取证书里的公钥,保存格式为pem
openssl x509 -pubkey -noout -in cert.pem > pubkey.pem
获取证书里的md5
openssl x509 -noout -fingerprint -md5 -inform pem -in [certificate-file.crt]
获取证书里的sha1
openssl x509 -noout -fingerprint -sha1 -inform pem -in [certificate-file.crt]
获取证书里的sha256
openssl x509 -noout -fingerprint -sha256 -inform pem -in [certificate-file.crt]
私钥签名文件:
openssl rsautl -sign -in 12.txt -inkey private.key -out sig
公钥验证签名:
openssl rsautl -verify -pubin -inkey pubkey.pem -in sig -out ppp
将安卓apk里的cert.rsa文件转换成pem格式的证书文件:openssl pkcs7 -in CERT.RSA -inform DER -print_certs -out cert.pem
查卡pem证书文件信息,opensll x509 -in cert.pem -text
jks的keystore转换成bks的keysotre,使用软件portecle软件进行转换,keystore有两个密码,一个进入keystore的密码,另外一个是访问keystore里面密码;
使用opensll命令,生成无des的私钥,
openssl pkcs12 -nocerts -in "YourPKCSFile" -out private.key -nodes
使用openssl生成签名使用的公钥和私钥
- openssl genrsa -out key.pem 2048
- openssl req -new -key key.pem -out request.pem
- openssl x509 -req -days 9999 -in request.pem -signkey key.pem -out certificate.pem
- openssl pkcs8 -topk8 -outform DER -in key.pem -inform PEM -out key.pk8 -nocrypt
使用的密钥信息
使用安卓的公钥和私钥,生成一个系统的keystore
安卓系统提供的证书为公钥shared.x509.pem和私钥shared.pk8两种格式,使用这两种格式可以对app进行签名
openssl的命令可以参考 openssl pkcs12 和openssl pcks8两种证书的格式;
1 把pk8转换成pk12格式
openssl pkcs8 -in shared.pk8 -inform DER -outform PEM -out shared.priv.pem -nocrypt
2 生成pk12的密钥问文件
openssl pkcs12 -export -in shared.x509.pem -inkey shared.priv.pem -out shared.pk12 -name androiddebugkey
3 生成keystore
keytool -importkeystore -deststorepass android -destkeypass android -destkeystore debug.keystore -srckeystore shared.pk12 -srcstoretype PKCS12 -srcstorepass android -alias androiddebugkey
通过openssl命令进行生成证书命令,第一步生成pkcs1的公钥和私钥,第二部生成公钥的x509证书,第三步生成通过pkcs1的私钥生成pkcs8的格式,第四部通过pkcs8的der格式生成pem格式的密钥文件,第五步通过x509和pkcs8的私钥生成一个pkcs12的证书文件。这里就结束了。