Référence de certificat de point de terminaison client, comment savoir s'il existe une virgule dans les parties du nom distinctif?
-
22-07-2019 - |
Question
Nous essayons de référencer un certificat pour une configuration de point de terminaison client dans notre fichier de configuration WCF.
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, le " Objet " propriété ressemble à ceci:
CN = demo.domain.com
OU = Company
O = Company
L = City
S = County
C = CountryCode
Ceci fonctionne, si nous fournissons ce qui suit pour l'attribut findValue
ci-dessus:
CN=demo.domain.com, OU=Company, O=Company, L=City, S=County, C=CountryCode
Cependant, pour un certificat que nous avons d'un tiers, celui-ci a ajouté son adresse en tant que partie intégrante de celle-ci. La liste d'identifiants ci-dessus se présente ainsi:
CN = demo.domain.com
OU = Company
STREET = Mainstreet 1, Town Center
L = City
S = County
C = CountryCode
Évidemment, la virgule dans la partie STREET ne fonctionnera pas, car notre chaîne contient maintenant " Town Center " en tant que pièce séparée sans nom.
Comment spécifions-nous que nous souhaitons trouver le certificat à l'aide de cette liste d'identifiants?
CN=demo.domain.com, OU=Company, O=Company, STREET=Mainstreet 1, Town Center, L=City, S=County, C=CountryCode
^-- Argh!
La solution
Ok, avec plus d’expérimentation, nous avons réussi à trouver la réponse nous-mêmes.
Premièrement, pour encapsuler des valeurs contenant des caractères spéciaux, nous devons les placer entre guillemets.
Toutefois, cela ne fonctionnera pas bien avec findName = "..."
, qui utilise également des guillemets doubles. Nous l'avons donc remplacé par des 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 --+
Autres conseils
Ce n’est pas une réponse directe à votre question, mais vous n’avez pas vraiment besoin d’indiquer tous ces détails si vous ne le souhaitez pas. Le CN devrait suffire à moins que vous n'ayez VRAIMENT plusieurs personnes avec le même CN ???
Il vous suffit donc de:
CN=demo.domain.com
En fait, vous n'avez même pas besoin d'utiliser le type de recherche FindBySubjectDistinguishedName. Vous pouvez simplement utiliser FindBySubjectName et simplement mettre le nom de sujet simple à la place:
demo.domain.com