Я пытаюсь импортировать сертификат, подписанный ЦС, в хранилище ключей Java. Все инструкции, которые я могу найти для этого, говорят мне сначала создать хранилище ключей и запрос подписи (CSR) с помощью инструмента ключей Java, затем подписать CSR центром сертификации, а затем импортировать подписанный сертификат обратно в хранилище ключей.
Что ж, глупый я не прочитал прекрасное руководство и попросил CA создать сертификат онлайн для меня вместо того, чтобы загружать мой собственный CSR. Теперь у меня есть:
ca.pem
корневой сертификат ЦСsub.class1.server.ca.pem
промежуточный сертификат ЦСmydomain.crt
подписанный сертификат для моего домена, созданный ЦСmydomain.key
файл закрытого ключа для моего сертификата, созданный ЦСЯ попытался импортировать сертификат в свое хранилище ключей следующим образом:
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