Zookeeper 充當服務器,并配置了具有服務器證書的密鑰庫。我的密鑰庫中的證書鏈如下所示:
MyIntermediateCert (signed by MyRootCertificate)
MyZookeeperCertificate (signed by MyIntermediateCert)
定義的另一個引數是信任庫,其中我只有根 CA MyRootCertificate。
當 zk 啟動時,我在日志中看到外部連接配置了 TLS 一切正常,但是當 zk 的節點嘗試建立仲裁并嘗試相互通信時 - 我在客戶端和服務器之間進行 TLS 握手時收到經典 TLS 例外。
Exception caught
io.netty.handler.codec.DecoderException: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:468)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:714)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:650)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:576)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493)
ssl.quorum.hostnameVerification 為假,我不需要節點之間的主機名驗證。
我的期望是客戶端向服務器發送請求(從一個節點呼叫到另一個節點),它接收包括服務器證書和中間證書(由 CA 簽名)的證書鏈,并且該鏈在我的包含 CA 的信任存盤前進行驗證。
順便說一下,這個CA是自己生成的。
我缺少什么?
uj5u.com熱心網友回復:
我想我發現了這個問題。
問題是我的中間證書在它的 AKI 擴展中不包含密鑰識別符號值,它應該指向根 CA。它應該是這樣的:

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/313707.html
標籤:安全 ssl apache-zookeeper tls1.2 ssl握手异常
上一篇:訪問s3資源的最安全方式是什么?
