Я пытаюсь создать простой сервер, который прослушивает порт и аутентифицируется с помощью ssl. У меня есть файлыНастройка сокета ssl-сервера с подписанным сертификатом
server.crt
server.key
my-ca.crt
, полученные с помощью OpenSSL учебника (http://www.vanemery.com/Linux/Apache/apache-SSL.html). my-ca.crt
- мой собственный сертификат CA, server.crt
содержит сертификат сервера x509 (подписанный с my-ca.crt), а server.key
- это соответствующий закрытый ключ.
Теперь я не знаю, как загрузить эти три файла в C#; У меня есть что-то вроде
serverCertificate = new X509Certificate2("server.crt", "secret_password");
sslStream.AuthenticateAsServer(serverCertificate, false, SslProtocols.Tls, true);
, который не работает (я получаю
Unhandled Exception: System.NotSupportedException: The server mode SSL must use a certificate with the associated private key.
) , но я понятия не имею, как добавить server.key
и/или my-ca.crt
.
я пытался сделать это следующим образом: 'OpenSSL REQ -x509 -nodes -days 365 -newkey ЗГА: 1024 -keyout "TEMP \ signkey.key" отъезда«TEMP \ signkey.key "-config" openssl.cfg "и ' openssl pkcs12 -export -out "temp \ certificate.pfx" -in "temp \ signkey.key" -name "NAME" ', но исключение остается. Есть идеи? –
@Christoph вам нужно включить закрытый ключ в процесс экспорта следующим образом: 'openssl pkcs12 -export -out certificate.pfx -in certificate.cer -inkey certificate.key -name" SSL-поток Сертификат "' с параметром '-inkey' , – Joseph