Измените обычную связь TCP / IP на SSL

У меня есть задача изменить существующее приложение с обычного TCP / IP (ServerSocket и Socket) на связь TCP / IP на основе SSL. В настоящее время сервер (ServerSocket) прослушивает порт, а клиент (Socket) открывает соединение на этом порту, и он работает нормально.

Итак, для 10 учетных записей мы развернули 10 серверных приложений (на одном сервере), которые прослушивают 10 разных портов, и соответствующие клиенты подключаются к соответствующим портам. Но теперь наше требование - добавить безопасный уровень для связи. Для этого на сервере будет установлен сертификат, и приложение всех 10 учетных записей будет прослушивать один порт 443.

Для этого я использовал приведенный ниже код, но я не могу использовать порт 443 и развернуть его для всех 10 учетных записей, поскольку порт 443 используется другим приложением на том же сервере. Подскажите, пожалуйста, как этого добиться.

SSLServerSocketFactory sslserversocketfactory = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
            ssl = (SSLServerSocket) sslserversocketfactory.createServerSocket(serverPort);

Я не думаю, что вы можете добиться этого только с помощью этого кода, вам нужна помощь в настройке на стороне сервера. А какой сообщение об ошибке вы получили?

Shihe Zhang 02.07.2018 07:26

Только один процесс может прослушивать порт. Если вы запускаете 10 серверных приложений, каждому нужен свой порт. Так было с HTTP и все еще так с HTTPS. Если сейчас все должно пройти через порт 443 - по какой-либо причине - вам понадобится прокси-сервер HTTP (S), который прослушивает этот порт, который затем перенаправляет запросы на конкретный порт приложения.

Roland Weber 02.07.2018 07:29

На практике вы не можете использовать порт 443, за исключением HTTPS-сервера, а если вы пишете HTTPS-сервер, здесь нет никаких указаний на это. Непонятно, о чем вы спрашиваете.

user207421 02.07.2018 08:05

Проверьте, можете ли вы превратить это чистое TCP-приложение во что-то на основе http (s)

Marged 02.07.2018 08:10

@Shihe Zhang: А какое сообщение об ошибке вы получили? -> Ожидаемое исключение привязки JVM, поскольку 443 используется другим приложением.

Shlok 02.07.2018 08:17

Итак, вам нужно выяснить, какое приложение использует этот порт. Я не думаю, что это то, что можно обойти, изменив код. Вам нужна помощь админа сервера. Скорее всего, вы в конечном итоге используете механизм обратного прокси, чтобы исправить это.

Shihe Zhang 02.07.2018 08:58

почему бы не использовать tcp-прокси / балансировщик нагрузки, например nginx? Такой прокси позаботится о завершении SSL и будет передавать запрос на правильный вышестоящий сервер без каких-либо изменений кода, требуемых в вашем Java-коде.

gagan singh 02.07.2018 09:15

Вы можете осуществлять обмен TLS через любой порт, особого волшебного значения нет. Это просто вопрос использования клиентом правильного значения по умолчанию или использования чего-то вроде записей SRV в DNS. Кроме того, даже с одним IP-адресом и одним портом у вас может быть несколько «приложений» (например, веб-сайтов), просто заставив клиент использовать TLS SNI.

Patrick Mevzek 03.07.2018 03:23
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
8
182
0

Другие вопросы по теме