Cara menghasilkan file .key dan .crt dari file JKS untuk server httpd apache

19

Saya hanya memiliki file mycert.jks . Sekarang saya perlu mengekstrak dan menghasilkan file .key dan .crt dan menggunakannya di server httpd apache.

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

Adakah yang bisa mendaftar semua langkah untuk menyelesaikan ini? Saya mencari tetapi tidak ada contoh konkret untuk memahami, mencampur dan mencocokkan langkah-langkah.

Tolong sarankan!

[EDIT] Mendapat kesalahan setelah mengikuti langkah-langkah dari jawaban di bawah ini.

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
sumber

Jawaban:

29

.jks adalah keystore, yang merupakan hal Java

gunakan keytool binary dari Java.

ekspor .crt :

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

ubah sertifikat ke PEM :

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

ekspor kunci :

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

kunci konser PKCS12 untuk PEM tidak terenkripsi :

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

kredit:

pemakaman
sumber
Tidak berfungsi, mendapatkan kesalahan
Sohan
sertifikat yang diekspor adalah format DER. menambahkan langkah untuk mengubahnya ke PEM
exeral
thnx, itu mungkin berhasil saya belum mencoba
Sohan
keytool -exportcert -rfcmenulis dalam format PEM dan tidak perlu konversi. Atau begitu Anda memiliki p12, openssl pkcs12 -nokeystulis seluruh rantai sertifikat dalam PEM, yang biasanya lebih baik untuk server yang menggunakan OpenSSL (seperti httpd) jika sertifikat ini dari CA nyata daripada sertifikat yang ditandatangani sendiri keytool-default.
dave_thompson_085
1
Catatan: Alias ​​dapat menjadi nama sertifikat, jika Anda tahu apa namanya saat diekspor. Ingin mengatakan bahwa kalau-kalau orang berjuang untuk menjalankan perintah pertama.
GM Lucid
19

Inilah yang saya lakukan,

Pertama-tama ekspor kuncinya:

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

Untuk file sertifikat apache ssl, Anda hanya memerlukan sertifikat:

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

Untuk file kunci ssl, Anda hanya perlu kunci:

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

Sohan
sumber
0

Ditemukan jawaban di sini:

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

Itu menunjukkan cara membuat crt dari file jks keystore di Chrome pada Windows:

  • buka url di browser yang menggunakan jks dengan garis merah dan akan ada simbol kunci di sebelah kiri

  • dengan mengklik pada bagian yang tidak aman, dialog informasi terbuka

  • klik pada sertifikat (tidak valid) dan ketika terbuka klik pada Detail

  • tekan salin ke file ... dan ikuti instruksi

Pada akhirnya Anda memiliki file keystore di crt

Zeghra
sumber