簡體   English   中英

TLS 證書驗證期間連接重置(java + rabbit mq)

[英]Connection reset during TLS certificate verify (java + rabbit mq)

我正在開發一個 java 客戶端來使用 rabbitmq(使用 amqp-client lib)。 一切正常,直到我開始使用 ssl 協議。 在 java 日志中我看到

java.net.SocketException:連接重置

在 rabbitmq 日志中只有

SSL:證明:ssl_handshake.erl:1490:致命錯誤:未知 ca

我檢查了證書,一切似乎都很好。 然后我在 java 中啟用了 ssl 調試。查看 ssl 日志似乎實際上服務器和客戶端交互正常。 我看到已找到受信任的證書,clienthello 和 serverhello 正確完成,但在證書驗證步驟連接被重置:

*** CertificateVerify
Signature Algorithm SHA512withRSA
[write] MD5 and SHA1 hashes:  len = 264
0000: 0F 00 01 04 06 01 01 00   60 E9 E3 AE 11 C5 34 76  ........`.....4v
...
0100: A2 41 B2 48 5D DA BE 27                            .A.H]..'
Thread-0, WRITE: TLSv1.2 Handshake, length = 264
Thread-0, waiting for close_notify or alert: state 1
Thread-0, Exception while waiting for close java.net.SocketException: Connection reset
Thread-0, handling exception: java.net.SocketException: Connection reset
%% Invalidated:  [Session-1, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256]
Thread-0, SEND TLSv1.2 ALERT:  fatal, description = unexpected_message
Thread-0, WRITE: TLSv1.2 Alert, length = 2
Thread-0, Exception sending alert: java.net.SocketException: Connection reset by peer: socket write error
Thread-0, called closeSocket()
Thread-0, called close()
Thread-0, called closeInternal(true)
java.net.SocketException: Connection reset

我什至不確定如何解釋這一點,超出我的理解范圍。 我發現的調試 ssl/tls 連接的指南沒有涵蓋這一部分。

- - - - - -更新 - - - - - -

仔細觀察日志,我注意到在服務器和客戶端簽名算法的證書鏈中都是 SHA256withRSA,而對於 CertificateVerify 消息簽名算法是 SHA512withRSA。 會是這個原因嗎?

unknown ca表示 RabbitMQ/Erlang 沒有可用的預期 CA 證書。

請確保簽署您的客戶端證書的 CA 對 RabbitMQ 可用,並且 RabbitMQ 配置為使用它。

https://www.rabbitmq.com/ssl.html#enabling-tls

https://www.rabbitmq.com/troubleshooting-ssl.html


注意: RabbitMQ 團隊負責監控rabbitmq-users郵件列表,有時只在 StackOverflow 上回答問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM