วิธีสร้างไฟล์. 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 binary จาก 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

เครดิต:


ไม่ทำงานรับข้อผิดพลาด
Sohan

ใบรับรองที่ส่งออกเป็นรูปแบบ DER เพิ่มขั้นตอนเพื่อแปลงเป็น PEM
exeral

ขอบคุณที่อาจใช้งานได้ฉันยังไม่ได้ลองเลย
Sohan

keytool -exportcert -rfcเขียนในรูปแบบ PEM และไม่ต้องการการแปลง อีกทางหนึ่งเมื่อคุณมี p12 ให้openssl pkcs12 -nokeysเขียนเชนทั้งหมดใน PEM ซึ่งโดยปกติจะดีกว่าสำหรับเซิร์ฟเวอร์ที่ใช้ OpenSSL (เช่น httpd) หากใบรับรองนี้มาจาก CA จริงแทนที่จะเป็นใบรับรองที่ลงนามเองด้วยตนเองของ 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 keystore ใน Chrome บน Windows:

  • ไปที่ url ในเบราว์เซอร์ที่ใช้ jks ด้วยเส้นสีแดงและจะมีสัญลักษณ์ล็อคอยู่ทางด้านซ้าย

  • โดยคลิกที่ส่วนที่ไม่ปลอดภัยกล่องโต้ตอบข้อมูลจะเปิดขึ้น

  • คลิกที่ใบรับรอง (ไม่ถูกต้อง) และเมื่อมันเปิดคลิกที่รายละเอียด

  • กดคัดลอกเป็นไฟล์ ... และปฏิบัติตามคำแนะนำ

ในตอนท้ายคุณมีไฟล์ keystore ใน crt

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.