Wcf 客户端端点证书参考,如何查找何时存在';可分辨名称部分中有逗号吗?

Wcf 客户端端点证书参考,如何查找何时存在';可分辨名称部分中有逗号吗?,wcf,certificate,endpoint,distinguishedname,Wcf,Certificate,Endpoint,Distinguishedname,我们正在尝试在WCF配置文件中引用客户端端点配置的证书 配置如下所示: <client> <endpoint address="https://domain.server.com/path/service.asmx" binding="basicHttpBinding" bindingConfiguration="TestServiceSoap" contract="..." name="..."> <iden

我们正在尝试在WCF配置文件中引用客户端端点配置的证书

配置如下所示:

<client>
    <endpoint address="https://domain.server.com/path/service.asmx"
        binding="basicHttpBinding" bindingConfiguration="TestServiceSoap"
        contract="..." name="...">
        <identity>
            <certificateReference storeName="TrustedPublisher"
                x509FindType="FindBySubjectDistinguishedName"
                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
如果我们为上面的
findValue
属性提供以下内容,则这是可行的:

CN=demo.domain.com, OU=Company, O=Company, L=City, S=County, C=CountryCode
但是,对于我们从第三方获得的证书,他们已将其地址添加为其中的一部分,因此上面的标识符列表如下所示:

<client>
    <endpoint address="https://domain.server.com/path/service.asmx"
        binding="basicHttpBinding" bindingConfiguration="TestServiceSoap"
        contract="..." name="...">
        <identity>
            <certificateReference storeName="TrustedPublisher"
                x509FindType="FindBySubjectDistinguishedName"
                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
显然,街道部分中的逗号不起作用,因为我们的字符串现在包含“towncenter”作为一个没有名称的单独部分

如何指定要使用此标识符列表查找证书

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

这并不是对你问题的直接回答,但如果你不想,你真的不必把所有的细节都放在那里。CN应该足够了,除非你真的有多个人拥有相同的CN

所以你只需要:

CN=demo.domain.com
事实上,您甚至不需要使用FindBySubjectDifferentizedName查找类型。您可以只使用FindBySubjectName,而只使用普通的主题名称:

demo.domain.com

这并不是对你问题的直接回答,但如果你不想,你真的不必把所有的细节都放在那里。CN应该足够了,除非你真的有多个人拥有相同的CN

所以你只需要:

CN=demo.domain.com
事实上,您甚至不需要使用FindBySubjectDifferentizedName查找类型。您可以只使用FindBySubjectName,而只使用普通的主题名称:

demo.domain.com

好的,通过更多的实验,我们自己设法找到了答案

首先,要封装包含特殊字符的值,我们需要将它们括在双引号中

然而,这对同样使用双引号的
findName=“…”
来说并不好,所以我们将其改为单引号

最终结果是:

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

好的,通过更多的实验,我们自己设法找到了答案

首先,要封装包含特殊字符的值,我们需要将它们括在双引号中

然而,这对同样使用双引号的
findName=“…”
来说并不好,所以我们将其改为单引号

最终结果是:

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

我们希望避免与可能安装的多个证书进行匹配,因为此服务器可能用于处理多个第三方服务器,所以可分辨名称才是我们真正想要的。如果您在自己的世界中遇到仅基于主题的冲突,我将绝对震惊,但如果这是要求,那么就足够公平了。:)我们希望避免与可能安装的多个证书进行匹配,因为此服务器可能用于处理多个第三方服务器,所以可分辨名称才是我们真正想要的。如果您在自己的世界中遇到仅基于主题的冲突,我将绝对震惊,但如果这是要求,那么就足够公平了。:)没想到这个,很好。如果您真的关心并希望在XML中保留双引号,您可能也可以使用“值的内部,如so:STREET=“Mainstreet 1,Town Center”,我们也会尝试。没有想到这一点,非常好。如果您真的关心并希望在XML中保留双引号,您可能会使用”在值的内部,例如:STREET=“Mainstreet 1,Town Center”这也可能,我们也会尝试。抱歉。。。星期五下午误读了问题:-(谢天谢地现在是啤酒点!对不起…星期五下午误读了问题:-(谢天谢地现在是啤酒点!)!