Я реализовал веб-сервис с аутентификацией сервера и аутентификацией клиента с помощью keytool. Проблема состоит в том, что эта аутентификация не работает, если я не включаю название хоста в ней. Например:
keytool -genkey -alias myAlias -keyalg RSA -keypass myPassword -storepass myPassword -keystore my.keystore -dname "CN=myhost"
Но мне не нужно, и мне не нравится проверка хостом или IP. Есть ли какой-либо способ избежать его?
Спасибо.
Как часть требований SSL, сертификат CN соответствует имени хоста, к которому вы подключаетесь. Если CN не совпадает, браузер будет считать, что вы подключаетесь к неправильному хосту и объекту.
Нет никакого способа обойти это.
Стандартная логика такова: если вам не нужно защищать свои данные, не используйте SSL. Если вам действительно нужно защитить его, вам нужно знать, к какому хосту вы подключаетесь. Промежутков быть не должно.
Однако в некоторых внутренних средах у вас может быть достаточно контроля над сетью и конфигурацией, чтобы не беспокоиться.
В последнем случае решение зависит от используемых вами клиентских библиотек. Если вы используете HTTP-клиент, прочтите руководство по настройке SSL . Возможно, вам не нужно реализовывать свой собственный SecureProtocolSocketFactory
, а можно просто использовать EasySSLProtocolSocketFactory .
Смысл использования SSL / TLS заключается в том, чтобы клиент мог быть уверен, что он подключается к правильной службе, а не к какой-то фиктивной службе, которая пытается выдать себя за настоящий. Если (гипотетически) сертификат сервера не должен содержать любая информация, идентифицирующая хост, клиент, если сервер, с которым он вел переговоры, был правильным.
Фактически, вам действительно нужна проверка с помощью объявления DNS оденьтесь, потому что, если вы этого не сделаете, ваша проверка SSL будет бесполезной. (Или, по крайней мере, нигде так безопасно, как могло бы быть.)
Я предполагаю, что теоретически вы можете попытаться установить связь клиент / сервер по каналам, защищенным другими средствами, кроме SSL / TLS. Но вам понадобится серьезный опыт в технологии безопасности и шифрования Java.