7

OracleWebLogicサービスと通信する必要があるWCFクライアントに取り組んでいます。このサービスは、相互証明書認証を実施します。

ただし、ポリシーを満たすことができず、サーバーは次のようなエラーをログに記録します。

「WSM-00081:X.509証明書が署名されていません。」

私はこれの正確な意味が何であるか疑問に思っていました。Oracleのドキュメントには次のように記載されています。

WSM-00081:X.509証明書は署名されていません。

原因:使用されたX509トークンは、証明書認証シナリオの要件に従って署名されていません。

処置:証明書認証用にX509トークンに署名してください(使用する参照メカニズムによって異なります)。

レベル1

タイプ:エラー

影響:セキュリティ

http://docs.oracle.com/cd/E25054_01/core.1111/e10113/chapter_wsm_messages.htm

調査の結果、次のように設定することで、サービスポリシー構成ファイルのチェックを無効にできることがわかりましたis-signed="false

<orasp:x509-token orasp:enc-key-ref-mech="direct" orasp:is-encrypted="false"
              orasp:is-signed="false"
              orasp:rcpt-enc-key-ref-mech="direct"
              orasp:rcpt-sign-key-ref-mech="direct"
              orasp:sign-key-ref-mech="direct"/>

私の2つの理論:

  • 証明書はCAによって署名される必要があります
    • CAが署名した証明書を使用して確認しましたが、違いはありませんでした
    • ただし、これを構成するときにsomエラーが発生した可能性があります。もう一度やり直しますか?
  • どういうわけか、リクエストに含まれているBinarySecurityTokenに署名する必要があります。
    • しかし、どうすればこれができるのかわかりません

私は主題を完全に誤解しましたか、それとも問題が何であるか、そしてそれをどのように解決することができるかについていくつかの指針を与えることができますか?

4

1 に答える 1

0

リクエストの一部としてセキュリティ トークンに署名する必要があります。

config の binding 要素で、セキュリティ要素モードをSecurityMode.Messageに設定し、メッセージ要素 clientCredentialType をMessageCredentialType.Certificateに設定します。

<security mode="Message">
    <message clientCredentialType="Certificate"
        algorithmSuite="Default"
        establishSecurityContext="true" />
</security>

次に、クライアント証明書の場所を解決するエンドポイント動作を作成します。

<behavior name="endpointCredentialBehavior">
    <clientCredentials>
        <clientCertificate findValue="Contoso.com" 
            storeLocation="LocalMachine"
            storeName="TrustedPeople"
            x509FindType="FindBySubjectName" />
    </clientCredentials>
</behavior>
于 2012-10-18T21:46:34.657 に答える