Как отправить несколько сертификатов (включая корневой CA) с клиента.net

Мы пытались решить проблему некоторое время.

Мы используем веб-сервис с клиентскими сертификатами.

Владельцы сервисов предоставили нам файл.p12, он содержит сертификат клиента, CA и закрытый ключ.

Мы можем видеть путь сертификации из самого сертификата.

Проблема в том, что когда мы пытаемся вызвать веб-сервис через интерфейс SOAP, он работает. В SOAPUI мы выбрали файл.p12 в качестве хранилища ключей и установили пароль. Оно работает.

Когда мы пытаемся вызвать веб-сервис через наше клиентское приложение.net, он не работает.

- так мы называем веб-сервис

        channelFactory = new ChannelFactory<AcquisitionAutorisationService>(binding, serviceAddress);
        channelFactory.Credentials.ClientCertificate.Certificate = new X509Certificate2();
        channelFactory.Credentials.ClientCertificate.Certificate.Import(@"C:\cert\abc.p12", "password", X509KeyStorageFlags.DefaultKeySet);

Когда мы отслеживали пакеты с помощью WireShark, мы увидели, что SOAPUI отправляет в запросе два сертификата, как сертификат клиента, так и центр сертификации.

Но клиент.Net отправляет только сертификат клиента, а не CA. Так что брандмауэр сервера не разрешает наши звонки.

Итак, мой вопрос: как получилось, что нам удалось отправить корень CA с нашим запросом, подобным SOAP UI, в.Net?

Если кто-нибудь может дать какое-либо представление о проблеме, я был бы признателен!

1 ответ

Если первый клиент (SOAP UI) отправляет сертификат CA, то это должен быть промежуточный сертификат CA, который сам подписан другим CA. У клиента не будет причин отправлять сертификат корневого ЦС.

Это может быть так же просто, как установить промежуточный сертификат CA на сервере, чтобы второму клиенту не нужно было отправлять его.

Это также может быть так же просто, как установить промежуточный сертификат CA на клиенте в хранилище сертификатов Windows для локального компьютера (или пользователя), чтобы он был доступен при построении цепочки сертификатов клиента.

В противном случае, я уверен, что вы ищете, как заставить.NET отправлять промежуточный сертификат CA в цепочке сертификатов клиента.

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