在Undertow中启用HTTPS

我们有一个有效的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变量,或者如何配置KeyManager和TrustManager。拥有mod_ssl使用的证书文件后,如何继续对Undertow启用HTTPS?

根据hwellmann的回答,我已经重用了SslContextFactory.createSslContext()方法。在此之前,我必须将公钥/私钥对转换为PKCS12格式,并将其导入Java密钥库中。

提供下面的SSL转换转换/导入命令(从此处和此处获取),希望这些命令对任何人都有用:

# 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

回答:

这并不是Undertow真正特定的,这只是从带有证书的密钥库中构建SSL上下文的问题。

请参阅有关SslContextFactory.javaUndertow的示例。

以上是 在Undertow中启用HTTPS 的全部内容, 来源链接: utcz.com/qa/417253.html

回到顶部