Comment convertir un certificat SSL de PEM en DER et conserver la clé privée?
-
03-07-2019 - |
Question
Backstory: j'ai un certificat PKCS # 12 (p12) avec un chiffrement symétrique (mot de passe) que j'ai utilisé OpenSSL pour convertir en PEM; je vois que le texte que je lis contient une section BEGIN / END CERTIFICATE
ainsi que BEGIN / END RSA PRIVATE KEY
. La classe .NET Framework X509Certificate
ne prend en charge que la classe "ASN.1 DER". J'ai donc utilisé OpenSSL pour convertir le fichier PEM en fichier DER. Malheureusement, il semble que cela n'inclue pas la clé privée, ce dont j'ai besoin pour établir une connexion SSL avec SslStream
& amp; TcpClient
.
X509CertificateCollection certsFromFile = new X509CertificateCollection();
X509Certificate2 cert = new X509Certificate2("my.der.crt");
if (!cert.HasPrivateKey)
throw new Exception("No private key");
certsFromFile.Add(cert);
TcpClient tcpclient = new TcpClient(hostname, port);
SslStream sslstream = new SslStream(tcpclient.GetStream(), false,
null, null);
sslstream.AuthenticateAsClient(hostname, certsFromFile,
SslProtocols.Ssl3, false);
sslstream.Close();
tcpclient.Close();
Comment puis-je utiliser ce fichier PEM et le transformer en un DER tout en conservant les informations de clé privée afin que je puisse l'utiliser dans .NET pour la signature?
La solution
Oups, je suis en retard! On dirait que X509Certificate2
peut lire les fichiers PKCS # 12, aucune conversion n'est donc nécessaire.
Autres conseils
Les certificats et les clés sont généralement stockés séparément. Coupez le fichier PEM en deux fichiers, l’un avec le certificat et l’autre avec la clé. Vous pouvez ensuite utiliser la boîte à outils openssl pour convertir chaque fichier séparément en un fichier DER.