@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 для добавления дополнительного уровня проверки.