Сценарий: у меня есть клиент, реализованный на C #, который должен подключаться к серверу, используя gRPC, используя SSL для зашифрованного соединения.Однако сертификат, используемый сервером, может быть или не быть самоподписанным.
В документах я видел только то, что я могу установить учетные данные канала либо небезопасно (вообще без SSL), либо защищеноиспользование пользовательских корневых сертификатов (или использование общедоступных корневых центров сертификации, которые не будут проверять самоподписанный сертификат), что фактически означает, что я должен убедиться, что я установил самоподписанный сертификат сервера в качестве корневого.В основном, как мне сделать это программно?
var channelCredentials = new SslCredentials(rootAsPem);
// FIXME: specify that channelCredentials can accept self-signed certificates or fetch certificates?
var channel = new Channel("myservice.example.com", channelCredentials);
var client = new Greeter.GreeterClient(channel);
Я хотел бы реализовать вопрос типа «эй, сервер, который вы настроили, использует самозаверяющий сертификат, вы согласны с этим??»и если так, установите сертификат как корневой сертификат в PEM.
Мои основные вопросы сейчас:
- Как я могу получить сертификат сервера?Все, что я в настоящее время получаю, является исключением.
- Можно ли избежать установки сертификата сервера в качестве корневого сертификата?