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

如何通过XML配置为嵌入式Jetty 9启用SSL模式

Jetty 9 单一XML配置启用SSL方案

可行性说明

完全可以实现,无需改用官方拆分的多配置文件,直接在你现有的jetty.xml中追加SSL相关配置即可,原有Java加载逻辑不需要做任何修改。

前置准备

  • 提前准备好SSL证书对应的密钥库文件,推荐使用JKS或PKCS12格式,记录好密钥库密码、密钥密码、证书别名
  • 确保项目依赖中包含jetty-sslengine相关组件,避免启动时出现类缺失报错

具体配置修改步骤

第一步:追加SSL相关配置

在你现有jetty.xml的<Configure id="Server" class="org.eclipse.jetty.server.Server">标签内部,原有HTTP连接器配置的前面,添加如下配置,所有占位符请替换为你实际的参数:

<!-- 公共HTTP配置,HTTP和HTTPS连接器共用 -->
<New id="httpConfig" class="org.eclipse.jetty.server.HttpConfiguration">
  <Set name="secureScheme">https</Set>
  <Set name="securePort"><Property name="jetty.ssl.port" default="8443"/></Set>
  <Set name="sendServerVersion">false</Set>
  <Set name="requestHeaderSize">8192</Set>
</New>

<!-- SSL上下文工厂配置 -->
<New id="sslContextFactory" class="org.eclipse.jetty.util.ssl.SslContextFactory$Server">
  <Set name="keyStorePath">替换为你的密钥库文件实际路径,例如C:/jetty/etc/ssl.keystore</Set>
  <Set name="keyStorePassword">替换为你的密钥库密码</Set>
  <Set name="keyManagerPassword">替换为你的密钥密码</Set>
  <Set name="keyStoreType">JKS</Set>
  <!-- 禁用不安全的SSL/TLS协议,可按需调整 -->
  <Set name="excludeProtocols">
    <Array type="java.lang.String">
      <Item>SSLv3</Item>
      <Item>TLSv1</Item>
      <Item>TLSv1.1</Item>
    </Array>
  </Set>
</New>

<!-- HTTPS连接器配置 -->
<Call name="addConnector">
  <Arg>
    <New id="httpsConnector" 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"><Ref refid="httpConfig"/></Arg>
            </New>
          </Item>
        </Array>
      </Arg>
      <Set name="host"><SystemProperty name="jetty.ssl.host"/></Set>
      <Set name="port"><Property name="jetty.ssl.port" default="8443"/></Set>
      <Set name="idleTimeout"><Property name="jetty.http.idleTimeout" default="30000"/></Set>
    </New>
  </Arg>
</Call>

如果需要实现HTTP请求自动跳转到HTTPS,可以额外追加如下配置:

<!-- HTTP强制跳转HTTPS配置,可选 -->
<Call name="insertHandler">
  <Arg>
    <New class="org.eclipse.jetty.server.handler.SecuredRedirectHandler"/>
  </Arg>
</Call>

如果不需要保留HTTP访问,直接注释掉原有HTTP连接器的配置即可。

第二步:启动验证

原有Java加载代码不需要做任何修改,直接运行即可加载新增的SSL配置,通过配置的HTTPS端口即可访问服务。

注意事项

  • 生产环境请使用CA机构签发的正规证书,自签名证书仅可用于测试环境,访问时会触发安全提示
  • 若HTTPS使用443端口,Linux/Mac环境需要root/管理员权限才能启动
  • 密钥库文件请做好权限控制,避免明文密码泄露

内容的提问来源于stack exchange,提问作者Avinash Modi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:45:03