2009-10-30 5 views
0

Мы пытаемся ссылаться на сертификат для конфигурации конечной точки клиента в нашем файле конфигурации WCF.Ссылка на сертификат конечной точки клиента, как найти, когда есть запятая в выделенных частях имени?

Конфигурация выглядит следующим образом:

<client> 
    <endpoint address="https://domain.server.com/path/service.asmx" 
     binding="basicHttpBinding" bindingConfiguration="TestServiceSoap" 
     contract="..." name="..."> 
     <identity> 
      <certificateReference storeName="TrustedPublisher" 
       x509FindType="FindBySubjectDistinguishedName" 
       findValue="...">.... 

Для тест-сертификата, свойство "Subject" выглядит следующим образом:

CN = demo.domain.com 
OU = Company 
O = Company 
L = City 
S = County 
C = CountryCode 

Это работает, если мы предлагаем следующие за findValue Приведенный выше атрибут выше:

CN=demo.domain.com, OU=Company, O=Company, L=City, S=County, C=CountryCode 

Однако для получения сертификата у нас есть третья сторона, они добавили свой адрес в качестве одной части этого, так что приведенный выше список идентификаторов выглядит следующим образом:

CN = demo.domain.com 
OU = Company 
STREET = Mainstreet 1, Town Center 
L = City 
S = County 
C = CountryCode 

Очевидно, что запятая в УЛИЦЕ части не будет работать, так как наша строка теперь содержит «Town Центр "как отдельная часть без названия.

Как мы указываем, что мы хотим найти сертификат, используя этот список идентификаторов?

CN=demo.domain.com, OU=Company, O=Company, STREET=Mainstreet 1, Town Center, L=City, S=County, C=CountryCode 
                   ^-- Argh! 
+0

К сожалению ... пятница днем ​​неправильно истолковывать вопрос :-(, к счастью, это пиво часов в настоящее время – Tanner

+0

Да, определенно :) –

ответ

2

Хорошо, с большим количеством экспериментов нам удалось найти ответ самостоятельно.

Во-первых, чтобы инкапсулировать значения, содержащие специальные символы, мы должны заключить их в двойные кавычки.

Это, однако, не очень хорошо сочетается с findName="...", который также использует двойные кавычки, поэтому мы изменили его на одинарные кавычки.

Конечный результат был таков:

findName='..., STREET="Mainstreet 1, Town Center", ...' 
     ^  ^      ^ ^
     |   +---- this is needed -----+  | 
     |           | 
     +- and this is needed to use double quotes --+ 
+0

Не думал об этом, очень приятно. Если вы действительно заботились и хотели сохранить двойные кавычки в своем XML, вы могли бы использовать " внутри значения, подобного этому: STREET = " Mainstreet 1, Town Center " –

+0

Возможно, это и будет возможно. слишком. –

0

Это не является прямым ответом на ваш вопрос, но вы действительно не должны положить все, что детали там, если вы не хотите. CN должен хватить, если у вас ДЕЙСТВИТЕЛЬНО не много людей с одним и тем же CN ???

Так что вам просто нужно:

CN=demo.domain.com 

На самом деле вам не нужно даже использовать FindBySubjectDistinguishedName найти тип. Вы можете просто использовать FindBySubjectName и просто поставить простое имя субъекта вместо:

demo.domain.com 
+1

Мы хотели бы избежать сопоставлений с! несколько сертификатов, которые могут быть установлены, поскольку этот сервер может использоваться для работы с несколькими сторонними серверами, поэтому различающееся имя действительно то, что мы хотим. –

+0

Я был бы абсолютно потрясен, если бы вы столкнулись с столкновением, основанным только на предмете в вашем собственном мире, но если это требование тогда справедливо. :) –

 Смежные вопросы

  • Нет связанных вопросов^_^