Невозможно найти действительный путь сертификации для конкретной цели
У меня есть требование, где мне нужно проверить, работает ли tomcat URL или нет. Для этого я написал java-код для проверки кода ответа и на основании этого определяю, работает ли веб-сайт или нет.
Проблема в том, что URL использует HTTPS
и я получаю ошибку ниже:
javax.net.ssl.SSLHandshakeException:
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find
valid certification path to specified target
Я искал по интернету и наткнулся на разные посты, но это не помогло. Я импортировал сертификат в хранилище доверенных сертификатов JRE с помощью keytool, но это тоже не помогло.
HeatlhCheck.java
import java.net.HttpURLConnection;
import javax.net.ssl.HttpsURLConnection;
import java.io.*;
import java.net.URL;
import java.lang.String;
/* This is the maim entry point for the script*/
public class HealthCheck
{
public static void main(String args[])
{
//instancetiate the URLCHEck class
String url = "https://Apache:port/mywebsite";
int timeout = 1000000;
int sitestatus = 0;
URLCheck site = new URLCheck();
sitestatus = site.isURLUp(url,timeout);
if(sitestatus==0)
{
System.out.println("\n Site is up");
}
else if (sitestatus==-1)
{
System.out.println("\n Could not determine site status ");
}
else
{
System.out.println("\n Site is is else condition, down ");
}
}
}
URLCheck.java
import java.net.HttpURLConnection;
import javax.net.ssl.HttpsURLConnection;
import java.io.*;
import java.net.URL;
import java.lang.String;
public class URLCheck
{
public int isURLUp(String url, int timeout)
{
//URLS Checks for checking whether the URL's are accessible or not.
System.out.println("\n URL passed is : "+url);
int responseCode = 3;
System.out.println("\n URL after Trimming : : "+url);
try {
HttpsURLConnection connection = (HttpsURLConnection) new URL(url).openConnection();
connection.setConnectTimeout(timeout);
connection.setReadTimeout(timeout);
connection.setRequestMethod("HEAD");
responseCode = connection.getResponseCode();
System.out.println("I am Here");
System.out.println("response Code = "+responseCode);
if (responseCode != 200)
{
return 1;
}
}
catch (IOException exception)
{
System.out.println("Exception caught"+exception);
}
return -2;
}
}