<div dir="ltr">Yeah, I&#39;m pretty sure Undertow&#39;s support for SSL is broken!<div><br></div><div>I copied and pasted the example into my project and am getting the same results.  I modified it to not do any proxying, but the server isn&#39;t responding properly and my anonymous HttpHandler is never invoked:</div><div><br></div><div><a href="https://gist.github.com/darkfrog26/e17c1efb0d5606caeb56e903bff970a7">https://gist.github.com/darkfrog26/e17c1efb0d5606caeb56e903bff970a7</a><br></div><div><br></div><div>This is incredibly frustrating.  Stuart, tell me if I shouldn&#39;t be using Undertow for SSL support and I&#39;ll start migrating to wrap with nginx.</div></div><br><div class="gmail_quote"><div dir="ltr">On Thu, Dec 8, 2016 at 8:00 PM Stuart Douglas &lt;<a href="mailto:sdouglas@redhat.com">sdouglas@redhat.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Here is an example:<br class="gmail_msg">
<br class="gmail_msg">
<a href="https://github.com/undertow-io/undertow/blob/master/examples/src/main/java/io/undertow/examples/http2/Http2Server.java" rel="noreferrer" class="gmail_msg" target="_blank">https://github.com/undertow-io/undertow/blob/master/examples/src/main/java/io/undertow/examples/http2/Http2Server.java</a><br class="gmail_msg">
<br class="gmail_msg">
Looks like you have run into a bug, with regard to the<br class="gmail_msg">
ClassCastException, you need to use the version that takes an<br class="gmail_msg">
SslContext for now, although this should be fixed later today.<br class="gmail_msg">
<br class="gmail_msg">
Stuart<br class="gmail_msg">
<br class="gmail_msg">
On Fri, Dec 9, 2016 at 12:30 PM, Hicks, Matt &lt;<a href="mailto:matt@matthicks.com" class="gmail_msg" target="_blank">matt@matthicks.com</a>&gt; wrote:<br class="gmail_msg">
&gt; Well, I switched to using the signature that takes the KeyManagers array and<br class="gmail_msg">
&gt; TrustManagers array and now I&#39;m at least getting an error:<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt; java.lang.ClassCastException: org.xnio.ssl.JsseSslStreamConnection cannot be<br class="gmail_msg">
&gt; cast to io.undertow.protocols.ssl.UndertowSslConnection at<br class="gmail_msg">
&gt; io.undertow.protocols.ssl.UndertowXnioSsl.getSslConduit(UndertowXnioSsl.java:141)<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt; This seems like a really flimsy implementation.  Am I better offer just<br class="gmail_msg">
&gt; wrapping Undertow with Apache or Nginx?<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt; On Thu, Dec 8, 2016 at 7:26 PM Bill O&#39;Neil &lt;<a href="mailto:bill@dartalley.com" class="gmail_msg" target="_blank">bill@dartalley.com</a>&gt; wrote:<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;&gt; Hmm I&#39;m not sure. I SSL terminate before I hit undertow.<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;&gt; On Thu, Dec 8, 2016 at 8:16 PM, Hicks, Matt &lt;<a href="mailto:matt@matthicks.com" class="gmail_msg" target="_blank">matt@matthicks.com</a>&gt; wrote:<br class="gmail_msg">
&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt; Also, to clarify, the HttpHandler&#39;s handleRequest is never being called.<br class="gmail_msg">
&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt; On Thu, Dec 8, 2016 at 7:14 PM Hicks, Matt &lt;<a href="mailto:matt@matthicks.com" class="gmail_msg" target="_blank">matt@matthicks.com</a>&gt; wrote:<br class="gmail_msg">
&gt;&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt;&gt; It was worth a try, but no change.  Thanks for the suggestion though.<br class="gmail_msg">
&gt;&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt;&gt; On Thu, Dec 8, 2016 at 7:12 PM Bill O&#39;Neil &lt;<a href="mailto:bill@dartalley.com" class="gmail_msg" target="_blank">bill@dartalley.com</a>&gt; wrote:<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt; Try the constructor with 4 args where you also pass a handler.<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;         public Builder addHttpsListener(int port, String host,<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt; SSLContext sslContext, HttpHandler rootHandler) {<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt; On Thu, Dec 8, 2016 at 8:06 PM, Hicks, Matt &lt;<a href="mailto:matt@matthicks.com" class="gmail_msg" target="_blank">matt@matthicks.com</a>&gt; wrote:<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt; I&#39;ve made some progress.  After adding the following to the builder:<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt; val password = config.https.password.get.toCharArray<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt; val keyStore = KeyStore.getInstance(&quot;JKS&quot;)<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt; val keyStoreFile = config.https.keyStoreLocation.get<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt; assert(keyStoreFile.exists(), s&quot;No keystore file was found at the<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt; location: ${keyStoreFile.getAbsolutePath}&quot;)<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt; val keyStoreInput = new FileInputStream(keyStoreFile)<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt; keyStore.load(keyStoreInput, password)<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt; val keyManagerFactory =<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt; KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm)<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt; keyManagerFactory.init(keyStore, password)<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt; val trustManagerFactory =<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt; TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm)<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt; trustManagerFactory.init(keyStore)<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt; val sslContext = SSLContext.getInstance(&quot;TLS&quot;)<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt; sslContext.init(keyManagerFactory.getKeyManagers,<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt; trustManagerFactory.getTrustManagers, new SecureRandom)<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt; builder.addHttpsListener(config.https.port.get, config.https.host.get,<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt; sslContext)<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt; Everything starts as expected, no errors, but when I hit<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt; localhost:8443 with the browser it says &quot;localhost didn&#39;t send any data&quot;.<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt; Should it use what I&#39;ve set with &quot;builder.setHandler&quot; for HTTPS as<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt; well?<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt; On Thu, Dec 8, 2016 at 10:53 AM Hicks, Matt &lt;<a href="mailto:matt@matthicks.com" class="gmail_msg" target="_blank">matt@matthicks.com</a>&gt;<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt; wrote:<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt;&gt; Is there any documentation for configuring SSL on my server?  I was<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt;&gt; looking through the online docs and found nothing (apart from &quot;Assembling a<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt;&gt; Server Manually&quot;).<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt;&gt; Any assistance would be appreciated.<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt;&gt; Thanks<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt; _______________________________________________<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt; undertow-dev mailing list<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt; <a href="mailto:undertow-dev@lists.jboss.org" class="gmail_msg" target="_blank">undertow-dev@lists.jboss.org</a><br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/undertow-dev" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.jboss.org/mailman/listinfo/undertow-dev</a><br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt; _______________________________________________<br class="gmail_msg">
&gt; undertow-dev mailing list<br class="gmail_msg">
&gt; <a href="mailto:undertow-dev@lists.jboss.org" class="gmail_msg" target="_blank">undertow-dev@lists.jboss.org</a><br class="gmail_msg">
&gt; <a href="https://lists.jboss.org/mailman/listinfo/undertow-dev" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.jboss.org/mailman/listinfo/undertow-dev</a><br class="gmail_msg">
</blockquote></div>