Как создать цепочку сертификатов с помощью keytool?

Я хочу создать цепочку сертификатов в Java следующим образом:

ca.mycompany.com
|--asia.mycompany.com
   |--india.mycompany.com

где ca.mycompany.com является корневым сертификатом (самоподписанным).

Я знаю, что это возможно с OpenSSL. Но можно ли достичь этого с помощью keytool?

если нет, Могу ли я достичь этого с помощью библиотеки Mozilla NSS?

2 ответов


есть пример в документация keytool что показывает, как это сделать:

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. создайте новую пару ключей, что подразумевает создание самозаверяющего сертификата (корневого ЦС).
  2. щелкните правой кнопкой мыши на корневом сертификате CA и выберите "подписать новую пару ключей", это создает сертификат sub CA и пару ключей.
  3. право нажмите на сертификат sub CA и снова выберите "подписать новую пару ключей".

Signing a new certificate

результирующая цепочка:

enter image description here


Это прекрасный учебник, который поможет вам пройти процесс создание цепочки сертификатов с помощью keytool. В принципе, процесс заключается в том, что вам нужно подписать сертификат ключами из CA, а затем установить сертификат в созданное хранилище ключей.