Использование промежуточных сертификатов с 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