Spring Boot应用程序支持多个域吗?

时间:2020-02-28 23:10:25

标签: java spring-boot ssl

我有一个运行嵌入式Tomcat服务器的Spring Boot(2.2.2.RELEASE)应用程序,并打包为可执行的jar文件,该文件当前支持现有域(wildcard.old-domain.com)和ssl证书。目标是重新配置该应用程序,使其也支持新域(wildcard.new-domain.com)和ssl证书。

这可能吗?如果是这样,为支持新域,建议对配置和/或代码进行哪些更改?假定(CA签名的)SSL证书是分开的(即,具有两个域名的单个证书,在证书的“主题备用名称”属性中,这是一个简单的解决方案,选项)。

基本上,我有一个包含两个私钥项的密钥库:

$ 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=?

重新启动应用程序后,预期的结果是能够访问Web浏览器中的应用程序端点,并且不会遇到任何证书警告:

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 类中的以下方法来处理私钥:

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

但是,我不确定是否有可能甚至建议尝试覆盖Spring Boot在幕后所做的事情。

此外,希望该应用程序支持多个域的原因是我们正在重新命名我们的URL,并希望最终用户的迁移过程尽可能轻松。

0 个答案:

没有答案