当前位置:首页 > 行业动态 > 正文

httpstomcatssl证书安装

在Tomcat中安装SSL证书需生成密钥库,导入证书至信任库,配置server.xml指定密钥库路径及密码

准备工作

  1. 获取SSL证书

    • 从CA机构购买证书或使用免费证书(如Let’s Encrypt)。
    • 下载证书文件(通常包括 .crt.pem 文件)及私钥(.key)。
  2. 准备Tomcat环境

    • 确保Tomcat已安装并正常运行。
    • 备份 server.xml 文件(位于 conf 目录下),防止配置错误。

导入证书到Java密钥库(Keystore)

  1. 合并证书文件
    若证书包含多个文件(如服务器证书、中间证书、根证书),需合并为一个 .pem 文件:

    httpstomcatssl证书安装  第1张

    cat server.crt intermediate.crt root.crt > combined.pem
  2. 使用keytool导入证书
    将证书和私钥导入Java密钥库(.jks.p12 格式):

    keytool -importkeystore -srckeystore combined.pem -destkeystore tomcat.jks -deststoretype JKS
    • 参数说明
      • -srckeystore:源证书文件(PEM格式)。
      • -destkeystore:目标密钥库文件(如 tomcat.jks)。
      • -deststoretype:密钥库类型(Tomcat默认使用 JKS)。
    • 设置密钥库密码:建议设置强密码(如 changeit)。

配置Tomcat的HTTPS连接器

  1. 编辑server.xml
    打开 conf/server.xml,找到 <Service name="Catalina"> 标签,添加以下HTTPS连接器配置:

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true">
        <SSLHostConfig>
            <Certificate certificateKeystoreFile="conf/tomcat.jks"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>
    • 关键参数
      • port:HTTPS监听端口(默认443需root权限,8443为常用替代)。
      • certificateKeystoreFile:密钥库文件路径(如 conf/tomcat.jks)。
      • type:密钥算法(通常为 RSA)。
  2. 重启Tomcat
    使配置生效:

    # Windows
    binshutdown.bat
    binstartup.bat
    # Linux
    bin/shutdown.sh
    bin/startup.sh

验证SSL配置

  1. 访问HTTPS地址
    在浏览器中输入 https://<服务器IP>:8443,确认是否能正常打开且无证书警告。

  2. 检查证书详情
    使用在线工具(如 SSL Labs)验证证书有效性及配置安全性。


常见问题与解决

问题 解决方案
浏览器提示证书错误 检查密钥库密码是否正确。
确认证书链完整(包含中间证书和根证书)。
端口8443被占用 修改 server.xml 中的 port 为其他未占用端口(如8444)。
HTTPS访问返回404 确认Web应用上下文路径正确,且应用已部署。

相关问题与解答

问题1:如何更新Tomcat的SSL证书?

解答

  1. 获取新证书并合并文件(参考“准备工作”)。
  2. 使用 keytool 替换密钥库中的证书:
    keytool -delete -alias tomcat -keystore conf/tomcat.jks -storepass changeit
    keytool -importcert -file combined.pem -keystore conf/tomcat.jks -storepass changeit
  3. 重启Tomcat使新证书生效。

问题2:如何强制HTTP请求自动跳转到HTTPS?

解答

  1. server.xml 中添加HTTP连接器(端口80):
    <Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
  2. 配置 web.xml 添加安全约束(可选):
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Entire App</web-resource-name>
            <url-pattern>/</url-pattern>
        </web-resource-collection>
        <user-data-constraint>
            <transport-guarantee>CONFIDENTIAL</transport-guarantee>
        </user-data-constraint>
    </security-constraint>
0