Назад | Перейти на главную страницу

Могу ли я использовать самозаверяющий сертификат в Tomcat для частных API-интерфейсов и коммерческий сертификат для общедоступных страниц?

Я распространяю настольное приложение Java, которое должно взаимодействовать с некоторыми RESTful API, обслуживаемыми встроенным Tomcat в веб-приложении Spring Boot.

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

Можно ли использовать несколько сертификатов в Tomcat? Если да, то как сервер определяет, какие запросы зашифрованы каким сертификатом?

Сам протокол не позволяет размещать два сертификата SSL на одном и том же порту на одном IP.

Из ИНСТРУКЦИЯ по настройке Tomcat SSL:

Использование виртуальных хостов на основе имен в защищенном соединении может быть проблематичным. Это конструктивное ограничение самого протокола SSL. Подтверждение связи SSL, при котором обозреватель клиента принимает сертификат сервера, должно произойти до обращения к HTTP-запросу. В результате информация запроса, содержащая имя виртуального хоста, не может быть определена до аутентификации, и поэтому невозможно назначить несколько сертификатов одному IP-адресу.

Электронное письмо в список пользователей Tomcat состояния что вы можете сделать это с помощью «Коннектора и связанного хранилища ключей для каждого IP (или IP / порта), который вы хотите защитить».

Это позволит вам работать на отдельных портах (например, 0.0.0.0:443 публично и 0.0.0.0:4443 для вашего API) и / или адреса (например, 192.0.2.1:443 публично и 192.0.2.2:443 для вашего API).


Теоретически возможно сделать это различие на интерфейсе или на отдельном интерфейсе.CIDR уровень до подтверждения SSL (например, трафик от 192.168.0.1/16 получает один сертификат, другой трафик получает другой сертификат), но я не знаю ни одного программного обеспечения, которое бы это делало; вам нужно будет использовать переадресацию портов через брандмауэр.

Чтобы сделать это с помощью простой переадресации портов: перенаправьте соединения из вашей внутренней инфраструктуры через порт 443 на локальный порт 4443 и обслуживайте свой внутренний сертификат SSL на порту 4443 в Tomcat.

Примечание: я никогда не слышал об этом.