Importing SSL enabled Web Service to Model
By default if you try to import a web service with HTTPS url, it will throw the below exception in NWDS 7.3.
Error Details:
Could not load the WSDL content for WSDL https://<hostname>/NotificationService/Notification?wsdl&mode=ws_policy
com.sap.ide.es.config.mc.runtime.serviceimport.exceptions.NoneProcessableWsdlException: Could not load the WSDL content for WSDL https://scdepdev.isola-group.com/NotificationService/Notification?wsdl&mode=ws_policy
at com.sap.ide.es.config.mc.runtime.internal.serviceimport.BaseWsdlAnalyser.parseWsdl(BaseWsdlAnalyser.java:144)
at com.sap.ide.es.config.mc.runtime.internal.serviceimport.BaseWsdlAnalyser.createServiceInfo(BaseWsdlAnalyser.java:126)
at com.sap.ide.es.config.mc.runtime.internal.serviceimport.BaseWsdlAnalyser.getServicesInfo(BaseWsdlAnalyser.java:110)
at com.sap.ide.es.config.mc.ui.wizards.config.ImportConfigurationWizard.analyseWsdl(ImportConfigurationWizard.java:323)
at com.sap.ide.es.config.mc.ui.wizards.config.ImportConfigurationWizard.access$000(ImportConfigurationWizard.java:83)
at com.sap.ide.es.config.mc.ui.wizards.config.ImportConfigurationWizard$1.run(ImportConfigurationWizard.java:274)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
Caused by: com.sap.ide.es.core.util.wsdl.parser.ResourceLoadException: Could not load the WSDL content for WSDL https://<hostname>/NotificationService/Notification?wsdl&mode=ws_policy
at com.sap.ide.es.core.util.internal.wsdl.parser.WsdlParser.handleLoadWsdlError(WsdlParser.java:162)
at com.sap.ide.es.core.util.internal.wsdl.parser.WsdlParser.loadDefinitions(WsdlParser.java:135)
at com.sap.ide.es.core.util.internal.wsdl.parser.WsdlParser.parse(WsdlParser.java:62)
at com.sap.ide.es.config.mc.runtime.internal.serviceimport.BaseWsdlAnalyser.parseWsdl(BaseWsdlAnalyser.java:138)
… 6 more
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:1623)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:198)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:192)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1074)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:128)
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:529)
at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:465)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:884)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1120)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1147)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1131)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:434)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:166)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1049)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:234)
at org.eclipse.emf.ecore.resource.impl.URIHandlerImpl.createInputStream(URIHandlerImpl.java:178)
at org.eclipse.emf.ecore.resource.impl.ExtensibleURIConverterImpl.createInputStream(ExtensibleURIConverterImpl.java:301)
at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1254)
at com.sap.ide.es.core.util.internal.wsdl.parser.WsdlParser.loadDefinitions(WsdlParser.java:129)
… 8 more
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:294)
at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:200)
at sun.security.validator.Validator.validate(Validator.java:218)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:126)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:209)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:249)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1053)
… 23 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:174)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:238)
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:289)
… 29 more
Solution:
I went through couple of forum post and found out that in order for the import to work, you need to do some settings in your NWDS.
- First Step – you need to download the SSL certificate of the server to your local machine
- Second Step – Create a keystore for your NWDS using the keytool command. “keytool -import -alias <alias name> -file <Certificate location on your machine> -keystore <Key store location on your machine>“
You will need to set a password for your key store as well.
- Third Step – Open the SapNetweaverDeveloperStudio.ini file under eclipse folder and enter the below parameters
-Djavax.net.ssl.trustStore=<Key store location on your machine>
-Djavax.net.ssl.trustStorePassword=<mypassword>
Now try re-importing the model.