Приложение Spring Boot поддерживает несколько доменов? - PullRequest
0 голосов
/ 29 февраля 2020

У меня есть приложение Spring Boot (2.2.2.RELEASE), работающее со встроенным сервером Tomcat и упакованное в виде исполняемого файла JAR, который в настоящее время поддерживает существующий домен (wildcard.old-domain.com) и сертификат ssl. Цель состоит в том, чтобы перенастроить приложение, чтобы оно также поддерживало новый домен (wildcard.new-domain.com) и сертификат ssl.

Возможно ли это? И если да, то какие рекомендуемые изменения конфигурации и / или кода необходимы для поддержки нового домена? Предполагается, что SSL-сертификаты (подписанные CA) будут отдельными (ie.), Один сертификат с обоими доменными именами в атрибуте «Subject Alternative Name» сертификата, который является простым решением, будет NOT вариант).

По сути, у меня есть хранилище ключей с обоими записями закрытого ключа:

$ keytool -list -keystore keyStore.p12
Enter keystore password:
Keystore type: PKCS12
Keystore provider: SUN

Your keystore contains 2 entries

wildcard.old-domain.com, Oct 17, 2018, PrivateKeyEntry,
Certificate fingerprint (SHA1): ...
wildcard.new-domain.com, Feb 28, 2020, PrivateKeyEntry,
Certificate fingerprint (SHA1): ...

С записями в файле application.properties:

server.ssl.key-store-type=PKCS12
server.ssl.key-store=${user.dir}/keyStore.p12
server.ssl.key-store-password=?

После перезапуска приложение, ожидаемый результат должен иметь возможность доступа к конечным точкам приложения в веб-браузере и не сталкиваться с какими-либо предупреждениями сертификатов:

https://dev.old-domain.com/hello
https://dev.new-domain.com/hello

И это верно для домена (wildcard.old-domain. com) который указан первым в файле хранилища ключей. Другой домен (wildcard.new-domain.com) выдает предупреждение сертификата:

BrowserX does not trust this site because it uses a certificate that is not valid for dev.new-domain.com. The certificate is only valid for *.old-domain.com.

Error code: SSL_ERROR_BAD_CERT_DOMAIN

Кроме того, я могу получить доступ к новому домену без каких-либо предупреждений сертификата, если указать псевдоним домена в файл application.properties:

server.ssl.key-alias=wildcard.new-domain.com

Но затем я получаю предупреждение о подтверждении для другого домена.

Кроме того, кажется, что приложение обрабатывает закрытые ключи с помощью следующего метода в org. apache .tomcat.util. net .SSLUtilBase class:

@Override
public KeyManager[] getKeyManagers() throws Exception {}

Тем не менее, я не уверен, возможно ли или даже советуется попытаться переопределить то, что Spring Загрузка выполняется негласно.

Кроме того, причина, по которой приложение хочет поддерживать несколько доменов, заключается в том, что мы переименовываем наши URL-адреса и хотим, чтобы процесс миграции для конечных пользователей был максимально безболезненным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...