Les certificats SSL et les cles privees peuvent etre stockes dans plusieurs formats de fichier. Le contenu est le meme — c’est l’encodage et l’empaquetage qui different. La plupart des confusions viennent du besoin d’un format specifique pour votre serveur.
Comparaison des formats
| Format | Extension | Encodage | Contient | Utilise par |
|---|---|---|---|---|
| PEM | .pem, .crt, .cer, .key | Base64 (texte) | Cert, cle ou chaine (un par fichier) | Nginx, Apache, la plupart des serveurs Linux |
| DER | .der, .cer | Binaire | Cert ou cle unique | Java, certaines applications Windows |
| PFX/PKCS#12 | .pfx, .p12 | Binaire | Cert + cle + chaine dans un fichier | Windows IIS, Azure, Trousseau macOS |
PEM — le format le plus courant
PEM (Privacy Enhanced Mail) est du texte encode en base64. Vous pouvez l’ouvrir dans un editeur de texte :
-----BEGIN CERTIFICATE-----
MIIFYjCCBEqgAwIBAgISA8ht...
(donnees encodees en base64)
-----END CERTIFICATE-----
Les fichiers PEM peuvent contenir des certificats, des cles privees ou des chaines de certificats. L’en-tete indique le contenu :
BEGIN CERTIFICATE— un certificatBEGIN PRIVATE KEY— une cle privee (ouBEGIN RSA PRIVATE KEY/BEGIN EC PRIVATE KEY)BEGIN CERTIFICATE REQUEST— un CSR
GetHTTPS produit le format PEM — privkey.pem, cert.pem, chain.pem, fullchain.pem.
DER — encodage binaire
DER est la forme binaire des memes donnees que PEM encode en texte. Il n’est pas lisible par l’homme. Utilise principalement par les applications Java (keytool) et certains composants Windows.
PFX/PKCS#12 — format groupe
PFX (Personal Information Exchange) regroupe le certificat, la cle privee et la chaine dans un seul fichier protege par mot de passe. Windows IIS, Azure App Service et le Trousseau macOS necessitent ce format.
Convertir entre les formats
Toutes les conversions utilisent OpenSSL :
PEM → PFX
openssl pkcs12 -export \
-out certificate.pfx \
-inkey privkey.pem \
-in cert.pem \
-certfile chain.pem
Vous serez invite a definir un mot de passe d’export.
PFX → PEM
# Extraire le certificat
openssl pkcs12 -in certificate.pfx -clcerts -nokeys -out cert.pem
# Extraire la cle privee
openssl pkcs12 -in certificate.pfx -nocerts -nodes -out privkey.pem
# Extraire la chaine
openssl pkcs12 -in certificate.pfx -cacerts -nokeys -out chain.pem
PEM → DER
openssl x509 -in cert.pem -outform DER -out cert.der
DER → PEM
openssl x509 -in cert.der -inform DER -outform PEM -out cert.pem
Quel format ai-je besoin ?
| Serveur/Plateforme | Format | Fichiers necessaires |
|---|---|---|
| Nginx | PEM | fullchain.pem + privkey.pem |
| Apache | PEM | cert.pem + chain.pem + privkey.pem |
| IIS (Windows) | PFX | certificate.pfx (convertir depuis PEM) |
| Azure App Service | PFX | certificate.pfx |
| AWS (ACM) | PEM | cert.pem + chain.pem + privkey.pem (coller dans la console) |
| Java (Tomcat) | JKS ou PFX | Convertir PEM → PFX → JKS avec keytool |
| Node.js | PEM | Lire les fichiers directement dans le code |
Comment identifier le format d’un fichier
Vous n’etes pas sur du format d’un fichier ? Verifiez :
# S'il commence par "-----BEGIN" -- c'est du PEM (texte base64)
head -1 mystery-file.pem
# S'il est binaire (texte illisible) -- c'est du DER ou PFX
file mystery-file.cer
# Sortie comme "data" ou "certificate" = DER
# Sortie comme "PKCS12" = PFX
# Inspecter un certificat PEM
openssl x509 -in cert.pem -noout -text
# Inspecter un certificat DER
openssl x509 -in cert.der -inform DER -noout -text
# Inspecter un fichier PFX
openssl pkcs12 -in cert.pfx -info -nokeys
Confusion courante des extensions de fichier
| Extension | Signifie generalement | Mais pourrait etre |
|---|---|---|
.pem | PEM (base64) | Toujours PEM |
.crt | Certificat PEM | DER sous Windows |
.cer | Certificat PEM | DER sous Windows |
.key | Cle privee PEM | DER (rare) |
.pfx | Bundle PKCS#12 | Toujours PFX |
.p12 | Bundle PKCS#12 | Toujours PFX (identique a .pfx) |
.der | DER (binaire) | Toujours DER |
.jks | Java KeyStore | Toujours JKS |
Regle generale : Ouvrez le fichier dans un editeur de texte. Si vous voyez -----BEGIN CERTIFICATE-----, c’est du PEM quelle que soit l’extension. Si vous voyez du contenu binaire illisible, c’est du DER ou PFX.
Questions frequemment posees
Quelle est la difference entre .crt, .cer et .pem ?
Ils peuvent tous etre au format PEM. L’extension est une convention de nommage, pas un indicateur de format. .crt et .cer sont couramment utilises pour les fichiers de certificat, .pem pour tout fichier encode en PEM. Sous Windows, les fichiers .cer sont parfois encodes en DER — ouvrez dans un editeur de texte pour verifier.
Pourquoi GetHTTPS me donne-t-il 4 fichiers ?
Compatibilite maximale. GetHTTPS fournit : privkey.pem (cle privee), cert.pem (votre certificat uniquement), chain.pem (certificat CA intermediaire), fullchain.pem (cert + chaine combines). Nginx a besoin de fullchain.pem ; Apache a besoin de cert.pem + chain.pem separes ; IIS a besoin de PFX (convertir depuis PEM).
Comment creer un PFX pour Windows/IIS ?
Utilisez la commande OpenSSL PEM → PFX ci-dessus. Vous aurez besoin de privkey.pem, cert.pem et chain.pem de GetHTTPS. Le .pfx resultant peut etre importe dans IIS, Azure App Service ou le Trousseau macOS.
Puis-je convertir d’un format a un autre sans la cle privee ?
Vous pouvez convertir le certificat entre PEM et DER sans la cle privee. Mais creer un PFX necessite la cle privee (il regroupe certificat + cle ensemble). Si vous avez perdu votre cle privee, vous devez generer un nouveau certificat.
Quel format utilise Let’s Encrypt ?
Let’s Encrypt (via tout client ACME incluant GetHTTPS) produit le format PEM. Si vous avez besoin d’un format different pour votre serveur, convertissez avec les commandes OpenSSL ci-dessus.