2016-12-06 6 views
1

У меня встроенный SAML 2.0 в моей системе, и я использую как IDP файл http://idp.ssocircle.com/idp-meta.xml. На прошлой неделе мое приложение отлично работало, но со вчерашнего дня (5 декабря 2016 года) у меня есть ошибка без внесения каких-либо изменений в файл конфигурации.SAML ERROR: Не удалось построить схему PKIX для ненадежных учетных данных

The error is: 
2016-12-06 10:00:07 ERROR: PKIX path construction failed for untrusted credential: [subjectName='CN=idp.ssocircle.com' |credential entityID='https://idp.ssocircle.com']: unable to find valid certification path to requested target 
2016-12-06 10:00:07 INFO : I/O exception (javax.net.ssl.SSLPeerUnverifiedException) caught when processing request: SSL peer failed hostname validation for name: null 
2016-12-06 10:00:07 INFO : Retrying request 

Мой metada боб:

<bean id="metadata" class="org.springframework.security.saml.metadata.CachingMetadataManager"> 
<constructor-arg> 
    <list> 
     <bean class="org.opensaml.saml2.metadata.provider.HTTPMetadataProvider"> 
      <constructor-arg> 
       <value type="java.lang.String">http://idp.ssocircle.com/idp-meta.xml</value> 
      </constructor-arg> 
      <constructor-arg> 
       <value type="int">5000</value> 
      </constructor-arg> 
      <property name="parserPool" ref="parserPool"/> 
     </bean> 
     <bean class="org.springframework.security.saml.metadata.ExtendedMetadataDelegate"> 
      <constructor-arg> 
       <bean class="org.opensaml.saml2.metadata.provider.FilesystemMetadataProvider"> 
        <constructor-arg> 
          <value type="java.io.File">WEB-INF/saml/sp_sg.xml</value> 
         </constructor-arg> 
        <property name="parserPool" ref="parserPool"/> 
       </bean> 
      </constructor-arg> 
      <constructor-arg> 
       <bean class="org.springframework.security.saml.metadata.ExtendedMetadata"> 
        <property name="local" value="true"/> 
        <property name="securityProfile" value="metaiop"/> 
        <property name="sslSecurityProfile" value="pkix"/> 
        <property name="signMetadata" value="true"/> 
        <property name="signingKey" value="apollo"/> 
        <property name="encryptionKey" value="apollo"/> 
        <property name="requireArtifactResolveSigned" value="false"/> 
        <property name="requireLogoutRequestSigned" value="false"/> 
        <property name="requireLogoutResponseSigned" value="false"/> 
        <property name="idpDiscoveryEnabled" value="false"/> 
        <property name="idpDiscoveryURL" value="http://localhost:8080/portal_report_sg/saml/discovery"/> 
        <property name="idpDiscoveryResponseURL" value="http://localhost:8080/portal_report_sg/saml/login?disco=true"/> 
       </bean> 
      </constructor-arg> 
     </bean> 
    </list> 
</constructor-arg> 
    <property name="hostedSPName" value="http://88.161.49.14/sg1"/> 

Спасибо за вашу помощь.

ответ

2

Корневой сертификат ЦС, используемый в SSOCircle, изменился вчера. Это, вероятно, проявляется во время разрешения артефакта, когда Spring SAML необходимо совершить вызов по HTTPS.

Загрузить сертификат из certification authority's website, сохраните его в файл (например, ca.cer в формате PEM) и импортировать в хранилище ключей Spring SAML с:

например
keytool -importcert -alias identtrustca -file ca.cer -keystore samlKeystore.jks 

Сертификат:

-----BEGIN CERTIFICATE----- 
    MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/ 
    MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT 
    DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow 
    PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD 
    Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB 
    AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O 
    rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq 
    OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b 
    xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw 
    7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD 
    aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV 
    HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG 
    SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69 
    ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr 
    AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz 
    R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5 
    JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo 
    Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ 
    -----END CERTIFICATE----- 

Spring SAML не использует доверенные ЦС из хранилища ключей Java по умолчанию, чтобы лучше контролировать, какие сертификационные органы доверяют.

+0

Благодарим за отзыв. Я попытался импортировать в хранилище ключей, но у меня есть ошибка: открытый ключ ответа и Keystore не совпадают. На французском языке: erreur keytool: java.lang.Exception: Les clés publiques de la réponse et du Keystore ne concordent pas' – mkaayn

+0

Это, вероятно, придирчиво к правильному формату PEM - я обновил выше. –

+0

Он работает. Большое вам спасибо. – mkaayn