如何在GoDaddy Tomcat部署的Spring Boot WAR应用中启用HTTPS
问题
我有一个部署在GoDaddy Tomcat中的Spring Boot WAR应用,现需为其启用HTTPS。我已在域名上完成SSL证书安装,HTTPS可正常访问,DNS与SSL证书均由GoDaddy管理。我已下载Tomcat证书文件,包含randomhex.crt、randomhex.pem、gd_bundle-g2-g1.crt、gdig2.crt.pem,并通过以下三步命令生成了keystore.jks和keystore.p12:
步骤1:
keytool -import -trustcacerts -alias intermediate -file gd_bundle-g2-g1.crt -keystore keystore.jks
使用密码password1
步骤2:
keytool -import -trustcacerts -alias 'alias1' -file e1......7.crt -keystore keystore.jks
使用密码password1
步骤3:
keytool -importkeystore -srckeystore keystore.jks -destkeystore keystore.p12 -srcstoretype JKS -deststoretype PKCS12 -deststorepass 'password2' -srcalias 'alias1' -destalias 'alias2'
使用密码password1
我知晓需将keystore.p12放入Spring Boot项目的resource目录,并配置以下SSL属性,但不确定基于上述命令应设置哪些值,请帮忙配置:
server: ssl: key-store: classpath:keystore.p12 key-store-password: ? key-store-type: ? key-alias: ? key-password: ? enabled: true port: ?
另外,我是否需要对TOMCAT服务器进行额外配置才能让该Spring Boot应用的HTTPS生效?
解决方案
一、SSL配置参数填充
根据你提供的keytool命令,对应的配置值如下:
server: ssl: key-store: classpath:keystore.p12 key-store-password: password2 # 对应步骤3中的deststorepass参数值 key-store-type: PKCS12 # 对应步骤3中的deststoretype参数值 key-alias: alias2 # 对应步骤3中的destalias参数值 key-password: password1 # 原JKS中alias1的密码(和keystore密码一致,步骤2使用的是password1) enabled: true port: 443 # HTTPS默认端口,也可使用自定义端口如8443
参数说明:
key-store-password:取步骤3指定的deststorepass值password2,是PKCS12密钥库的访问密码key-store-type:明确设置为PKCS12,对应生成的密钥库格式key-alias:取步骤3指定的destalias值alias2,是PKCS12中证书条目的别名key-password:步骤2导入证书到JKS时未单独设置密钥密码,因此和原JKS密码password1一致port:HTTPS标准端口为443,若用非标准端口,访问时需加上端口号
二、Tomcat服务器额外配置说明
由于你是将Spring Boot以WAR包形式部署到Tomcat,且已在GoDaddy完成域名SSL证书安装,分两种情况处理:
推荐:由Tomcat统一处理HTTPS请求
- 修改Tomcat的
conf/server.xml配置文件,添加HTTPS连接器,指定密钥库信息,示例配置如下:<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true"> <SSLHostConfig> <Certificate certificateKeystoreFile="你的密钥库路径/keystore.p12" type="RSA" certificateKeystorePassword="password2" certificateKeystoreType="PKCS12" certificateAlias="alias2"/> </SSLHostConfig> </Connector> - 这种情况下,Spring Boot应用的SSL配置可简化(甚至无需设置),因为HTTPS由Tomcat层面处理,应用只需接收Tomcat转发的HTTP请求即可,更符合WAR部署的常规做法。
- 修改Tomcat的
让Spring Boot自身处理HTTPS
- 保持上面的Spring Boot SSL配置不变,但需确保Tomcat未配置HTTPS连接器,或两者端口不冲突。不过这种方式不推荐,容器统一处理SSL层更便于证书和端口管理。
内容的提问来源于stack exchange,提问作者KJEjava48
相关产品推荐
相关产品推荐

