2016-12-30 32 views
0

Я использую opensaml 2.6.1 и spring-security-saml2-core 1.0.1 в каком-то проекте, чтобы включить SSO. Я использую самоподписанный сертификат для шифрования и подписи.SAML доверенный сертификат

Когда мой поставщик услуг получил ответ SAML, я получаю следующее сообщение об ошибке:

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 

Что я должен понять из исключений messageis:

  • проверка подписи является успешным
  • Есть проблема, когда я доверяю своему сертификату Являются ли мои рекомендации правильными?

Я импортировал свой сертификат для моего хранилища ключей (cacerts магазина в JVM) с помощью следующей команды:

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

dosen't этой команды импортировать мой сертиф и пометить его как надежный Java ?

Другое дело, может ли java доверять самоподписанной подписи или я должен получить подтверждение сертификата CA, чтобы пройти проверку?

+0

Да. Java может доверять самозаверяющему сертификату. – anacron

+0

Спасибо anacron, Так что же может быть причиной этого исключения? – Zizou

+0

Если вы пытаетесь реализовать SSL, вам понадобится магазин ключей. 'cacerts' - это магазин доверия, а не хранилище ключей. Он отлично работает, если вы хотите получить доступ к сайту другого сайта SSL. Но если вы настраиваете SSL на своем сайте, вам понадобится другое хранилище ключей. – anacron

ответ

0

Spring SAML не использует cacerts для проверки доверия, но его выделенное хранилище ключей (samlKeystore.jks в образце приложения). Подробнее см. Главу руководства Spring SAML об управлении сертификатами.