Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Enhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.

Reply
simbasister
Frequent Visitor

how to solve javax.net.ssl.SSLHandshakeException when I called power bi api

I have got access token and created client by using this access token. But when i called power bi api like below

client.getReportsOperations().getReportInGroup(workspaceId, reportId)

it throws javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

how could i solve it? Do i need to install one certificate? Which one and How? 

4 REPLIES 4
simbasister
Frequent Visitor

Thank u. My codes and screenshots of the error message as below.

get access token:

public String getAccessToken() throws MalformedURLException, ExecutionException, InterruptedException {
ConfidentialClientApplication app = createClientApplication();
Set<String> resourceSet = new HashSet<>();
resourceSet.add(resourceUrl);
ClientCredentialParameters parameters = ClientCredentialParameters.builder(resourceSet).build();
Future<IAuthenticationResult> future = app.acquireToken(parameters);
String result = future.get().accessToken();
return result;
}

private ConfidentialClientApplication createClientApplication() throws MalformedURLException {
authorityUrl = authorityUrl.replace("organizations", tenantId);
return ConfidentialClientApplication.builder(clientId, ClientCredentialFactory.createFromSecret(clientSecret)).
authority(authorityUrl).
build();
}

create power bi client:

PowerBiClient client = PowerBiClient.getInstance(accessToken);

 get report in group:

Report report = client.getReportsOperations().getReportInGroup(workspaceId, reportId);

this code will throw SSLException as below:

simbasister_1-1641868979533.png

 

 

Anonymous
Not applicable

Hi @simbasister ,

This seems to be a SSL issue, you can refer to the links below to make troubleshooting to try to solve it.

Java Exception Handling – SSLHandshakeException

1. Generate a new key and storing it in a local keystore file:

$ keytool -genkeypair -alias airbrake -keyalg RSA -validity 7 -keystore keystore

2. Export the keystore to a local file:

$ keytool -export -alias airbrake -keystore keystore -rfc -file airbrake.cer

3. Import the certificate into the truststore. The best way to think of the difference between a keystore and truststore is that the keystore is used for private keys, while the truststore is for public certificates.

$ keytool -import -alias airbrake -file airbrake.cer -keystore truststore

4. Add the following to the SSLServer class:

// SSLServer.java
System.setProperty("javax.net.ssl.keyStore", "keystore");
System.setProperty("javax.net.ssl.keyStorePassword", "password");

5. Add the following to the SSLClient class:

// SSLClient.java
System.setProperty("javax.net.ssl.trustStore", "truststore");
System.setProperty("javax.net.ssl.trustStorePassword", "password");

How to solve javax.net.ssl.SSLHandshakeException Error?

Troubleshooting SSL related issues (Server Certificate)

Best Regards

It seems that I need obtain the public certificate from power bi server. Is that right? I tried many ways to dowload and save a copy. Unfortunatelly, there may be something wrong in obtaining one. If so, could you tell me how and where can I get the public certificate from power bi server? Then I can use keytool to install it. Thank you. 

Anonymous
Not applicable

Hi @simbasister ,

Are you calling the two REST API below? Are you using the embedded analytics solution: Embed content for customers? And it embed with a service principal and a certificate? Could you please provide a screenshot of the error message that occurred and some of the operations you took?

Reports - Get Reports

Reports - Get Reports In Group

In addition, please review the following links. Hope they can help you solve the problem.

PKIX PATH BUILDING FAILED: UNABLE TO FIND VALID CERTIFICATION PATH TO REQUESTED TARGET

How To Use REST API's


You have to create a custom connector for using OAUTH2. There are some very good tutorials here: https://github.com/Microsoft/DataConnectors

https://github.com/Microsoft/DataConnectors/blob/master/docs/m-extensions.md#implementing-an-oauth-f...


Best Regards

Helpful resources

Announcements
July PBI25 Carousel

Power BI Monthly Update - July 2025

Check out the July 2025 Power BI update to learn about new features.

Join our Fabric User Panel

Join our Fabric User Panel

This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.

June 2025 community update carousel

Fabric Community Update - June 2025

Find out what's new and trending in the Fabric community.