Как создать файл .key и .crt из файла JKS для сервера httpd apache

19

У меня есть только файл mycert.jks . Теперь мне нужно извлечь и сгенерировать .key и .crt файл и использовать его на сервере Apache httpd.

SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt 
SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.key 

Кто-нибудь может перечислить все шаги, чтобы сделать это. Я искал, но нет конкретного примера, чтобы понять, смешанные и согласованные шаги.

Пожалуйста, предложите!

[РЕДАКТИРОВАТЬ] Получение ошибки после выполнения следующих шагов ответа.

8/‎21/‎2015 9:07 PM] Sohan Bafna: 
    [Fri Aug 21 15:32:03.008511 2015] [ssl:emerg] [pid 14:tid 140151694997376] AH02562: Failed to configure certificate 0.0.0.0:4545:0 (with chain), check /home/certs/smp_c
    ert_key_store.crt
    [Fri Aug 21 15:32:03.008913 2015] [ssl:emerg] [pid 14:tid 140151694997376] SSL Library Error: error:0906D06C:PEM routines:PEM_read_bio:no start line (Expecting: TRUSTED
     CERTIFICATE) -- Bad file contents or format - or even just a forgotten SSLCertificateKeyFile?
    [Fri Aug 21 15:32:03.008959 2015] [ssl:emerg] [pid 14:tid 140151694997376] SSL Library Error: error:140DC009:SSL routines:SSL_CTX_use_certificate_chain_file:PEM lib 
Сохан
источник

Ответы:

29

.jks - это хранилище ключей, которое есть в Java

используйте бинарный инструмент keytool из Java.

экспортировать .crt :

keytool -export -alias mydomain -file mydomain.der -keystore mycert.jks

преобразовать сертификат в PEM :

openssl x509 -inform der -in mydomain.der -out certificate.pem

экспортировать ключ :

keytool -importkeystore -srckeystore mycert.jks -destkeystore keystore.p12 -deststoretype PKCS12

Концерт PKCS12 ключ к незашифрованному PEM :

openssl pkcs12 -in keystore.p12  -nodes -nocerts -out mydomain.key

кредиты:

exeral
источник
Не работает, получаю ошибку
Sohan
экспортированный сертификат в формате DER. добавил шаг, чтобы преобразовать его в PEM
exeral
thnx, это может работать, я еще не пробовал
Сохан
keytool -exportcert -rfcпишет в формате PEM и не нуждается в преобразовании. В качестве альтернативы, если у вас есть p12, он openssl pkcs12 -nokeysзаписывает всю цепочку сертификатов в PEM, что обычно лучше для сервера, использующего OpenSSL (например, httpd), если этот сертификат происходит от реального центра сертификации, а не от самоподписанного сертификата по умолчанию для keytool.
dave_thompson_085
1
Примечание. Псевдоним может быть именем сертификата, если вы знаете, какое это было имя при экспорте. Хотелось упомянуть, что в случае, если люди изо всех сил пытались запустить первую команду.
GM Lucid
19

Вот что я делаю,

Сначала экспортируйте ключ:

keytool -importkeystore -srckeystore mycert.jks -destkeystore keystore.p12 -deststoretype PKCS12

Для файла сертификата apache ssl вам нужен только сертификат:

openssl pkcs12 -in keystore.p12 -nokeys -out my_key_store.crt

Для файла ключей ssl вам нужны только ключи:

openssl pkcs12 -in keystore.p12 -nocerts -nodes -out my_store.key

Сохан
источник
0

Нашел ответ здесь:

/programming/7580508/getting-chrome-to-accept-self-signed-localhost-certificate?page=2&tab=Votes

Он показал, как создать crt из файла хранилища ключей jks в Chrome на Windows:

  • перейдите по ссылке в браузере, который использует JKS с красной линией и слева будет символ блокировки

  • нажав на незащищенную часть, открывается информационный диалог

  • нажмите на сертификат (недействительный) и когда он откроется нажмите на детали

  • нажмите на копию в файл ... и следуйте инструкциям

В конце у вас есть файл хранилища ключей в CRT

Zeghra
источник