常用的keytool命令
导入证书
$ keytool -import -keystore server.keystore.jks -alias server -file server.pem
查看证书内容
$ keytool -list -v -keystore server.keystore.jks
删除证书
$ keytool -delete -keystore server.keystore.jks -alias server
生成私钥
$ keytool -keystore server.keystore.jks -alias server -validity {validity} -genkey
{validity}表示证书有效天数。
导出证书请求文件
$ keytool -keystore server.keystore.jks -alias server -certreq -file server.csr
CA签发证书
$ openssl x509 -req -CA ca-cert -CAkey ca-key -in server.csr -out server.crt -days {validity} -CAcreateserial -passin pass:{ca-password}
ca-cert: CA的证书
ca-key: CA的私钥
ca-password: CA的密码
server.csr: 证书请求文件
server.crt: 被CA签名后的服务器证书
- 一定要带上-CAcreateserial参数,否则可能报下面的错误:
Getting CA Private Key
ca.srl: No such file or directory
10652:error:06067099:digital envelope routines:EVP_PKEY_copy_parameters:differen
t parameters:crypto\evp\p_lib.c:91:
10652:error:02001002:system library:fopen:No such file or directory:crypto\bio\b
ss_file.c:74:fopen('ca.srl','r')
10652:error:2006D080:BIO routines:BIO_new_file:no such file:crypto\bio\bss_file.
c:81:
查了一下资料,https://blog.csdn.net/liuyu60305002/article/details/7865103。
因为ca.srl是一个序列号文件,因为这个文件的缺失,导致没法进行下去,但是可以使用-CAcreateserial 参数进行生成随机的序列号。