2008-10-17 3 views
0

Backstory : OpenSSL을 사용하여 PEM으로 변환하는 대칭 암호 (암호)가있는 PKCS # 12 (p12) 인증서가 있습니다. 그 텍스트를 열면 BEGIN/END CERTIFICATE 섹션과 BEGIN/END RSA PRIVATE KEY 섹션이 모두 포함되어 있습니다. .NET Framework X509Certificate 클래스는 "ASN.1 DER"형식 만 지원하므로 OpenSSL을 사용하여 PEM을 DER로 변환했습니다. 불행히도 SSL을 연결하는 데 필요한 개인 키가 포함되어 있지 않은 것 같습니다. SslStream & TcpClient. 개인 키 정보 그래서 서명에 .NET에서 사용할 수를 유지하면서SSL 인증서를 PEM에서 DER로 변환하고 개인 키를 유지하려면 어떻게해야합니까?

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(); 

어떻게이 PEM 파일을하고 DER로해야합니까?

답변

2

나는 시대에 뒤떨어져 있습니다. X509Certificate2처럼 PKCS # 12 파일을 읽을 수 있으므로 변환 할 필요가 없습니다.

0

일반적으로 인증서와 키는 별도로 저장됩니다. PEM 파일을 인증서가있는 파일 하나와 키가있는 파일 두 개로 잘라냅니다. 그런 다음 openssl 툴킷을 사용하여 각 파일을 DER 파일로 개별적으로 변환 할 수 있습니다.

관련 문제