У меня есть приложение 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-адреса и хотим, чтобы процесс миграции для конечных пользователей был максимально безболезненным.