java.lang.IllegalStateException:未配置 PEM 工作目录

问题描述 投票:0回答:1

我有一个带有嵌入式 Jetty 10 的有效 HTTP/2 配置。现在我想添加 HTTP/3 支持。我遵循 Jetty HTTP/3 文档。我收到以下异常:

java.lang.IllegalStateException: No PEM work directory configured
    at org.eclipse.jetty.quic.server.QuicServerConnector.findPemWorkDirectory(QuicServerConnector.java:192)
    at org.eclipse.jetty.quic.server.QuicServerConnector.doStart(QuicServerConnector.java:171)
    at org.eclipse.jetty.http3.server.HTTP3ServerConnector.doStart(HTTP3ServerConnector.java:61)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
    at org.eclipse.jetty.server.Server.doStart(Server.java:428)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)

什么是 PEM 工作目录?它包含任何安全相关信息吗?该目录必须包含一些文件吗?

SSL 证书已加载到密钥库中并可与 HTTP/2 和旧版 HTTPS 配合使用。

java jetty http3
1个回答
1
投票

Jetty 的实现与许多其他实现一样,使用 quiche 库作为 QUIC(HTTP/3 基础协议)的底层实现。

Quiche(用 Rust 编写)不使用 Java KeyStore,因此您必须以 PEM 文件提供公钥和私钥。

Jetty 会负责将您的 KeyStore 转换为 PEM 文件,但它需要一个目录来保存 PEM 文件。 由于 PEM 文件之一是私钥,因此必须使用文件系统权限充分保护 PEM 目录,这就是 Jetty 无法使用默认 PEM 目录的原因(例如,

/tmp/
将是一个糟糕的选择,因为任何人都会有访问您的 PEM 文件)。

您只需指定一个目录来存储您的PEM文件(确保其文件权限足够),Jetty将完成剩下的工作。

© www.soinside.com 2019 - 2024. All rights reserved.