2012-10-08 11 views
7

Ich arbeite an einem WCF-Client, der mit einem Oracle WebLogic-Dienst kommunizieren muss. Der Dienst erzwingt die gegenseitige Zertifikatauthentifizierung.So signieren Sie das X509-Token mithilfe von WCF

Wir nicht sind jedoch in der Lage, die Politik und der Server protokolliert einen Fehler, der besagt zu erfüllen:

„WSM-00081: Das X.509-Zertifikat nicht signiert ist.“

Ich habe mich gefragt, was die genaue Bedeutung davon ist. Die Oracle-Dokumentation besagt:

WSM-00081: Das X.509-Zertifikat ist nicht signiert.

Ursache: Das verwendete X509-Token wurde nicht gemäß den Anforderungen des Zertifikatsauthentifizierungsszenarios signiert.

Aktion: Unterschreiben Sie das X509-Token (abhängig vom verwendeten Referenzmechanismus) für die Zertifikatauthentifizierung.

Level: 1

Typ: ERROR

Auswirkungen: Sicherheit

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

Nach einigen Recherchen fanden wir heraus, dass wir den Scheck in den Dienst deaktivieren Richtlinienkonfigurationsdatei durch Einstellung 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"/> 

Meine zwei Theorien:

  • Das Zertifikat von einer Zertifizierungsstelle signiert werden muss
    • Wir von einer CA ein Zertifikat überprüft mit unterzeichnet, aber das machte keinen Unterschied
    • Aber wir möglicherweise einige Fehler bei der Konfiguration gemacht haben. Sollten wir es versuchen?
  • Wir müssen irgendwie die mitgelieferten BinarySecurityToken unterschreiben, die in der Anfrage enthalten sind.
    • Allerdings habe ich keine Ahnung, wie ich das tun kann

Habe ich völlig das Thema falsch verstanden oder kann einer von euch einige Hinweise geben, was das Problem sein könnte und wie es sein kann, gelöst?

+0

Verwenden Sie ein selbstsigniertes Zertifikat von einem vertrauenswürdigen Anbieter? – Rajesh

+0

@Rajesh: Ich habe beides versucht. – nilu

+1

Ist es eine 2-Wege-Authentifizierung? Haben Sie auch überprüft, ob der Anbieter als vertrauenswürdige Autorität im Oracle Weblogic-Dienst existiert? Stellen Sie sicher, dass bei einer 2-Wege-Authentifizierung beide Zertifikate von einer vertrauenswürdigen Stelle signiert werden – Rajesh

Antwort

0

Sie müssen das Sicherheitstoken als Teil der Anforderung signieren.

Im Bindungselement Ihrer Konfigurations gesetzt, das Sicherheitselement-Modus SecurityMode.Message und das Nachrichtenelement ClientCredentialType zu MessageCredentialType.Certificate:

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

Als Nächstes erstellen Sie einen Endpunkt Verhalten der Lage Ihres client certificate zu beheben:

<behavior name="endpointCredentialBehavior"> 
    <clientCredentials> 
     <clientCertificate findValue="Contoso.com" 
      storeLocation="LocalMachine" 
      storeName="TrustedPeople" 
      x509FindType="FindBySubjectName" /> 
    </clientCredentials> 
</behavior>