Comment puis-je convertir un fichier de certificat PFX à utiliser avec Apache sur un serveur linux?
J'ai créé le PFX à partir des services de certificats Windows. Le PFX contient la totalité de la chaîne de certificats. (Qui est juste une racine et le principal cert, pas d'intermédiaire.)
Conduis-moi, les sages.
Avec OpenSSL , vous pouvez convertir pfx au format compatible Apache avec les commandes suivantes:
openssl pkcs12 -in domain.pfx -clcerts -nokeys -out domain.cer
openssl pkcs12 -in domain.pfx -nocerts -nodes -out domain.key
La première commande extrait la clé publique dans domain.cer
.
La deuxième commande extrait la clé privée dans domain.key
.
Mettez à jour votre fichier de configuration Apache avec:
<VirtualHost 192.168.0.1:443>
...
SSLEngine on
SSLCertificateFile /path/to/domain.cer
SSLCertificateKeyFile /path/to/domain.key
...
</VirtualHost>
En plus de
openssl pkcs12 -in domain.pfx -clcerts -nokeys -out domain.cer
openssl pkcs12 -in domain.pfx -nocerts -nodes -out domain.key
J'ai également généré un certificat d'autorité de certification (CA):
openssl pkcs12 -in domain.pfx -out domain-ca.crt -nodes -nokeys -cacerts
Et inclus dans le fichier de configuration 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>
Pour que cela fonctionne avec Apache, il nous fallait une étape supplémentaire.
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
La dernière commande décrypte la clé à utiliser avec Apache. Le fichier domain.key devrait ressembler à ceci:
-----BEGIN RSA PRIVATE KEY-----
MjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3
LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp
YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG
A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq
-----END RSA PRIVATE KEY-----
J'ai pris des outils, mais c'est ce avec quoi j'ai fini.
Généré et installé un certificat sur IIS7. Exporté en tant que PFX à partir d'IIS
Convertir en pkcs12
openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes
REMARQUE: lors de la conversion de PFX au format PEM, openssl placera tous les certificats et la clé privée dans un seul fichier. Vous devez ouvrir le fichier dans l'éditeur de texte, copier chaque clé de certificat et clé privée (y compris les instructions BEGIN/END) dans son propre fichier texte, puis les enregistrer en tant que certificate.cer, CAcert.cer, privateKey.key.
-----BEGIN PRIVATE KEY-----
Saved as certificate.key
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
Saved as certificate.crt
-----END CERTIFICATE-----
Ajouté à Apache vhost avec Webmin.
SSLSHopper contient des articles assez détaillés sur la migration entre différents serveurs.
http://www.sslshopper.com/how-to-move-or-copy-an-ssl-certificate-from-one-server-to-an-other.html
Il suffit de choisir le lien pertinent au bas de cette page.
Remarque: ils ont un convertisseur en ligne qui leur donne accès à votre clé privée. On peut probablement leur faire confiance, mais il serait préférable d’utiliser la commande OPENSSL (également affichée sur ce site) pour garder la clé privée privée sur votre propre ordinateur.