Bagaimana cara mengonversi file sertifikat PFX untuk digunakan dengan Apache di server linux?

110

Bagaimana cara mengonversi file sertifikat PFX untuk digunakan dengan Apache di server linux?

Saya membuat PFX dari Layanan Sertifikat Windows. PFX berisi seluruh rantai sertifikat. (Yang hanya root dan sertifikat utama, bukan perantara.)

Pimpin aku, orang bijak.

AaronJAnderson
sumber

Jawaban:

194

Dengan OpenSSL Anda dapat mengonversi pfx ke format yang kompatibel dengan Apache dengan perintah berikut:

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

Perintah pertama mengekstrak kunci publik ke domain.cer.
Perintah kedua mengekstrak kunci pribadi ke domain.key.

Perbarui file konfigurasi Apache Anda dengan:

<VirtualHost 192.168.0.1:443>
 ...
 SSLEngine on
 SSLCertificateFile /path/to/domain.cer
 SSLCertificateKeyFile /path/to/domain.key
 ...
</VirtualHost>
Matej
sumber
Ini kehilangan perintah untuk menghasilkan file otoritas sertifikat. Jawabannya dibawah ini lebih lengkap.
Hawkee
100

Selain itu

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

Saya juga membuat sertifikat Certificate Authority (CA):

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

Dan memasukkannya ke dalam file konfigurasi 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>
Andron
sumber
8
Catatan: jika sertifikat ca akan kosong - jangan sertakan baris ini dalam file konfigurasi.
Andron
@Andron ketika saya menggunakan perintah ketiga untuk membuat sertifikat CA hasilnya adalah file crt kosong. Saya mencoba menggunakan file pfx serverSSL dan file rootCA pfx untuk input. (bitnami wamp) Hasil akhirnya adalah firefox memberi saya The certificate is not trusted because the issuer certificate is unknown SEC_ERROR_UNKNOWN_ISSUERkesalahan.
khargoosh
@ Khargoosh seperti yang saya laporkan di komentar: jika kosong - jangan gunakan / sertakan baris ini. Saya memiliki situasi yang sama.
Andron
31

Untuk membuatnya berfungsi dengan Apache, kami membutuhkan satu langkah ekstra.

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

Perintah terakhir mendekripsi kunci untuk digunakan dengan Apache. File domain.key akan terlihat seperti ini:

-----BEGIN RSA PRIVATE KEY-----
MjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3
LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp
YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG
A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq
-----END RSA PRIVATE KEY-----
Michael Ferrante
sumber
BAGUS! Untuk Bitnami atau lainnya yang juga membutuhkan CA crt, lihat jawaban dari Andron untuk menyertakan CA crt. Gunakan server-ca.crt (sebagai pengganti domain-ca.crt dalam jawaban Andron), dan server.crt (sebagai pengganti domain.cer), dan server.key (sebagai pengganti domain.key) nomenklatur di Michael Ferrante's jawab disini.
OldGreg
3

Mengambil beberapa perkakas tapi inilah yang akhirnya saya dapatkan.

Menghasilkan dan menginstal sertifikat di IIS7. Diekspor sebagai PFX dari IIS

Ubah ke pkcs12

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

CATATAN: Saat mengonversi format PFX ke PEM, openssl akan memasukkan semua Sertifikat dan Kunci Pribadi ke dalam satu file. Anda perlu membuka file di editor Teks dan menyalin setiap Sertifikat & kunci Pribadi (termasuk pernyataan BEGIN / END) ke file teksnya masing-masing dan menyimpannya sebagai certificate.cer, CAcert.cer, privateKey.key.

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

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

Ditambahkan ke apache vhost w / Webmin.

AaronJAnderson
sumber
Jika Anda tidak ingin kunci privat dan sertifikat berakhir di file yang sama, gunakan -nokeys(bukan untuk mengekstrak kunci privat) dan -clcerts(untuk mengekstrak hanya sertifikat). Inilah yang dikatakan Matej.
Bruno
0

SSLSHopper memiliki beberapa artikel yang cukup lengkap tentang berpindah antar server yang berbeda.

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

Pilih saja tautan yang relevan di bagian bawah halaman ini.

Catatan: mereka memiliki konverter online yang memberi mereka akses ke kunci pribadi Anda. Mereka mungkin dapat dipercaya tetapi akan lebih baik menggunakan perintah OPENSSL (juga ditampilkan di situs ini) untuk menjaga kunci privat tetap pribadi di komputer Anda sendiri.

Simon_Weaver
sumber