ฉันจะแปลงไฟล์ใบรับรอง PFX เพื่อใช้กับ Apache บนเซิร์ฟเวอร์ linux ได้อย่างไร
ฉันสร้าง PFX จาก Windows Certificate Services PFX ประกอบด้วยห่วงโซ่ใบรับรองทั้งหมด (ซึ่งเป็นเพียงรูทและใบรับรองหลักไม่มีตัวกลาง)
นำฉันคนฉลาด
ฉันจะแปลงไฟล์ใบรับรอง PFX เพื่อใช้กับ Apache บนเซิร์ฟเวอร์ linux ได้อย่างไร
ฉันสร้าง PFX จาก Windows Certificate Services PFX ประกอบด้วยห่วงโซ่ใบรับรองทั้งหมด (ซึ่งเป็นเพียงรูทและใบรับรองหลักไม่มีตัวกลาง)
นำฉันคนฉลาด
คำตอบ:
ด้วยOpenSSLคุณสามารถแปลง pfx เป็นรูปแบบที่เข้ากันได้กับ Apache ด้วยคำสั่งถัดไป:
openssl pkcs12 -in domain.pfx -clcerts -nokeys -out domain.cer
openssl pkcs12 -in domain.pfx -nocerts -nodes -out domain.key
domain.cer
คำสั่งแรกสารสกัดที่สำคัญของประชาชนในการ คำสั่งที่สองสารสกัดที่สำคัญส่วนตัวถึง
domain.key
อัปเดตไฟล์การกำหนดค่า Apache ของคุณด้วย:
<VirtualHost 192.168.0.1:443>
...
SSLEngine on
SSLCertificateFile /path/to/domain.cer
SSLCertificateKeyFile /path/to/domain.key
...
</VirtualHost>
นอกจากนี้
openssl pkcs12 -in domain.pfx -clcerts -nokeys -out domain.cer
openssl pkcs12 -in domain.pfx -nocerts -nodes -out domain.key
ฉันยังสร้างใบรับรอง Certificate Authority (CA):
openssl pkcs12 -in domain.pfx -out domain-ca.crt -nodes -nokeys -cacerts
และรวมไว้ในไฟล์กำหนดค่า Apache:
<VirtualHost 192.168.0.1:443>
...
SSLEngine on
SSLCertificateFile /path/to/domain.cer
SSLCertificateKeyFile /path/to/domain.key
SSLCACertificateFile /path/to/domain-ca.crt
...
</VirtualHost>
The certificate is not trusted because the issuer certificate is unknown
SEC_ERROR_UNKNOWN_ISSUER
ข้อผิดพลาด
เพื่อให้สามารถใช้งานกับ Apache ได้เราจำเป็นต้องมีขั้นตอนเพิ่มเติมอีกขั้นตอนหนึ่ง
openssl pkcs12 -in domain.pfx -clcerts -nokeys -out domain.cer
openssl pkcs12 -in domain.pfx -nocerts -nodes -out domain_encrypted.key
openssl rsa -in domain_encrypted.key -out domain.key
คำสั่งสุดท้ายจะถอดรหัสคีย์เพื่อใช้กับ Apache ไฟล์ domain.key ควรมีลักษณะดังนี้:
-----BEGIN RSA PRIVATE KEY-----
MjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3
LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp
YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG
A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq
-----END RSA PRIVATE KEY-----
ใช้เครื่องมือรอบ ๆ แต่นี่คือสิ่งที่ฉันลงเอยด้วย
สร้างและติดตั้งใบรับรองบน IIS7 ส่งออกเป็น PFX จาก IIS
แปลงเป็น pkcs12
openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes
หมายเหตุ: ในขณะที่แปลง PFX เป็นรูปแบบ PEM openssl จะใส่ใบรับรองและคีย์ส่วนตัวทั้งหมดลงในไฟล์เดียว คุณจะต้องเปิดไฟล์ในโปรแกรมแก้ไขข้อความและคัดลอกคีย์ใบรับรองและคีย์ส่วนตัว (รวมถึงคำสั่ง BEGIN / END) ไปยังไฟล์ข้อความแต่ละไฟล์และบันทึกเป็น certificate.cer, CAcert.cer, privateKey.key ตามลำดับ
-----BEGIN PRIVATE KEY-----
Saved as certificate.key
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
Saved as certificate.crt
-----END CERTIFICATE-----
เพิ่มไปยัง apache vhost w / Webmin
-nokeys
(ไม่ใช่เพื่อแยกคีย์ส่วนตัว) และ-clcerts
(เพื่อแยกใบรับรองเท่านั้น) นี่คือสิ่งที่ Matej พูด
SSLSHopper มีบทความที่ละเอียดถี่ถ้วนเกี่ยวกับการย้ายระหว่างเซิร์ฟเวอร์ต่างๆ
http://www.sslshopper.com/how-to-move-or-copy-an-ssl-certificate-from-one-server-to-another.html
เพียงแค่เลือกลิงก์ที่เกี่ยวข้องที่ด้านล่างของหน้านี้
หมายเหตุ: พวกเขามีตัวแปลงออนไลน์ซึ่งให้พวกเขาเข้าถึงคีย์ส่วนตัวของคุณ พวกเขาอาจเชื่อถือได้ แต่จะดีกว่าถ้าใช้คำสั่ง OPENSSL (แสดงในเว็บไซต์นี้ด้วย) เพื่อเก็บคีย์ส่วนตัวไว้ในเครื่องของคุณเอง