Я работаю над проектом Java, где я должен реализовать SSL-протокол на стороне сервера. Это первый раз, когда я буду использовать SSL в своем приложении, поэтому я много читал о SSL/TLS, и теперь я хочу реализовать что-то на Java. Я реализую этот процесс с помощью JSSE API:
Клиент соединится со мной
Я буду аутентифицироваться с помощью сертификата открытого ключа. Я имею в виду, что я отправлю клиенту открытый ключ и соответствующий сертификат
Клиент шифрует секретный ключ, используя мой открытый ключ и алгоритм RSA, и отправляет его мне.
У меня уже есть закрытый ключ и сертификат, сохраненные в хранилище ключей на моем компьютере. Поэтому я сомневаюсь, как получить к ним доступ из моего Java-приложения. Я не знаю, какие шаги нужно сделать, чтобы получить к ним доступ, так как я впервые имею дело с такими вещами.
Я буду использовать SSLEngine
. Поэтому я должен сначала инициализировать SSLContext
, используя этот код:
// First initialize the key and trust material.
KeyStore ksKeys = KeyStore.getInstance("JKS");
ksKeys.load(new FileInputStream("/.../myKey"), passphrase);
KeyStore ksTrust = KeyStore.getInstance("JKS");
ksTrust.load(new FileInputStream("/../myCertificate"), passphrase);
sslContext = SSLContext.getInstance("TLS");
sslContext.init( kmf.getKeyManagers(), tmf.getTrustManagers(), null);
// We're ready for the engine.
SSLEngine engine = sslContext.createSSLengine(hostname, port);
// Use as client
engine.setUseClientMode(true);
Я действительно новичок в криптографии, и я впервые программирую этот материал. Есть идеи?