【发布时间】:2015-03-10 11:54:46
【问题描述】:
我们有一个有效的 Apache mod_ssl 配置。我想为 Undertow 启用 HTTPS 支持,以便它同时侦听 http 和 https,从而消除对 Apache 的需求。
我查看了 Undertow 的 javadocs。 Undertow.Builder 类有两个带有以下签名的 addHttpsListener 方法:
public Builder addHttpsListener(int port, String host,
KeyManager[] keyManagers, TrustManager[] trustManagers);
public Builder addHttpsListener(int port, String host,
SSLContext sslContext) {
看来我可以在使用 Builder API 引导 Undertow 时使用这些,例如
Undertow server = Undertow.builder()
.addHttpsListener(8443, "localhost", sslContext)
.build();
我不确定如何创建 SSLContext 变量,或者如何配置 KeyManagers 和 TrustManagers。 有了 mod_ssl 正在使用的证书文件,我该如何继续为 Undertow 启用 HTTPS?
更新:
根据 hwellmann 的回答,我重用了 SslContextFactory.createSslContext() 方法。在此之前,我必须将我的公钥/私钥对转换为 PKCS12 格式并将其导入 Java 密钥库。
在下面给出 SSL 转换转换/导入命令(取自 here 和 here),希望这些对任何人都有用:
# Convert to PKCS12
$ openssl pkcs12 -export -out output_cert.pfx -inkey input_cert.key -in input_cert.crt -certfile intermediate.crt
# Import into Java keystore
$ keytool -v -importkeystore -srckeystore output_cert.pfx -srcstoretype PKCS12 -destkeystore output_store.jks -deststoretype JKS
【问题讨论】:
标签: java ssl https keystore undertow