一尘不染

在Undertow中启用HTTPS

java

我们有一个有效的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

阅读 645

收藏
2020-12-03

共1个答案

一尘不染

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

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

2020-12-03