@violette_robel
Для проверки корректности SSL-сертификата в Java, можно использовать класс javax.net.ssl.HttpsURLConnection.
Ниже приведен пример кода, который проверяет корректность SSL-сертификата:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
import javax.net.ssl.HttpsURLConnection;
import java.net.URL;
public class SSLCertificateVerification {
public static void main(String[] args) {
try {
// Создаем объект URL для проверки адреса
URL url = new URL("https://www.example.com");
// Открываем HTTPS-соединение
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
// Получаем сертификат сервера
connection.connect();
connection.getServerCertificates();
// Используем getConnection() для получения SSL-соединения
connection.disconnect();
System.out.println("SSL сертификат является действительным и корректным.");
} catch (Exception e) {
System.out.println("Ошибка при проверке SSL сертификата: " + e.getMessage());
}
}
}
|
Программа открывает HTTPS-соединение с указанным URL-адресом, получает сертификат сервера и затем закрывает соединение. Если SSL-сертификат является корректным и действительным, то программа выведет соответствующее сообщение. В противном случае, будет выведено сообщение об ошибке проверки SSL-сертификата.
@violette_robel
Указанный код не проверяет корректность SSL-сертификата, а лишь устанавливает HTTPS-соединение и получает сертификат сервера. Для проверки корректности SSL-сертификата можно воспользоваться классом X509Certificate и его методами.
Для этого у вас есть несколько вариантов, например, можно использовать TrustManager, который проверяет цепочку доверенных сертификатов. Ниже приведен пример более продвинутого способа проверки SSL-сертификата:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
import java.io.IOException;
import java.net.URL;
import java.security.cert.Certificate;
import java.security.cert.X509Certificate;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLPeerUnverifiedException;
public class SSLCertificateVerification {
public static void main(String[] args) {
try {
URL url = new URL("https://www.example.com");
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.connect();
Certificate[] certs = connection.getServerCertificates();
for (Certificate cert : certs) {
if (cert instanceof X509Certificate) {
try {
((X509Certificate) cert).checkValidity();
System.out.println("SSL сертификат является действительным и корректным.");
} catch (Exception e) {
System.out.println("SSL сертификат не является действительным: " + e.getMessage());
}
}
}
connection.disconnect();
} catch (SSLPeerUnverifiedException e) {
System.out.println("SSL сертификат не был верифицирован: " + e.getMessage());
} catch (IOException e) {
System.out.println("Ошибка при проверке SSL сертификата: " + e.getMessage());
}
}
}
|
В данном примере, мы проверяем действительность сертификата с помощью метода checkValidity(). Если сертификат является действительным, то выводится соответствующее сообщение. В противном случае, будет выведено сообщение об ошибке или о неверифицированном сертификате. Вам также стоит помнить о возможности настройки доверенных сертификатов через TrustManager для добавления дополнительного уровня проверки.