2009-10-30 7 views
0

Nous essayons de référencer un certificat pour une configuration de point de terminaison client dans notre fichier de configuration WCF.Référence de certificat de point de terminaison client, comment trouver quand il y a une virgule dans les parties de nom distinctif?

La configuration ressemble à ceci:

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

Pour un certificat de test, la propriété "Objet" ressemble à ceci:

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

Cela fonctionne, si nous fournissons les éléments suivants pour la findValue attribut ci-dessus:

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

Cependant, pour un certificat nous avons d'un tiers, ils ont ajouté leur adresse comme une partie de cela, de sorte que la liste ci-dessus des identificateurs ressemble à ceci:

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

De toute évidence, la virgule dans la partie STREET ne fonctionnera pas, comme notre chaîne contient maintenant « Ville Centre "en tant que pièce séparée sans nom. Comment pouvons-nous spécifier que nous voulons trouver le certificat en utilisant cette liste d'identifiants?

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

Désolé ... vendredi après-midi a mal interprété la question :-(heureusement, il est de la bière heures maintenant – Tanner

+0

Eh oui, sans aucun doute :) –

Répondre

2

Ok, avec une plus grande expérimentation nous avons réussi à trouver la réponse nous. Tout d'abord, pour encapsuler des valeurs contenant des caractères spéciaux, nous devons les placer entre guillemets.

Ceci, cependant, ne fonctionnera pas bien avec findName="..." qui utilise également des guillemets, donc nous avons changé cela en guillemets simples.

Le résultat final était le suivant:

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

N'a pas pensé à cela, très bien. Si vous vous souciez réellement des citations doubles de votre XML, vous pouvez probablement utiliser " comme suit: STREET = " Mainstreet 1, Town Centre " –

+0

Cela pourrait être possible aussi, nous essaierons que aussi. –

0

Ce n'est pas une réponse directe à votre question, mais vous n'avez pas vraiment de mettre tous ces détails là-bas si vous ne voulez pas. Le CN devrait suffire à moins que vous ayez VRAIMENT plusieurs personnes avec le même CN ???

Vous avez juste besoin:

CN=demo.domain.com 

En fait, vous ne même pas besoin d'utiliser le type FindBySubjectDistinguishedName trouver. Vous pouvez simplement utiliser FindBySubjectName et vient de mettre le nom du sujet simple au lieu:

demo.domain.com 
+1

Nous voudrions éviter correspondant à contre! plusieurs certificats qui pourraient être installés, vu que ce serveur pourrait être utilisé pour traiter plusieurs serveurs tiers, de sorte que le nom distinctif est vraiment ce que nous voulons. –

+0

Je serais absolument choqué si vous avez déjà rencontré une collision basée sur le sujet dans votre propre monde, mais si c'est l'exigence alors assez juste. :) –