avec Firefox, il est facile d'exporter le certificat SSL utilisé d'une page au format x509 avec tous les certificats intermédiaires au format * .crt.
J'ai besoin de faire la même chose en convertissant les fichiers * .pem en * .crt en format non binaire en utilisant openssl.
Ce sont les certificats actuellement utilisés par Apache:
SSLCertificateFile /etc/Apache2/ssl/cert-start.pem
SSLCertificateKeyFile /etc/Apache2/ssl/key-no-pw.pem
SSLCACertificateFile /etc/Apache2/ssl/cert-bundle.pem
Je peux facilement convertir le SSLCertificateFile
en crt avec:
openssl x509 -in cert-start.pem -out cert-start.crt
Pour construire le crt avec une chaîne complète, j'ai essayé -chain
, -clcerts
sans chance.
Quelle est la bonne façon d'inclure tous les certificats intermédiaires de SSLCACertificateFile /etc/Apache2/ssl/cert-bundle.pem
ainsi que?
cat cert-start.pem cert-bundle.pem > chain.pem
dans le cas où il contiendrait également la clé (dans certains cas, elle est nécessaire mais dépend de l'utilisation)
cat cert-start.pem cert-bundle.pem key-no-pw.pem > full_chain.pem
Au cas où vous vérifieriez la sortie, vous verrez quelque chose comme ça (dans le cas de chain.pem):
-----BEGIN CERTIFICATE-----
... <base64 encoded server cert> ...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
... <base64 encoded intermediate cert> ...
-----END CERTIFICATE-----
Et en cas de full_chain.pem, ce sera quelque chose comme ceci:
-----BEGIN CERTIFICATE-----
... <base64 encoded server cert> ...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
... <base64 encoded intermediate cert> ...
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
... <base64 encoded key>
-----END PRIVATE KEY-----
Au cas où vous le "vérifieriez" en utilisant openssl x509 -in chain.pem
vous ne verrez que le premier certificat (dans ce cas, le serveur). Tout le reste sera traité comme un commentaire - ignoré. Vous devez le séparer dans un fichier supplémentaire ou simplement imprimer une plage de lignes spécifique via pipe vers openssl pour voir le contenu. Le vrai contrôle peut être fait "visuellement" en utilisant cat ou un éditeur de texte que vous préférez ... Une fois que l'application attend le fichier pem/crt, c'est ce dont vous avez besoin.
Dans le cas où vous voudriez le gérer comme "conteneur", la forme appropriée est pkcs12. Là, vous pouvez le gérer comme un ensemble de certificats et le gérer de cette façon et le voir/l'importer. La commande serait dans ce cas
openssl pkcs12 -export -in cert-start.pem -inkey key-no-pw.pem -certfile cert-bundle.pem -out full_chain.p12 -nodes
La sortie pkcs12 peut être vérifiée à l'aide de la commande
openssl pkcs12 -in full_chain.p12 -nodes
Veuillez noter que le format "correct" (p12 ou pem/crt) dépend de l'utilisation.
Vous les concaténez simplement
cat domain.tld.key domain.tld.crt root.crt > domain.tld.pem