我想在java中创建证书链,如下所示:
ca.mycompany.com
|--asia.mycompany.com
|--india.mycompany.com
其中ca.mycompany.com是根证书(自签名)。
我知道这可以通过OpenSSL实现。但是有可能用keytool来实现这个目标吗?
如果没有,我可以使用Mozilla NSS库实现这一目标吗?
答案 0 :(得分:24)
keytool documentation中有一个示例说明如何执行此操作:
keytool -genkeypair -keystore root.jks -alias root -ext bc:c
keytool -genkeypair -keystore ca.jks -alias ca -ext bc:c
keytool -genkeypair -keystore server.jks -alias server
keytool -keystore root.jks -alias root -exportcert -rfc > root.pem
keytool -storepass <storepass> -keystore ca.jks -certreq -alias ca | keytool -storepass <storepass> -keystore root.jks -gencert -alias root -ext BC=0 -rfc > ca.pem
cat root.pem ca.pem > cachain.pem
keytool -keystore ca.jks -importcert -alias ca -file cachain.pem
keytool -storepass <storepass> -keystore server.jks -certreq -alias server | keytool -storepass <storepass> -keystore ca.jks -gencert -alias ca -ext ku:c=dig,keyEncipherment -rfc > server.pem
cat root.pem ca.pem server.pem > serverchain.pem
keytool -keystore server.jks -importcert -alias server -file serverchain.pem
您还可以使用KeyStore Explorer非常轻松地生成证书链:
结果链:
答案 1 :(得分:5)
这是一本完美的教程,可帮助您完成creating certificate chain using keytool的过程。基本上,您需要使用CA中的密钥对证书进行签名,然后将证书安装到您创建的密钥库中。