Làm cách nào để chuyển đổi tệp chứng chỉ PFX để sử dụng với Apache trên máy chủ linux?


110

Làm cách nào để chuyển đổi tệp chứng chỉ PFX để sử dụng với Apache trên máy chủ linux?

Tôi đã tạo PFX từ Dịch vụ Chứng chỉ Windows. PFX chứa toàn bộ chuỗi chứng chỉ. (Chỉ là một thư mục gốc và là chứng chỉ chính, không có trung gian.)

Hãy dẫn tôi đi, những người thông thái.

Câu trả lời:


194

Với OpenSSL, bạn có thể chuyển đổi pfx sang định dạng tương thích Apache bằng các lệnh tiếp theo:

openssl pkcs12 -in domain.pfx -clcerts -nokeys -out domain.cer
openssl pkcs12 -in domain.pfx -nocerts -nodes  -out domain.key   

Lệnh đầu tiên trích xuất khóa công khai tới domain.cer.
Lệnh thứ hai trích xuất khóa cá nhân đến domain.key.

Cập nhật tệp cấu hình Apache của bạn bằng:

<VirtualHost 192.168.0.1:443>
 ...
 SSLEngine on
 SSLCertificateFile /path/to/domain.cer
 SSLCertificateKeyFile /path/to/domain.key
 ...
</VirtualHost>

Điều này thiếu lệnh để tạo tệp tổ chức phát hành chứng chỉ. Câu trả lời dưới đây là đầy đủ hơn.
Hawkee

100

Ngoài ra

openssl pkcs12 -in domain.pfx -clcerts -nokeys -out domain.cer
openssl pkcs12 -in domain.pfx -nocerts -nodes  -out domain.key

Tôi cũng đã tạo chứng chỉ Tổ chức phát hành chứng chỉ (CA):

openssl pkcs12 -in domain.pfx -out domain-ca.crt -nodes -nokeys -cacerts

Và bao gồm nó trong tệp cấu hình 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>

8
Lưu ý: nếu chứng chỉ ca sẽ trống - vui lòng không đưa dòng này vào tệp cấu hình.
Andron,

@Andron khi tôi sử dụng lệnh thứ ba để tạo chứng chỉ CA, kết quả là một tệp crt trống. Tôi đã thử sử dụng cả tệp pfx serverSSL và tệp pfx rootCA để nhập liệu. (bitnami wamp) Kết quả cuối cùng là firefox cho tôi một The certificate is not trusted because the issuer certificate is unknown SEC_ERROR_UNKNOWN_ISSUERlỗi.
khargoosh

@khargoosh như tôi đã báo cáo trong nhận xét: nếu nó trống - chỉ cần không sử dụng / bao gồm dòng này. Tôi đã có cùng một tình huống.
Andron

31

Để làm cho nó hoạt động với Apache, chúng tôi cần thêm một bước.

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

Lệnh cuối cùng giải mã khóa để sử dụng với Apache. Tệp domain.key sẽ giống như sau:

-----BEGIN RSA PRIVATE KEY-----
MjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3
LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp
YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG
A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq
-----END RSA PRIVATE KEY-----

ĐẸP! Đối với Bitnami hoặc những người khác cần CA crt, hãy xem câu trả lời từ Andron để bao gồm CA crt. Sử dụng server-ca.crt (thay cho domain-ca.crt trong câu trả lời của Andron), server.crt (thay cho domain.cer) và server.key (thay cho domain.key) trong danh pháp của Michael Ferrante trả lời ở đây.
OldGreg

3

Lấy một số công cụ xung quanh nhưng đây là những gì tôi đã kết thúc.

Đã tạo và cài đặt chứng chỉ trên IIS7. Được xuất dưới dạng PFX từ IIS

Chuyển đổi sang pkcs12

openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes

LƯU Ý: Trong khi chuyển đổi PFX sang định dạng PEM, openssl sẽ đặt tất cả Chứng chỉ và Khóa cá nhân vào một tệp duy nhất. Bạn sẽ cần mở tệp trong Trình soạn thảo văn bản và sao chép từng Khóa chứng chỉ & Khóa cá nhân (bao gồm các câu lệnh BEGIN / END) vào tệp văn bản riêng lẻ của chính tệp đó và lưu chúng dưới dạng certificate.cer, CAcert.cer, privateKey.key tương ứng.

-----BEGIN PRIVATE KEY-----
Saved as certificate.key
-----END PRIVATE KEY-----

-----BEGIN CERTIFICATE-----
Saved as certificate.crt
-----END CERTIFICATE-----

Đã thêm vào apache vhost w / Webmin.


Nếu bạn không muốn khóa riêng tư và các chứng chỉ kết thúc trong cùng một tệp, hãy sử dụng -nokeys(không để trích xuất khóa riêng) và -clcerts(chỉ để trích xuất chứng chỉ). Đây chính xác là những gì Matej đã nói.
Bruno

0

SSLSHopper có một số bài viết khá kỹ lưỡng về việc di chuyển giữa các máy chủ khác nhau.

http://www.sslshopper.com/how-to-move-or-copy-an-ssl-certificate-from-one-server-to-aosystem.html

Chỉ cần chọn liên kết có liên quan ở cuối trang này.

Lưu ý: họ có một công cụ chuyển đổi trực tuyến cho phép họ truy cập vào khóa cá nhân của bạn. Chúng có thể đáng tin cậy nhưng sẽ tốt hơn nếu sử dụng lệnh OPENSSL (cũng được hiển thị trên trang web này) để giữ khóa riêng tư trên máy của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.