Я построил Java-программу как интерфейс для базы данных на сервере, и я пытаюсь использовать SSL для шифрования трафика между клиентами и сервером. Вот команда, которую я выдал для создания сертификата сервера:
keytool -genkey -alias localhost -keyalg RSA -keypass kpass123 -storepass kpass123 -keystore keystore.jks
Вот соответствующий код:
System.setProperty("javax.net.ssl.keyStore",
"G:/Data/Android_Project/keystore.jks");
System.setProperty("javax.net.ssl.keyPassword", "kpass123");
SSLServerSocketFactory factory =
(SSLServerSocketFactory)SSLServerSocketFactory.getDefault();
SSLServerSocket accessSocket =
(SSLServerSocket)factory.createServerSocket(DB_ACCESS_PORT);
Когда я пытаюсь запустить это, я поймаю это:
java.security.NoSuchAlgorithmException: ошибка при построении реализации (алгоритм: по умолчанию, поставщик: SunJSSE, класс: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
Я также обнаружил, что служба "KeyPairGenerator" имеет для нее доступные алгоритмы DIFFIEHELLMAN, DSA, RSA, тогда как "SSLContext" имеет алгоритмы SSL, TLS, SSLV3, DEFAULT, TLSV1.
Нужно ли мне найти способ установки RSA в службу SSLContext? Я даже смотрю на правильные услуги? Должен ли я использовать RSA?
Я новичок во всей документации SSL - Security - Certificates, и это просто удаляет меня, что каждая из этих разных служб не имеет одинаковых алгоритмов, когда они должны получать доступ к тем же сертификатам.