Использование промежуточных сертификатов с SslStream и X509Certificate2 в серверном приложении

Я работаю над приложением сервера.Net, которое использует SslStream для предоставления своих сокетов SSL. Он работает с некоторыми клиентами (например, основанными на libcurl), но другие клиенты выдают ошибки из-за отсутствия промежуточных сертификатов. Как связать промежуточный сертификат с объектом SslStream или X509Certificate2, чтобы эти клиенты были довольны?

Вот код, который я использую сейчас, когда принимаю соединение:

X509Certificate2 cert = new X509Certificate2("cert.pfx", "");
theSslStream.BeginAuthenticateAsServer(cert, ...);

Если бы я использовал OpenSSL, я бы сделал это с SSL_CTX_add_extra_chain_cert(), Я посмотрел на объект X509Chain, но не вижу, как его вписать.

Благодарю.

2 ответа

Решение

Вы пытались включить полную цепочку в используемый вами pfx (например, используйте OpenSSL, чтобы подключить их все)? Я не пробовал это специально с SSLStream, но WCF не предоставляет явного способа включить промежуточные сертификаты - он просто представляет полную цепочку автоматически, если промежуточные сертификаты доступны в исходном.pfx.

Включение промежуточных сертификатов в файл.pfx является решением. Вы можете проверить, что все правильные промежуточные сертификаты установлены по адресу http://www.sslshopper.com/ssl-checker.html

Другие вопросы по тегам