Использование сертификатов в SslStream: handshake failed
От: QuAzI Беларусь  
Дата: 12.11.14 13:15
Оценка:
Есть код

TcpClient client = listener.AcceptTcpClient();
NetworkStream clientSslStream = client.GetStream();
var clientStream = new SslStream(clientSslStream, leaveInnerStreamOpen: false);

var certificate = new X509Certificate2(fileName: "SslServer.p12", password: "123");
SslProtocols enabledSslProtocols = System.Security.Authentication.SslProtocols.Ssl2 | System.Security.Authentication.SslProtocols.Default;
clientStream.AuthenticateAsServer(
    certificate, 
    clientCertificateRequired: false,
    enabledSslProtocols: enabledSslProtocols,
    checkCertificateRevocation: false);



на строке
var certificate = new X509Certificate2(fileName: "SslServer.p12", password: "123");

падает с исключением
IOException: The handshake failed due to an unexpected packet format


Сертификаты создавал сначала из консоли MS VS запущенной As Administrator
makecert -n CN=MyCA -cy authority -a sha1 -sv "MyCA.pvk" -r "MyCA.cer" -eku 1.3.6.1.5.5.7.3.1
certmgr -add -all -c "MyCA.cer" -s -r LocalMachine Root
makecert -n CN=*.test.localhost -ic MyCA.cer -iv MyCA.pvk -a sha1 -sky exchange -pe -sr LocalMachine -ss my SslServer.cer -eku 1.3.6.1.5.5.7.3.1


Потом когда не смог своеваться с первыми ключами, сгенерировал PKCS#12 в OpenSSL
set OPENSSL_CONF=c:/OpenSSL-Win32/bin/openssl.cfg
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -key rootCA.key -days 10000 -out rootCA.crt

openssl genrsa -out SslServer.key 2048
openssl req -new -key SslServer.key -out SslServer.csr
Common Name (eg, YOUR name) []: *.test.localhost
openssl x509 -req -in SslServer.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out SslServer.crt -days 5000

openssl pkcs12 -export -out SslServer.p12 -inkey SslServer.key -in SslServer.crt -certfile rootCA.crt


Импортировал сертивикат через certmgr руками
Но проблему это не решило, приложение падает. Что я делаю не так или что ещё можно пошаманить?
Отредактировано 12.11.2014 13:18 QuAzI . Предыдущая версия .
sslstream x509certificate2 ssl2 pkcs#12 .net4 c# msvs2012
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.