Довольно большая проблема, с которой я часто сталкиваюсь, заключается в том, что при генерации CSR для получения нашего сертификата хранилище ключей (хранилище ключей jks в формате Sun) не выводит ключ .key и не предоставляет никаких средств для получения ключа .key.Поэтому я всегда получал .pem / .crt без возможности использовать его с Apache2, который не может прочитать хранилище ключей JKS, как Tomcat, но вместо этого требует распакованную пару .key + .pem / .crt.
Для начала получите «копию» существующего хранилища ключей и перейдите к 5-й команде ниже или создайте свою собственную, например, так:
C:\Temp>keytool -genkey -alias tomcat -keyalg RSA -keystore
keystore.jks -keysize 2048 -validity 730 -storepass changeit
Затем, при необходимости, создайте 2-летний CSR изатем импортируйте ответ CSR в следующем трехэтапном процессе:
C:\Temp>keytool -certreq -alias mydomain -keystore keystore.jks
-file mydomain.csr
C:\Temp>keytool -import -trustcacerts -alias root -file
RootPack.crt -keystore keystore.jks -storepass changeit
C:\Temp>keytool -import -trustcacerts -alias tomcat -file mydomain.response.crt
-keystore keystore.jks -storepass changeit
Чтобы это работало, и если у вас уже есть файл хранилища ключей JKS, который вы используете для сервера приложений Tomcat, выполните следующие действия:
Сначала получите отформатированный сертификат DER (двоичный файл) в файл с именем «exported-der.crt»:
C:\Temp>keytool -export -alias tomcat -keystore keystore.jks -file
exported-der.crt
Затем просмотрите и проверьте его:
C:\Temp>openssl x509 -noout -text -in exported-der.crt -inform der
Теперь вам нужно преобразовать его в формат PEM, который более широко используется в приложениях, таких как Apache и OpenSSL, для преобразования PKCS12:
C:\Temp>openssl x509 -in exported-der.crt -out exported-pem.crt
-outform pem -inform der
Затем загрузите и используйте ExportPriv, чтобы получитьнезашифрованный закрытый ключиз вашего хранилища ключей:
C:\Temp>java ExportPriv <keystore> <alias> <password> > exported-pkcs8.key
Теперь вы, вероятно, понимаете, что закрытый ключ экспортируется в формате PCS PKCS # 8.Чтобы получить его в формате RSA, который работает с Apache (PKCS # 12 ??), вы можете выполнить следующую команду:
C:\Temp>openssl pkcs8 -inform PEM -nocrypt -in exported-pkcs8.key
-out exported-pem.key