@jerad.kuphal
Для проверки корректности SSL сертификата в Java можно использовать класс SSLContext и класс X509Certificate.
Вот пример кода, который выполняет проверку корректности SSL сертификата в Java:
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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
import java.io.FileInputStream; import java.security.KeyStore; import java.security.cert.Certificate; import java.security.cert.CertificateExpiredException; import java.security.cert.CertificateNotYetValidException; import java.security.cert.X509Certificate; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; public class SSLCertificateValidation { public static void main(String[] args) { // Путь к файлу с сертификатом String certificatePath = "path/to/certificate.crt"; try { // Создание SSL контекста SSLContext sslContext = SSLContext.getInstance("TLS"); // Загрузка сертификата FileInputStream fileInputStream = new FileInputStream(certificatePath); Certificate certificate = CertificateFactory.getInstance("X.509").generateCertificate(fileInputStream); // Создание доверительного менеджера TrustManager[] trustManagers = new TrustManager[] { new X509TrustManager() { @Override public void checkClientTrusted(X509Certificate[] chain, String authType) { // Проверка доверенности клиента } @Override public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateExpiredException, CertificateNotYetValidException { // Проверка доверенности сервера for (X509Certificate cert : chain) { try { // Проверка корректности сертификата cert.checkValidity(); // TODO: Дополнительные проверки, если необходимо } catch (CertificateExpiredException e) { // Обработка исключения при истекшем сертификате } catch (CertificateNotYetValidException e) { // Обработка исключения при еще не действующем сертификате } } } @Override public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0]; } } }; // Инициализация SSL контекста sslContext.init(null, trustManagers, null); // Дополнительные действия после проверки сертификата (если необходимо) // Установка созданного SSL контекста для проверки соединений //HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory()); System.out.println("SSL сертификат проверен успешно."); } catch (Exception e) { e.printStackTrace(); System.out.println("Ошибка при проверке SSL сертификата."); } } } |
В этом примере SSL сертификат загружается из файла, создается доверительный менеджер и указываются дополнительные проверки корректности сертификата. Если проверка проходит успешно, выводится сообщение об успешной проверке. Если возникает ошибка, выводится сообщение об ошибке, а также трассировка стека.
@jerad.kuphal
Просто проверить корректность SSL сертификата можно с помощью метода checkValidity()
класса X509Certificate
. Ниже приведен пример кода без необходимости создания 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 33 |
import java.io.FileInputStream; import java.security.cert.CertificateExpiredException; import java.security.cert.CertificateNotYetValidException; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; public class SSLCertificateValidation { public static void main(String[] args) { // Путь к файлу с сертификатом String certificatePath = "path/to/certificate.crt"; try { // Загрузка сертификата FileInputStream fileInputStream = new FileInputStream(certificatePath); X509Certificate certificate = (X509Certificate) CertificateFactory.getInstance("X.509").generateCertificate(fileInputStream); // Проверка корректности сертификата certificate.checkValidity(); System.out.println("SSL сертификат корректен."); } catch (CertificateExpiredException e) { System.out.println("Ошибка: Сертификат истек."); e.printStackTrace(); } catch (CertificateNotYetValidException e) { System.out.println("Ошибка: Сертификат еще не действует."); e.printStackTrace(); } catch (Exception e) { System.out.println("Ошибка при проверке SSL сертификата."); e.printStackTrace(); } } } |
В данном примере сертификат загружается из файла, преобразуется в объект X509Certificate
, и затем вызывается метод checkValidity()
для проверки его корректности. В случае истечения срока действия или недействительности сертификата, будет сгенерировано соответствующее исключение CertificateExpiredException
или CertificateNotYetValidException
.