Mi sto occupando dello sviluppo di un connettore per OpenAM. Per effettuare le varie operazioni, al posto di utilizzare il clientsdk, abbiamo scelto di usare le interfacce REST offerte da OpenAM; nel caso in cui quest'ultimo sia deployato in https, la chiamata restituisce un'eccezione del tipo:

Mi sto occupando dello sviluppo di un connettore per OpenAM. Per effettuare le varie operazioni, al posto di utilizzare il clientsdk, abbiamo scelto di usare le interfacce REST offerte da OpenAM; nel caso in cui quest'ultimo sia deployato in https, la chiamata restituisce un'eccezione del tipo:


              Exception in thread "main" org.springframework.web.client.ResourceAccessException: I/O error: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; nested exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:309) at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:260) at org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:167) at
              Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1649)

per superare questo basta lanciare il metodo seguente prima delle chiamate REST.


              public static void trustSelfSignedSSL() {
              try {
              SSLContext ctx = SSLContext.getInstance("TLS");
              X509TrustManager tm = new X509TrustManager() {
              @Override
              public void checkClientTrusted(final X509Certificate[] xcs,
              final String string) throws CertificateException {
              }
              @Override</p>
              public void checkServerTrusted(final X509Certificate[] xcs,
              final String string) throws CertificateException {
              }
              @Override
              public X509Certificate[] getAcceptedIssuers() {
              return null;
              }
              };
              ctx.init(null, new TrustManager[]{tm}, null);
              SSLContext.setDefault(ctx);
              } catch (KeyManagementException kme) {
              LOG.error("Error during SSL configuration", kme);
              } catch (NoSuchAlgorithmException nsae) {
              LOG.error("Error during SSL configuration", nsae);
              }
              }
1 VOTITerribleTerrible
Ti è stato utile questo articolo?
Dal Blog di Tirasa
Quello che facciamo, studiamo e pensiamo tutti i giorni lo condividiamo qui.
Vai al blog >