2009-10-29 3 views
0

У меня есть две машины machine1 и machine2. На одной из этих двух машин (machine2) находится мое хранилище сертификатов, хранилище сертификатов на machine1 не разрешено использовать. Кроме того, у меня есть некоторые вызовы webservice от machine1 в отношении веб-сервиса, защищенного клиентом. Сертификат, который я хотел бы добавить в вызовы веб-сервисов, хранится в хранилище сертификатов на компьютере2 и планируется извлечь из machine2 поверх внутреннего веб-сервиса, а затем для присоединения к моему экземпляру SoapHttpClientProtocol на machine1, когда machine1 вызывает внешний веб-сервис.X509Certificate2-class problem

экспортировать клиент-сертификат на machine2 с СТГ, как это: cert.Export (X509ContentType.SerializedCert)

..и дают base64Binary назад machine1 для дальнейшего использования.

Тогда возникает проблема: если я создаю новый объект X509Certificate2 из этого байтового массива (из base64Binary) на machine1 и присоединяем его к SoapHttpClientProtocol, он не работает. Но в противном случае, если я создам новый X509Certificate-object (no '2!!) Из байтового массива и присоединяю его к моему SoapHttpClientProtocol, он работает! Проблема в том, что если вы используете «старший» класс X509Certificate, тогда мне также нужно установить клиентский сертификат (включая закрытый ключ) на machine1! И это не имеет смысла. Может кто-нибудь помочь мне и дать мне правильный намек на эту проблему, пожалуйста!

С уважением, Krile

+0

Не являются ли сертификаты клиентов привязаны к данному ip/url? –

+0

может я не понимаю ваш вопрос, но я бы сказал, нет! – Kr15

ответ

0

В общем, вы не можете сделать это. Чтобы использовать сертификат, вам необходимо установить его закрытый ключ. Похоже, вам не разрешено делать это на машине №2.

+0

Нет, мне не разрешено делать это на машине №2. Если я выполняю некоторую трассировку в файлах system.net и system.net.sockets, чем в журнале, это означает, что если я скомпилирован с классом X509Certificate2, «сертификат уже содержит закрытый ключ, потому что это X509Certificate2»! И если я скомпилирую с сертификатом X509, чем в журнале, он будет искать секретный ключ в магазине локальной машины! Итак, вот разница, которую я бы сказал, но вы уверены, что я не могу получить сертификат (весь сертификат, включая его закрытый ключ!) Как base64Binary через веб-сервис и использовать его, как я хочу? – Kr15