2016-12-30 4 views
0

J'utilise opensaml 2.6.1 et spring-security-saml2-core 1.0.1 dans certains projets pour activer SSO. J'utilise un certificat auto-signé pour le cryptage et la signature.Certificat de confiance SAML

Lorsque mon fournisseur de services a reçu la réponse SAML, je reçois l'erreur suivante:

DEBUG [org.opensaml.xml.signature.SignatureValidator] Creating XMLSignature object 
DEBUG [org.opensaml.xml.signature.SignatureValidator] Validating signature with signature algorithm URI: http://www.w3.org/2001/04/xmldsig-more#rsa-sha512 
DEBUG [org.opensaml.xml.signature.SignatureValidator] Validation credential key algorithm 'RSA', key instance class 'sun.security.rsa.RSAPublicKeyImpl' 
DEBUG [org.opensaml.xml.signature.SignatureValidator] Signature validated with key from supplied credential 
DEBUG [org.opensaml.xml.signature.impl.BaseSignatureTrustEngine] Signature validation using candidate credential was successful 
DEBUG [org.opensaml.xml.signature.impl.BaseSignatureTrustEngine] Successfully verified signature using KeyInfo-derived credential 
DEBUG [org.opensaml.xml.signature.impl.BaseSignatureTrustEngine] Attempting to establish trust of KeyInfo-derived credential 
DEBUG [org.opensaml.xml.signature.impl.BaseSignatureTrustEngine] Failed to establish trust of KeyInfo-derived credential 
DEBUG [org.opensaml.xml.signature.impl.BaseSignatureTrustEngine] Failed to verify signature and/or establish trust using any KeyInfo-derived credentials 
DEBUG [org.opensaml.xml.signature.impl.ExplicitKeySignatureTrustEngine] Attempting to verify signature using trusted credentials 
DEBUG [org.opensaml.xml.signature.impl.ExplicitKeySignatureTrustEngine] Failed to verify signature using either KeyInfo-derived or directly trusted credentials 
DEBUG [org.springframework.security.saml.websso.WebSSOProfileConsumerImpl] Validation of authentication statement in assertion failed, skipping 
org.opensaml.xml.validation.ValidationException: Signature is not trusted or invalid 
    at org.springframework.security.saml.websso.AbstractProfileBase.verifySignature(AbstractProfileBase.java:272) 
    at org.springframework.security.saml.websso.WebSSOProfileConsumerImpl.verifyAssertionSignature(WebSSOProfileConsumerImpl.java:419) 
    at org.springframework.security.saml.websso.WebSSOProfileConsumerImpl.verifyAssertion(WebSSOProfileConsumerImpl.java:292) 
    at org.springframework.security.saml.websso.WebSSOProfileConsumerImpl.processAuthenticationResponse(WebSSOProfileConsumerImpl.java:214) 
    at org.springframework.security.saml.SAMLAuthenticationProvider.authenticate(SAMLAuthenticationProvider.java:82) 
    at 

Ce que je comprends exception messageis:

  • la vérification de la signature est succesful
  • Il y a un problème lorsque je fais confiance à mon certificat. Mes correctifs sont-ils corrects?

J'ai importé mon certificat auto-signé à mon keystore (cacerts magasin dans la machine virtuelle Java) en utilisant la commande suivante:

keytool -importcert -trustcacerts -file "myCcert.crt" -keystore "C:\Program Files\Java\jdk1.8.0_65\jre\lib\security\cacerts" -storepass changeit -alias test 

doesnt cette commande importe mon certif et marquer comme confiance en java ?

Autre chose, java peut-il faire confiance à une signature auto-signée ou dois-je obtenir un certificat validé par une autorité de certification pour passer la validation?

+0

Oui. Java peut faire confiance à un certificat auto-signé. – anacron

+0

Merci anacron, Alors, quelle peut être la cause de cette exception? – Zizou

+0

Si vous essayez d'implémenter SSL, vous aurez besoin d'un magasin de clés. 'cacerts' est un magasin de confiance et non un magasin de clés. Cela fonctionne très bien si vous voulez accéder au site SSL d'un autre utilisateur. Mais si vous configurez SSL sur votre site, vous aurez besoin d'un fichier de clés différent. – anacron

Répondre

0

Spring SAML n'utilise pas de cacerts pour la vérification de confiance, mais son keystore dédié (samlKeystore.jks dans l'exemple d'application). Veuillez lire le chapitre du manuel de Spring SAML sur la gestion des certificats pour plus de détails.