Jetty 6 支持配置 HTTPS ,它原生提供 SSL/TLS 能力,下面分前置准备 、完整配置步骤 、验证说明。
一、前置准备:SSL 证书文件
需要 Java 标准密钥库文件,二选一即可:
-
JKS 格式(Jetty 6 最常用,Java 默认密钥库)
-
PKCS12 (.p12/.pfx) 证书
生成 / 转换证书(简单自测)
本地测试可先用 JDK 自带 keytool 生成自签名证书:
bash
keytool -genkeypair -alias jetty -keyalg RSA -keystore jetty.jks -storepass 123456 -keypass 123456
执行后按提示填写信息,生成 jetty.jks。
二、Jetty 6 两种配置方式
Jetty 6 主流使用 XML 配置文件 (jetty.xml/jetty-ssl.xml),分「独立配置 SSL」和「混合 HTTP+HTTPS」。
方式 1:使用官方 jetty-ssl.xml(推荐)
Jetty 6 安装包默认自带 etc/jetty-ssl.xml,步骤如下:
-
放置证书
将
jetty.jks放到 Jetty 的etc/目录(或自定义路径,记好绝对路径)。 -
修改 jetty-ssl.xml
打开
etc/jetty-ssl.xml,找到SslSocketConnector节点,修改密钥库、密码、端口:
xml
<!-- HTTPS 连接器,默认端口 8443 -->
<Call name="addConnector">
<Arg>
<New class="org.mortbay.jetty.security.SslSocketConnector">
<!-- HTTPS 监听端口 -->
<Set name="Port">8443</Set>
<Set name="Host">0.0.0.0</Set>
<!-- 密钥库路径(绝对/相对路径) -->
<Set name="Keystore"><SystemProperty name="jetty.home" default="."/>/etc/jetty.jks</Set>
<!-- 密钥库密码 -->
<Set name="Password">123456</Set>
<!-- 私钥密码(和上面一致) -->
<Set name="KeyPassword">123456</Set>
<!-- 信任库(客户端证书认证可选,自测可注释) -->
<!-- <Set name="Truststore">...</Set> -->
<!-- <Set name="TrustPassword">...</Set> -->
</New>
</Arg>
</Call>
- 启动 Jetty 加载 SSL 配置
bash
# Linux/Mac
java -jar start.jar etc/jetty.xml etc/jetty-ssl.xml
# Windows
java -jar start.jar etc\jetty.xml etc\jetty-ssl.xml
同时加载
jetty.xml(HTTP 8080)+jetty-ssl.xml(HTTPS 8443),实现双协议共存。
方式 2:直接整合到 jetty.xml(只启用 HTTPS)
如果不需要 HTTP,直接在 jetty.xml 替换默认 SocketConnector 为 SslSocketConnector:
xml
<!-- 注释原有 HTTP SocketConnector -->
<!--
<Call name="addConnector">
<Arg>
<New class="org.mortbay.jetty.bio.SocketConnector">
<Set name="Port">8080</Set>
</New>
</Arg>
</Call>
-->
<!-- 新增 HTTPS 连接器 -->
<Call name="addConnector">
<Arg>
<New class="org.mortbay.jetty.security.SslSocketConnector">
<Set name="Port">8443</Set>
<Set name="Keystore"><SystemProperty name="jetty.home" default="."/>/etc/jetty.jks</Set>
<Set name="Password">123456</Set>
<Set name="KeyPassword">123456</Set>
</New>
</Arg>
</Call>
直接启动:
bash
java -jar start.jar etc/jetty.xml
三、PKCS12 (.p12/.pfx) 证书适配
如果你的证书是 .p12,只需额外指定 密钥库类型:
xml
<Set name="KeystoreType">PKCS12</Set>
完整片段:
xml
<New class="org.mortbay.jetty.security.SslSocketConnector">
<Set name="Port">8443</Set>
<Set name="Keystore">/etc/your.p12</Set>
<Set name="KeystoreType">PKCS12</Set>
<Set name="Password">p12密码</Set>
<Set name="KeyPassword">私钥密码</Set>
</New>
四、访问验证
启动成功后,浏览器访问:
Plain
https://localhost:8443
自签名证书会提示「不安全」,属于正常现象,正式环境替换可信 CA 证书即可。
五、常见问题排查
-
启动报错:找不到 keystore
路径错误,建议使用绝对路径测试。
-
密码错误:Invalid keystore format
核对
Password/KeyPassword,JKS 和 PKCS12 不要混用类型。 -
端口被占用
修改
<Set name="Port">为其他端口(如 8444)。 -
Jetty 6 老旧注意:
Jetty 6 版本过旧,仅支持老旧 SSL/TLS 协议(SSLv3、TLS1.0) ,不支持 TLS1.2/1.3,生产环境强烈建议升级 Jetty 版本。