J'essaie de générer une paire de clés privée-publique et de convertir la clé publique en un certificat qui peut être ajouté dans mon magasin de confiance.
Pour générer une clé privée et publique: openssl rsa -in private.pem -outform PEM -pubout -out public_key.pem
Maintenant j'essaye de convertir ceci en certificat:
openssl x509 -outform der -in public_key.pem -out public.cer
Mais je reçois une erreur:
7962:error:0906D06C:PEM routines:PEM_read_bio:no start line:/BuildRoot/Library/Caches/com.Apple.xbs/Sources/OpenSSL098/OpenSSL098-64.30.2/src/crypto/pem/pem_lib.c:648:Expecting: TRUSTED CERTIFICATE
Tous les tutoriels montrent que je dois convertir pem en crt avant de l'ajouter à un truststore.
Vous ne pouvez pas "convertir" une clé publique en certificat. Un certificat comprend la clé publique mais il contient également plus d'informations comme le sujet, l'émetteur, la validité du certificat, etc. Et un certificat est signé par l'émetteur. Ainsi, vous auriez plutôt besoin de créer une demande de signature de certificat (CSR) qui inclut la clé publique mais inclut également toutes les informations supplémentaires. Cette CSR doit ensuite être signée par une autorité de certification (CA) qui aboutit ensuite au certificat.
Pour créer un simple certificat auto-signé qui n'est approuvé par aucun navigateur, voir Comment créer un certificat auto-signé avec openssl? .
Vous ne pouvez pas convertir une clé publique en certificat.
Les commandes d'origine ne fonctionneront pas car le format d'encodage/fichier PEM s'attend à contenir le texte du certificat crypté comme ci-dessous:
----- COMMENCER LE CERTIFICAT -----
Les données du certificat ici
----- CERTIFICAT FINAL -----
Par conséquent, si vous affichez le fichier .PEM d'origine et voyez quelque chose d'autre (comme BEGIN RSA ...), c'est incorrect.
Maintenant, selon le titre du fil que vous cherchez à convertir un PEM en format de fichier CRT . Notez que les certificats x509 peuvent être dans deux encodages - DER et PEM. En outre, PEM peut être au format .CRT, .CER et .PEM.
Par conséquent, si vous voyez cette erreur, il est également possible que vous traitez un certificat codé DER comme un certificat codé PEM. Vous pouvez essayer de voir s'il est réellement encodé en DER en suivant les instructions de cette page .
J'avais un fichier PEM avec le contenu tout en 1 ligne (pas de saut de ligne), et il a produit l'erreur redoutée "Expecting: TRUSTED CERTIFICATE". Je l'ai reformaté pour que l'en-tête et le pied de page soient séparés et le contenu enveloppé après 65 caractères comme celui-ci (contenu tronqué pour plus de clarté):
-----BEGIN CERTIFICATE-----
MIIDpzCCAo+gAwIBAgIEOi33hzANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMC
2yVTopCvNW53GFCMZSBK6AqEup23gPZEgtDgXninRo/r1kxKbMu3XJneKEAmqxsR
9VG8slbQB2/+5mwA94zXYTZswuH+NuZCnadDydUvGGvtAMbgiSKWMmT7gYSPouLC
QRTC6fvVDQ4tIutsRUiRDvEdZ5BbcVcLkhxG4us5gS+80oA8fwoOg9Sv7ajwTB49
2OFp0mITFB3ZV0Z7zYxkcZPMLYe9+qocSgo/
-----END CERTIFICATE-----
Exécutez à nouveau la commande PEM to DER, et cela fonctionne!