題 在Debian Wheezy升級之後,Perl的LWP中出現SSL問題


我剛剛從Lenny升級到Debian Wheezy(長篇故事),我的一些Perl軟件包由於某些原因沒有進行升級,其中包括Crypt :: SSLeay(libcrypt-ssleay-perl)。

在我安裝了libcrypt-ssleay-perl之前,我無法使用LWP連接到我的信用卡支付網關,現在它“正常”,但由於非常無用的錯誤消息,需要15-20秒才能建立SSL連接“錯誤處於未知狀態“:

SSL_connect:在/ connect初始化之前
SSL_connect:未知狀態
(等待15-20秒......) #this評論來自waldo22
SSL_connect:未知狀態的錯誤
  SSL_connect:在/ connect初始化之前
  SSL_connect:SSLv3寫客戶端hello A.
  SSL_connect:SSLv3讀取服務器問候語A
  SSL_connect:SSLv3讀取服務器證書A.
  SSL_connect:SSLv3讀取服務器完成A.
  SSL_connect:SSLv3寫客戶端密鑰交換A.
  SSL_connect:SSLv3寫入更改密碼規範A.
  SSL_connect:SSLv3寫完了A.
  SSL_connect:SSLv3刷新數據
  SSL_connect:SSLv3讀完了A.

我覺得這與LWP更改證書頒發機構和服務器證書驗證的默認行為有關:
https://stackoverflow.com/questions/74358/how-can-i-get-lwp-to-validate-ssl-server-certificates#5329129
可能:
https://stackoverflow.com/questions/5639803/aws-ses-certificate-verify-failed

我的Perl模塊正在使用 地穴:: SSLeay的 通過 LWP ::用戶代理

顯然15-20秒等待進行SSL連接的時間太長,但沒有更有用的錯誤消息,我不知道該怎麼做。

有沒有人對如何更好地調試這個或獲得更詳細的輸出有任何建議?

謝謝一堆,

-Wes


3
2018-06-19 22:56


起源




答案:


哇,這個是一個很糟糕的。

那裡 出現 嘗試與某些服務器(編輯:運行固件<10.2.4的BigIP服務器)自動協商TLS1.1(或1.2 ???)導致這些服務器斷開連接並拒絕OpenSSL 1.0.1的問題請求。看到:

https://bugs.launchpad.net/ubuntu/+source/openssl/+bug/965371

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=665452 

我正在嘗試連接到Paypal的“Payflow Pro”信用卡網關,Paypal原本是該列表中的主要罪魁禍首之一。

根據錯誤機票,他們說它在1.0.1b中對於Paypal是“固定的”,但我運行1.0.1c-3並且仍然遇到問題。我不知道這是否意味著它是固定的 www.paypal.com 但不是 payflowpro.paypal.com, 或者是什麼。

解決方法:設置 $ENV{HTTPS_VERSION} = 3 強制SSL3似乎解決了這個問題,至少對於 地穴:: SSLeay的

據推測這是有效的,因為它不會嘗試協商TLS1.1,只使用SSL3。

使用openssl s_client進行測試,它可以使用選項 -ssl3-tls1,和 -no_tls1在我看來,這一定是談判問題。

無論如何,這至少是一種解決方法。

實際問題是由固件小於10.2.4的F5 BigIP負載平衡器的固件中的錯誤引起的。這會導致TLS 1.1或1.2連接無法正確響應長ClientHello請求,從而掛起。

真實 修復是將BigIP負載均衡器上的固件更新為> = 10.2.4。

當然,Paypal / Payflow將此歸咎於OpenSSL ......


1
2017-08-01 18:05



你可以接受自己的答案。這告訴其他人這是正確和有幫助的。 - simbabque
謝謝,接受。我不知道那是不是猶太潔食。 - waldo22