靖江市中国白事服务网

Tomcat11证书配置的详细步骤

2026-03-28 11:46:01 浏览次数:0
详细信息

1. 准备证书文件

选项A:使用自签名证书(测试环境)

# 生成密钥库
keytool -genkeypair \
    -alias tomcat \
    -keyalg RSA \
    -keysize 2048 \
    -validity 365 \
    -keystore /path/to/keystore.jks \
    -storepass changeit \
    -keypass changeit \
    -dname "CN=localhost, OU=IT, O=Company, L=City, ST=State, C=CN"

选项B:使用CA颁发的证书

从证书提供商获取:

转换为JKS格式:


# 将PEM格式合并为PKCS12
openssl pkcs12 -export \
 -in domain.crt \
 -inkey domain.key \
 -chain \
 -CAfile ca-bundle.crt \
 -name "tomcat" \
 -out tomcat.p12 \
 -password pass:changeit
转换为JKS格式

keytool -importkeystore \ -deststorepass changeit \ -destkeypass changeit \ -destkeystore keystore.jks \ -srckeystore tomcat.p12 \ -srcstoretype PKCS12 \ -srcstorepass changeit \ -alias tomcat


## 2. 配置Tomcat server.xml

编辑 `$CATALINA_HOME/conf/server.xml`:

### 方案A:HTTP/1.1 Connector
```xml
<!-- 取消注释或添加以下配置 -->
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150" SSLEnabled="true"
           scheme="https" secure="true"
           keystoreFile="/path/to/keystore.jks"
           keystorePass="changeit"
           keyAlias="tomcat"
           clientAuth="false"
           sslProtocol="TLS"
           ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
                   TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
                   TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
                   TLS_RSA_WITH_AES_256_GCM_SHA384"
           >
</Connector>

方案B:HTTP/2 Connector(推荐)

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150" SSLEnabled="true"
           scheme="https" secure="true">

    <SSLHostConfig 
        certificateVerification="false"
        protocols="TLSv1.2,TLSv1.3">

        <Certificate 
            certificateKeystoreFile="/path/to/keystore.jks"
            certificateKeystorePassword="changeit"
            certificateKeystoreType="JKS"
            type="RSA" />

    </SSLHostConfig>

    <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
</Connector>

3. 可选:强制HTTPS访问

$CATALINA_HOME/webapps/ROOT/WEB-INF/web.xml 中添加:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Secure Content</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

4. 启动验证

# 启动Tomcat
$CATALINA_HOME/bin/startup.sh

# 验证HTTPS
curl -k https://localhost:8443/
# 或使用浏览器访问 https://your-domain:8443

5. 高级配置示例

多域名/SNI配置

<Connector port="8443" ...>
    <SSLHostConfig>
        <Certificate 
            certificateKeystoreFile="/path/to/domain1.jks"
            certificateKeystorePassword="pass1"
            hostName="domain1.com"/>

        <Certificate 
            certificateKeystoreFile="/path/to/domain2.jks"
            certificateKeystorePassword="pass2"
            hostName="domain2.com"/>
    </SSLHostConfig>
</Connector>

使用PEM格式证书(Tomcat 9+)

<SSLHostConfig>
    <Certificate 
        certificateFile="/path/to/certificate.pem"
        certificateKeyFile="/path/to/privatekey.pem"
        certificateChainFile="/path/to/ca-bundle.pem"
        type="RSA"/>
</SSLHostConfig>

6. 常见问题解决

端口被占用

# 检查端口占用
netstat -tlnp | grep 8443
# 或修改server.xml中的端口号

证书格式错误

# 检查JKS文件
keytool -list -keystore keystore.jks -storepass changeit

权限问题

# 确保Tomcat用户有读取权限
chmod 640 /path/to/keystore.jks
chown tomcat:tomcat /path/to/keystore.jks

7. 安全建议

密码安全:使用强密码替换默认密码 协议限制:禁用SSLv2、SSLv3,仅启用TLSv1.2+ 密钥算法:使用RSA 2048位或ECDSA 证书更新:设置自动续期提醒 安全扫描:使用SSL Labs测试SSL配置

验证配置

使用以下工具验证:

# 测试SSL连接
openssl s_client -connect localhost:8443 -servername your-domain.com

# 检查证书链
keytool -printcert -sslserver your-domain.com:8443

注意事项

Tomcat 11需要Java 11或更高版本 生产环境建议使用Let's Encrypt等免费CA 配置完成后重启Tomcat生效 防火墙需开放443端口 建议配置HTTP重定向到HTTPS

这样配置后,您的Tomcat 11就支持HTTPS访问了。

相关推荐