Назад | Перейти на главную страницу

Могу ли я импортировать сертификат SSL, созданный центром сертификации, в мое хранилище ключей Java?

Я пытаюсь импортировать сертификат, подписанный ЦС, в хранилище ключей Java. Все инструкции, которые я могу найти для этого, говорят мне сначала создать хранилище ключей и запрос подписи (CSR) с помощью инструмента ключей Java, затем подписать CSR центром сертификации, а затем импортировать подписанный сертификат обратно в хранилище ключей.

Что ж, глупый я не прочитал прекрасное руководство и попросил CA создать сертификат онлайн для меня вместо того, чтобы загружать мой собственный CSR. Теперь у меня есть:

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

keytool -import -trustcacerts -alias root -file ca.pem -keystore mykeystore.jks
keytool -import -trustcacerts -alias intermediate -file sub.class1.server.ca.pem -keystore mykeystore.jks
keytool -import -alias mydomain mydomain.crt -keystore mykeystore.jks

Итак, содержимое хранилища ключей теперь выглядит так:

intermediate, Jul 16, 2015, trustedCertEntry, 
Certificate fingerprint (SHA1): 0A:D3:...
root, Jul 16, 2015, trustedCertEntry, 
Certificate fingerprint (SHA1): 3E:2B:...
mydomain, Jul 16, 2015, trustedCertEntry, 
Certificate fingerprint (SHA1): 18:F2:...
selfsigned, Feb 4, 2015, PrivateKeyEntry, 
Certificate fingerprint (SHA1): 2B:74:...

К сожалению, служба, которую я пытаюсь защитить (сервер JIRA), недоступна при использовании псевдонима mydomain. Когда я использую «самоподписанный» псевдоним, который представляет собой самозаверяющий сертификат, который я создал из хранилища ключей ранее, при том, что все остальные настройки идентичны, служба может быть легко доступна (за исключением предупреждения о самозаверяющем сертификате из курс); поэтому я полагаю, что проблема в сертификате, созданном ЦС.

Я безуспешно пытался объединить файлы mydomain.crt и mydomain.key, как это было предложено в этом потоке: Импорт цепочки сертификатов PEM и ключей в Java Keystore

Что-то я делаю не так? Можно ли вообще импортировать сертификат, созданный третьей стороной, в существующее хранилище ключей Java? Или мне нужно отозвать этот сертификат и снова пройти процесс с самодельным CSR, извлеченным из моего хранилища ключей?

Я делал это раньше, используя хранилище ключей PKCS12:

cat ca.pem sub.class1.server.ca.pem > chain.pem
openssl pkcs12 -export -inkey mydomain.key -certfile chain.pem \
      -out mydomain.p12 -in mydomain.pem -name mydomain

После этого используйте его напрямую, указав тип хранилища ключей как PKCS12 или конвертируйте в JKS с помощью keytool:

keytool -importkeystore -srckeystore mydomain.p12 \
      -srcstoretype PKCS12 -deststoretype JKS -destkeystore mydomain.jks