{"id":9789,"date":"2023-01-17T21:36:13","date_gmt":"2023-01-18T02:36:13","guid":{"rendered":"https:\/\/www.rushworth.us\/lisa\/?p=9789"},"modified":"2023-02-03T15:55:49","modified_gmt":"2023-02-03T20:55:49","slug":"kafka-manager-ssl-issue","status":"publish","type":"post","link":"https:\/\/www.rushworth.us\/lisa\/?p=9789","title":{"rendered":"Kafka Manager SSL Issue"},"content":{"rendered":"<p>We renewed the certificate on our <a href=\"https:\/\/github.com\/yahoo\/CMAK\" target=\"_blank\" rel=\"noopener\">Kafka Manager<\/a> (now called CMAK, but we haven&#8217;t upgraded yet so it&#8217;s still &#8216;manager&#8217;), but the site wouldn&#8217;t come up. It <em>did, <\/em>however, dump a bunch of java ick into the log file<\/p>\n<pre>Jan 16 14:01:52 kafkamanager kafka-manager: [^[[31merror^[[0m] p.c.s.NettyServer$PlayPipelineFactory - cannot load SSL context\r\nJan 16 14:01:52 kafkamanager kafka-manager: java.lang.reflect.InvocationTargetException: null\r\nJan 16 14:01:52 kafkamanager kafka-manager: at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_251]\r\nJan 16 14:01:52 kafkamanager kafka-manager: at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_251]\r\nJan 16 14:01:52 kafkamanager kafka-manager: at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_251]\r\nJan 16 14:01:52 kafkamanager kafka-manager: at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_251]\r\nJan 16 14:01:52 kafkamanager kafka-manager: at play.core.server.ssl.ServerSSLEngine$.createScalaSSLEngineProvider(ServerSSLEngine.scala:96) ~[com.typesafe.play.play-server_2.11-2.4.6.jar:2.4.6]\r\nJan 16 14:01:52 kafkamanager kafka-manager: at play.core.server.ssl.ServerSSLEngine$.createSSLEngineProvider(ServerSSLEngine.scala:32) ~[com.typesafe.play.play-server_2.11-2.4.6.jar:2.4.6]\r\nJan 16 14:01:52 kafkamanager kafka-manager: at play.core.server.NettyServer$PlayPipelineFactory.liftedTree1$1(NettyServer.scala:113) [com.typesafe.play.play-netty-server_2.11-2.4.6.jar:2.4.6]\r\nJan 16 14:01:52 kafkamanager kafka-manager: at play.core.server.NettyServer$PlayPipelineFactory.sslEngineProvider$lzycompute(NettyServer.scala:112) [com.typesafe.play.play-netty-server_2.11-2.4.6.jar:2.4.6]\r\nJan 16 14:01:52 kafkamanager kafka-manager: at play.core.server.NettyServer$PlayPipelineFactory.sslEngineProvider(NettyServer.scala:111) [com.typesafe.play.play-netty-server_2.11-2.4.6.jar:2.4.6]\r\nJan 16 14:01:52 kafkamanager kafka-manager: at play.core.server.NettyServer$PlayPipelineFactory.getPipeline(NettyServer.scala:90) [com.typesafe.play.play-netty-server_2.11-2.4.6.jar:2.4.6]\r\nJan 16 14:01:52 kafkamanager kafka-manager: Caused by: java.lang.Exception: Error loading HTTPS keystore from \/path\/to\/kafkamgr.example.net.jks\r\nJan 16 14:01:52 kafkamanager kafka-manager: at play.core.server.ssl.DefaultSSLEngineProvider.createSSLContext(DefaultSSLEngineProvider.scala:47) ~[com.typesafe.play.play-server_2.11-2.4.6.jar:2.4.6]\r\nJan 16 14:01:52 kafkamanager kafka-manager: at play.core.server.ssl.DefaultSSLEngineProvider.&lt;init&gt;(DefaultSSLEngineProvider.scala:21) ~[com.typesafe.play.play-server_2.11-2.4.6.jar:2.4.6]\r\nJan 16 14:01:52 kafkamanager kafka-manager: at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_251]\r\nJan 16 14:01:52 kafkamanager kafka-manager: at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_251]\r\nJan 16 14:01:52 kafkamanager kafka-manager: at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_251]\r\nJan 16 14:01:52 kafkamanager kafka-manager: at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_251]\r\nJan 16 14:01:52 kafkamanager kafka-manager: at play.core.server.ssl.ServerSSLEngine$.createScalaSSLEngineProvider(ServerSSLEngine.scala:96) ~[com.typesafe.play.play-server_2.11-2.4.6.jar:2.4.6]\r\nJan 16 14:01:52 kafkamanager kafka-manager: at play.core.server.ssl.ServerSSLEngine$.createSSLEngineProvider(ServerSSLEngine.scala:32) ~[com.typesafe.play.play-server_2.11-2.4.6.jar:2.4.6]\r\nJan 16 14:01:52 kafkamanager kafka-manager: at play.core.server.NettyServer$PlayPipelineFactory.liftedTree1$1(NettyServer.scala:113) [com.typesafe.play.play-netty-server_2.11-2.4.6.jar:2.4.6]\r\nJan 16 14:01:52 kafkamanager kafka-manager: at play.core.server.NettyServer$PlayPipelineFactory.sslEngineProvider$lzycompute(NettyServer.scala:112) [com.typesafe.play.play-netty-server_2.11-2.4.6.jar:2.4.6]\r\nJan 16 14:01:52 kafkamanager kafka-manager: Caused by: java.security.UnrecoverableKeyException: Cannot recover key\r\nJan 16 14:01:52 kafkamanager kafka-manager: at sun.security.provider.KeyProtector.recover(KeyProtector.java:315) ~[na:1.8.0_251]\r\nJan 16 14:01:52 kafkamanager kafka-manager: at sun.security.provider.JavaKeyStore.engineGetKey(JavaKeyStore.java:141) ~[na:1.8.0_251]\r\nJan 16 14:01:52 kafkamanager kafka-manager: at sun.security.provider.JavaKeyStore$JKS.engineGetKey(JavaKeyStore.java:56) ~[na:1.8.0_251]\r\nJan 16 14:01:52 kafkamanager kafka-manager: at sun.security.provider.KeyStoreDelegator.engineGetKey(KeyStoreDelegator.java:96) ~[na:1.8.0_251]<\/pre>\n<p>Elsewhere in the log file, we got output that looks like not-decrypted stuff &#8230;<\/p>\n<pre>Jan 16 14:01:52 kafkamanager kafka-manager: java.lang.IllegalArgumentException: invalid version format: \uffe3G^H\u2592~A\ufffd\u2592~Z\uffae\u2592~@\u2592~A:U\u2592~HP\u2592~W5\u2592~W\u2592D\uffe2\ufffa\uffb4^K\/\uffec\u2592\r\n\uffe7^S\u2592L\r\nJan 16 14:01:52 kafkamananger kafka-manager: \"^S^A^S^C^S^B\u2592~@+\u2592~@\/\u2592~L\uffa9\u2592~L\uffa8\u2592~@,\u2592~@0\u2592~@<\/pre>\n<p>Which led me to hypothesize that either the keystore password wasn&#8217;t right (it was, I could use keytool to view the jks file) or the key password wasn&#8217;t right. It wasn&#8217;t &#8212; there isn&#8217;t actually a way to configure the <em>key<\/em> password in Kafka Manager, just a parameter to configure the <em>keystore<\/em> password. You&#8217;ve got to re-use that password for the key password.<\/p>\n<p>To change the key password in a JKS file, use keytool, enter the keystore and key password when prompted, then enter the <em>new<\/em> key password when prompted.<\/p>\n<pre>keytool --keypasswd -alias kafkamanager.example.net -keystore ljr.jks<\/pre>\n<p>Voila &#8212; once both the key and keystore matched the password configured in <tt>play.server.https.keyStore.password<\/tt> &#8230; the Kafka Manager service started up and worked properly.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We renewed the certificate on our Kafka Manager (now called CMAK, but we haven&#8217;t upgraded yet so it&#8217;s still &#8216;manager&#8217;), but the site wouldn&#8217;t come up. It did, however, dump a bunch of java ick into the log file Jan 16 14:01:52 kafkamanager kafka-manager: [^[[31merror^[[0m] p.c.s.NettyServer$PlayPipelineFactory &#8211; cannot load SSL context Jan 16 14:01:52 kafkamanager &hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1762],"tags":[1809,1808,1361,1810,1811],"class_list":["post-9789","post","type-post","status-publish","format-standard","hentry","category-kafka","tag-java-keytool","tag-jks","tag-kafka","tag-keytool","tag-play-framework"],"_links":{"self":[{"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=\/wp\/v2\/posts\/9789","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=9789"}],"version-history":[{"count":1,"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=\/wp\/v2\/posts\/9789\/revisions"}],"predecessor-version":[{"id":9790,"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=\/wp\/v2\/posts\/9789\/revisions\/9790"}],"wp:attachment":[{"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=9789"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=9789"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=9789"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}