Gradle SSLHandShakeException while running spring boot application - spring-boot

I am trying to run spring boot project with below command but I am getting ssl handshake issue.
cmd>..\gradlew bootrun
Downloading https://services.gradle.org/distributions/gradle-4.1-bin.zip
Exception in thread "main" 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
I was referring http://www.jyothis.co.in/2011/11/12/javax-net-ssl-sslhandshakeexception/ and this is asking to install certificate from browser. I checked by copying the url in IE but it is missing certificate so I am not able to install it. Please guide me on how I could remove this error.
Thank you

Related

Failed to load URLs from https://example.com/auth/realms/REALM/.well-known/openid-configuration

I was using my spring-boot service with keycloak for login. Until yesterday I had a keycloak on localhost:8081, but today we have been given a new domain for Keycloak (https://example.com) instead of still using localhost:8081.
For this I had to update my 'etc/hosts' file with the new domain.
The problem is that I can't launch any request from my microservice. I have a controller, with many end-points, but I can't access any of them, I get the error:
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
with this Warning:
Failed to load URLs from https://example.com/auth/realms/REALM/.well-known/openid-configuration
However, from Postman I can access this URL: https://example.com/auth/realms/REALM/.well-known/openid-configuration
In theory, I have my application.yaml well configured with the keycloak settings (I only had to change the auth path, where before it was localhost, is now my https://example.com)
keycloak.auth-server-url: https://example.com/auth/
keycloak.realm: MyREALM
keycloak.resource: login
keycloak.public-client: true
keycloak.credentials.secret: mysecret
I accessed my keycloak (with the new domain), I tried to export the certificate and with Keytools integrate it in the 'cacerts' file but I haven't been able to get it to work.
I've tried following these articles, but they don't solve my problem:
Keycloak: Failed to load URLs in Spring Boot Application
"PKIX path building failed" and "unable to find valid certification path to requested target"
Why is my microservice giving me this error?
2022-07-20 12:03:28.013 WARN 25996 --- [nio-8080-exec-4] o.keycloak.adapters.KeycloakDeployment : Failed to load URLs from https://example.com/auth/realms/MyREALM/.well-known/openid-configuration
javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131) ~[na:na]
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:370) ~[na:na]
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:313) ~[na:na]
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:308) ~[na:na]
I read many info about the certificates, download certificates of HTTPs web and add it to the cacerts file but it doesn't work for me.
The solution (temporally) was:
The problem with certificates was only in mi localhost, not in the development environment.
Then, in local, I opened a port-forward connection with Keycloak service, which throws the certificates-exception. It cans allowed me don't attack directly to the domain from Spring-Boot, avoiding the certificates error.
port-forward service/keycloak 8081:8080

AWS s3 access PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path

I have a https enabled Spring Boot service which does access the AWS S3. Now this service maintains its own custom truststore. So I have exported the following certificate from Java cacerts and added to its custom truststore.
Alias name: amazonrootca1 [jdk],amazonrootca2 [jdk],amazonrootca3 [jdk],amazonrootca4 [jdk], starfieldclass2ca [jdk], starfieldrootg2ca [jdk], starfieldservicesrootg2ca [jdk]
But still getting the following issue
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
How can I resolve this?

Running Android Studio with an HTTP Proxy

I just downloaded and installed the latest version of Android Studio (3.0.1) at work to start a new tablet project. During setup it needed me to enter my proxy server information which I did. I created an empty project and it asked me to accept or reject a couple of certificates one from Google Inc (*.google.com) and another from JetBrains s.r.o. (plugins.jetbrains.com). I accepted them and they now show up in Settings -> Tools -> Server Certificates. It has been able to download a number of packages, but after everything appears to be installed I get a message "Gradle project sync failed. Basic functionality will not work properly."
There are a number of error messages that look like this:
Unable to resolve dependency for ':app#debug/compileClasspath': Could not resolve com.android.support:appcompat-v7:26.1.0.
Could not resolve com.android.support:appcompat-v7:26.1.0.
Required by:
project :app
> Could not resolve com.android.support:appcompat-v7:26.1.0.
> Could not get resource 'https://dl.google.com/dl/android/maven2/com/android/support/appcompat-v7/26.1.0/appcompat-v7-26.1.0.pom'.
> Could not GET 'https://dl.google.com/dl/android/maven2/com/android/support/appcompat-v7/26.1.0/appcompat-v7-26.1.0.pom'.
> dl.google.com
I tried adding http and https proxy server information to the 'gradle.properties' as suggested here.
That changed the error message to this:
Unable to resolve dependency for ':app#debug/compileClasspath': Could not resolve com.android.support:appcompat-v7:26.1.0.
Could not resolve com.android.support:appcompat-v7:26.1.0.
Required by:
project :app
> Could not resolve com.android.support:appcompat-v7:26.1.0.
> Could not get resource 'https://dl.google.com/dl/android/maven2/com/android/support/appcompat-v7/26.1.0/appcompat-v7-26.1.0.pom'.
> Could not GET 'https://dl.google.com/dl/android/maven2/com/android/support/appcompat-v7/26.1.0/appcompat-v7-26.1.0.pom'.
> sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
> PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
> unable to find valid certification path to requested target
Further digging came up with this. Adding the URL to FireFox allows me to download the appcompat-v7-26.1.0.pom file but does not provide a "HTTPS certificate chain" to export a certificate from. I am also not sure where I am supposed to get the keytool mentioned as well.
To verify that it is the proxy setup that is causing the problem I took my laptop home. Using my home network and turning off the HTTP Proxy caused a 3rd error (connection timed out) which was fixed by clearing the certificates. So it appears that the certificates accepted in Android Studio are used by at least part of the process. Now that I am back at work everything seems to work just fine.
There must be others out there running Android Studio with an HTTP Proxy set. What is the "correct" way of fixing this?
I replaced the file
C:\Program Files\Android\Android Studio\jre\jre\lib\security>\cacerts
with the file from the jre (%JAVA_HOME%\lib\security\cacerts).
The certificates in the new cacerts file directed the android jre to go through the proxy server.

Spring Tool Suite can't connect to Update site using SSL (HTTPS)

When try to connect to update sites under help->Install New Software I get:
Unable to read repository at https://dl.google.com/eclipse/plugin/4.4/content.xml.
Unable to read repository at https://dl.google.com/eclipse/plugin/4.4/content.xml.
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
I have tried to import the certificate into the truststore as well as set it in the sts.ini file but to no avail.
Any help greatly appreciated!
I encountered a similar issue while trying to add templates to STS (3.6.2). The issue was my organization's usage of an SSL inspection tool that presents its certificate instead of the real one (GitHub.com).
The solution was to export the SSL inspection's certificate (using IE for example) and add it to the cacerts file. Use this article for the procedure.
Then update the sts.ini file and add the following lines:
-Djavax.net.ssl.trustStore=C:\Program Files\Java\jdk1.7.0_07\jre\lib\security\cacerts
-Djava.net.ssl.trustStorePassword=changeit
Finally - restart STS.

Xcode Application Loader - communications error

Attempting to upload a binary that has passed 'validation' I get:
Communications error. Please use diagnostic mode to check connectivity. You need to have outbound access to TCP port 443
An exception has occurred: sun.security.validator.Validator.Exception: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Could not connect to Apple's web service
Unable to authenticate the package: 617269104.itms
Transport update failed with unexpected exception
An exception has occurred: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.ceertpath.SunCertPathBuilder\exception: unable to find valid certification path to requested target
I still have this problem despite trying all the suggestions in various similar SO threads. Running App Loader 2.9.1; Java version 7 build 1.7.0.; Yosemite beta 4; Xcode 5.1.1. Also tried all the settings in Java Control Panel General/Network Settings. All firewall ports open for outbound traffic.
Any new/further suggestions appreciated...

Resources