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

明らかに、STREET部分のコンマは機能しません。これは、文字列に名前のない別の部分として「TownCenter」が含まれているためです。

この識別子のリストを使用して証明書を検索することをどのように指定しますか?

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

2 に答える 2

3

さて、さらに実験を重ねることで、私たちは自分たちで答えを見つけることができました。

まず、特殊文字を含む値をカプセル化するには、それらを二重引用符で囲む必要があります。

ただし、これは二重引用符を使用する場合にはうまく機能しないfindName="..."ため、一重引用符に変更しました。

最終結果はこれでした:

findName='..., STREET="Mainstreet 1, Town Center", ...'
         ^            ^                         ^     ^
         |            +---- this is needed -----+     |
         |                                            |
         +- and this is needed to use double quotes --+
于 2009-10-30T16:11:15.767 に答える
1

これはあなたの質問に対する直接の答えではありませんが、必要がなければ、そこにすべての詳細を入れる必要はありません。同じCNを持つ複数の人が本当にいない限り、CNで十分です。

だからあなたはただ必要です:

CN=demo.domain.com

実際、FindBySubjectDistinguishedName検索タイプを使用する必要はありません。FindBySubjectNameを使用して、代わりにプレーンなサブジェクト名を入力することができます。

demo.domain.com
于 2009-10-30T16:05:57.650 に答える