Jak wygenerować plik .key i .crt z pliku JKS dla serwera httpd apache

19

Mam tylko plik mycert.jks . Teraz muszę wyodrębnić i wygenerować plik .key i .crt i użyć go na serwerze httpd Apache.

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

Czy ktoś może wymienić wszystkie kroki, aby to zrobić. Szukałem, ale nie ma konkretnego przykładu do zrozumienia, mieszane i dopasowane kroki.

Proszę zasugeruj!

[EDYCJA] Wystąpił błąd po wykonaniu poniższych kroków z odpowiedzi.

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 
Sohan
źródło

Odpowiedzi:

29

.jks to magazyn kluczy, który jest Java

użyj pliku binarnego keytool z Java.

eksportować .crt :

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

przekonwertować certyfikat na PEM :

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

eksportuj klucz :

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

koncert PKCS12 klucz do niezaszyfrowanego PEM :

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

kredyty:

ćwiczenia
źródło
Nie działa,
pojawia
eksportowany certyfikat jest w formacie DER. dodał krok, aby przekonwertować go na PEM
ćwiczenie
Dzięki, to może działać, ale jeszcze nie próbowałem
Sohan
keytool -exportcert -rfcpisze w formacie PEM i nie wymaga konwersji. Alternatywnie, gdy masz p12, openssl pkcs12 -nokeyszapisuje cały łańcuch certyfikatów w PEM, co jest zwykle lepsze dla serwera używającego OpenSSL (jak httpd), jeśli ten certyfikat pochodzi z prawdziwego urzędu certyfikacji, a nie z domyślnego certyfikatu z domyślnym keytool.
dave_thompson_085 17.10.16
1
Uwaga: Alias ​​może być nazwą certyfikatu, jeśli wiesz, jaka była nazwa podczas eksportu. Chciałem wspomnieć, że na wypadek, gdyby ludzie mieli trudności z uruchomieniem pierwszego polecenia.
GM Lucid
19

Oto co robię

Najpierw wyeksportuj klucz:

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

Do pliku certyfikatu apache ssl potrzebujesz tylko certyfikatu:

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

Do pliku kluczy ssl potrzebujesz tylko kluczy:

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

Sohan
źródło
0

Znaleziono odpowiedź tutaj:

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

Pokazał, jak utworzyć crt z pliku kluczy jks w Chrome w systemie Windows:

  • przejdź do adresu URL w przeglądarce, który używa jks z czerwoną linią, a po lewej stronie pojawi się symbol blokady

  • klikając niezabezpieczoną część, otworzy się okno informacyjne

  • kliknij certyfikat (nieważny), a kiedy się otworzy, kliknij Szczegóły

  • naciśnij na kopię do pliku ... i postępuj zgodnie z instrukcjami

Na koniec masz plik kluczy w crt

Zeghra
źródło