Полное руководство по добавлению сертификата в JDK 11

В этой статье блога мы рассмотрим различные способы добавления сертификата в JDK 11. Добавление сертификата необходимо для безопасной связи по протоколам SSL/TLS. Мы рассмотрим различные подходы на примерах кода, которые помогут вам понять процесс.

Метод 1: использование Java Keytool
Java Keytool — это инструмент командной строки, предоставляемый JDK для управления сертификатами. Выполните следующие действия:

Шаг 1. Создайте хранилище ключей

keytool -genkeypair -alias mycert -keyalg RSA -keysize 2048 -keystore keystore.jks

Шаг 2. Импортируйте сертификат

keytool -importcert -alias mycert -file certificate.crt -keystore keystore.jks

Метод 2: программная загрузка сертификатов
Вы можете загружать сертификаты программно, используя класс SSLContext. Вот пример:

import javax.net.ssl.SSLContext;
import java.io.FileInputStream;
import java.security.KeyStore;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
public class CertificateLoader {
    public static void main(String[] args) throws Exception {
        // Load the certificate file
        FileInputStream fileInputStream = new FileInputStream("certificate.crt");
        CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
        X509Certificate certificate = (X509Certificate) certificateFactory.generateCertificate(fileInputStream);
        // Create a keystore and add the certificate
        KeyStore keyStore = KeyStore.getInstance("PKCS12");
        keyStore.load(null, null);
        keyStore.setCertificateEntry("mycert", certificate);
        // Create an SSLContext and initialize it with the keystore
        SSLContext sslContext = SSLContext.getInstance("TLS");
        sslContext.init(null, null, null);
        sslContext.init(null, null, null);
    }
}

Метод 3: использование свойств системы
Вы также можете указать сертификат с помощью свойств системы. Добавьте следующий код перед установкой SSL-соединения:

System.setProperty("javax.net.ssl.trustStore", "keystore.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "password");

Добавление сертификата в JDK 11 имеет решающее значение для безопасной связи. В этой статье мы рассмотрели различные методы достижения этой цели, в том числе использование Java Keytool, программную загрузку сертификатов и использование свойств системы. Выберите метод, который соответствует вашим требованиям, и внедрите его в свое приложение, чтобы обеспечить безопасную связь SSL/TLS.