You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maven Jetty插件TLS 8443配置报错:XML与application.properties配置遇阻

解决Maven Jetty插件TLS 8443端口配置错误的方案

我来帮你搞定这个Maven Jetty插件配置TLS 8443端口的问题!你遇到的org.eclipse.jetty.util.ssl.SslContextFactory.setKeyStore相关错误,多半是配置参数类型不匹配,或者密钥库的路径/配置项写错了——比如把需要File类型的参数写成了字符串,或者密钥库文件压根找不到。

一、官方推荐的XML配置正确姿势

Jetty 9.4.x官方手册里明确推荐用XML做完整配置,咱们一步步来:

1. 先在pom.xml里关联Jetty配置文件

把Jetty插件的配置改成这样,指定咱们要用到的两个XML文件:

<plugin>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-maven-plugin</artifactId>
    <version>9.4.51.v20230217</version> <!-- 替换成你实际用的Jetty版本 -->
    <configuration>
        <jettyXml>src/main/resources/jetty-ssl.xml,src/main/resources/jetty-https.xml</jettyXml>
    </configuration>
</plugin>

2. 创建jetty-ssl.xml配置密钥库

这个文件专门用来配置SslContextFactory,注意参数类型要对应上,别瞎写:

<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_3.dtd">

<Configure id="sslContextFactory" class="org.eclipse.jetty.util.ssl.SslContextFactory">
    <!-- 密钥库路径,这里用项目相对路径,也可以写绝对路径 -->
    <Set name="keyStorePath"><Property name="jetty.ssl.keyStore" default="src/main/resources/keystore.jks"/></Set>
    <!-- 密钥库密码,记得改成你自己的 -->
    <Set name="keyStorePassword"><Property name="jetty.ssl.keyStorePassword" default="changeit"/></Set>
    <!-- 密钥密码,和密钥库密码相同的话可以省略 -->
    <Set name="keyManagerPassword"><Property name="jetty.ssl.keyManagerPassword" default="changeit"/></Set>
    <!-- 信任库配置是可选的,根据你的业务需求加 -->
    <!-- <Set name="trustStorePath"><Property name="jetty.ssl.trustStore" default="src/main/resources/truststore.jks"/></Set> -->
    <!-- <Set name="trustStorePassword"><Property name="jetty.ssl.trustStorePassword" default="changeit"/></Set> -->
</Configure>

小提示:如果还没有密钥库,用这个keytool命令生成一个测试用的:
keytool -genkey -alias jetty -keyalg RSA -keystore keystore.jks -storepass changeit -keypass changeit
生成后把keystore.jks放到指定的路径下哦。

3. 创建jetty-https.xml配置8443端口

这个文件用来配置HTTPS连接器,把刚才的SslContextFactory关联上去:

<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_3.dtd">

<Configure id="Server" class="org.eclipse.jetty.server.Server">
    <Call name="addConnector">
        <Arg>
            <New class="org.eclipse.jetty.server.ServerConnector">
                <Arg name="server"><Ref refid="Server"/></Arg>
                <Arg name="factories">
                    <Array type="org.eclipse.jetty.server.ConnectionFactory">
                        <Item>
                            <New class="org.eclipse.jetty.server.SslConnectionFactory">
                                <Arg name="next">http/1.1</Arg>
                                <Arg name="sslContextFactory"><Ref refid="sslContextFactory"/></Arg>
                            </New>
                        </Item>
                        <Item>
                            <New class="org.eclipse.jetty.server.HttpConnectionFactory">
                                <Arg name="config">
                                    <New class="org.eclipse.jetty.server.HttpConfiguration">
                                        <Set name="secureScheme">https</Set>
                                        <Set name="securePort">8443</Set>
                                    </New>
                                </Arg>
                            </New>
                        </Item>
                    </Array>
                </Arg>
                <Set name="port">8443</Set>
            </New>
        </Arg>
    </Call>
</Configure>

二、关于application.properties的坑要注意

你之前尝试用application.properties配置,但Maven Jetty插件本身不支持读取这个文件!这个配置文件是Spring Boot这类框架用来配置自身内嵌容器的,而你用的jetty:run是纯Maven插件命令,插件只会认pom.xml或者Jetty XML配置,所以application.properties在这里根本不起作用,别再浪费时间啦。

三、如果还是报错的排查步骤

要是按上面的步骤来还是出问题,试试这几个排查点:

  • 先把密钥库路径改成绝对路径测试,确认文件确实存在
  • 检查Jetty插件版本和XML里的DTD版本是否兼容(Jetty 9.4用configure_9_3.dtd是没问题的)
  • 看完整的错误栈,确认是参数类型错了还是文件找不到——如果是类型错误,可能是你在XML里用<Set>时传错了参数类型
  • 执行命令时加个-Djetty.debug=true,比如mvn -e -Djetty.debug=true jetty:run,能拿到更详细的调试日志,方便定位问题

内容的提问来源于stack exchange,提问作者Olga Pshenichnikova

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:25:14