2015-09-15 95 views
5

私は古いDebianサーバーを稼働しています。一日一回、Perlスクリプトを使ってWebページを取得します。昨日から、スクリプトは "500 SSL negotiation failed"というエラーで失敗します。LWP :: UserAgentと500 SSLネゴシエーションに失敗しました

  • たPerl:5.8.8
  • のOpenSSL:0.9.8c
  • LWP:5.805
  • 墓所私が言ったように

    use strict; 
    use LWP::UserAgent; 
    
    my $browserObj = LWP::UserAgent->new(); 
    
    $response = $browserObj->get("https://www.domain.tld"); 
    print $response->status_line . "\n" if(! $response->is_success); 
    

    は、それがすべての古いバージョンを実行している古いサーバーです:: SSLeay:0.57

サーバーのスナップショットを作成しました。すべての種類のソリューションを作成し、失敗した場合はスナップショットに戻ります。これは、各テスト後に行ったこととまったく同じですが、元のサーバー状態に戻ります。

テスト1: 私が試した最初のことは、OpenSSLを1.0.2dにアップデートすることでした。それは助けにはならなかった、私はまだ "SSL交渉に失敗しました"エラーがあります。私はCrypt:SSLeayを更新しました。それはSSLを完全に破った(サーバーを安全なサーバーに接続できなくなった)。

テスト2: OpenSSLを更新せずにCrypt :: SSLeayを更新しました。サーバーを保護されたサーバーに再度接続できなくなりました。

テスト3: OpenSSLを1.0.2dにアップデートしました。更新されたLWP。違いはありません。それでも「500 SSLネゴシエーションに失敗しました」

他に何か試してみることはできますか?

PS:いくつかの理由から私はDebian自体を更新できません。

+0

あなたのリモートサーバーは古いバージョンのSSLをサポートしていません。危険なほど古いSSLバージョンがたくさんあるので、サイトはそれらを非難し始めています。例えば。次のようなものです:http://security.stackexchange.com/questions/71457/how-can-i-verify-that-sslv3-protocol-is-disabled – Sobrique

+0

はい、私の推測でした。 – Zippy1970

+0

どのように私はあなたがそれをテストするのか本当にわからない - おそらくwgetで確認する? – Sobrique

答えて

1

私はPerlで動作するようにしました。私が思ったように、SSLを使用するサーバー上の各プログラムは、別々にパッチを当てる必要があります。しかし、これはPerlのためのソリューションだった:)バージョン1.0.2dにOpenSSLを(更新

1)これは、SSLを使用するすべてのプログラムのために必要なステップです!私のDebianシステムでは、hereという命令を使いました。

2)アップデートはNet :: SSLeayの

これは、そうでない場合はステップ4)が失敗する必要がありました。

$ cpan Net::SSLeay 

3)更新Getoptの::

ロングやはり、このステップは、そうでなければステップ4)が失敗する必要がありました。これはまた、LWPを更新すること

$ cpan Getopt::Long 

4)アップデート墓所:: SSLeayの

注意。

$ cpan Crypt::SSLeay 
+0

実際に 'Crypt :: SSLeay'を更新すると、' IO :: Socket :: SSL'と 'Net :: SSLeay'を引き出す' LWP :: Protocol :: https'がインストールされます。これを無効にするための具体的な手動手順がない限り、 'Crypt :: SSLeay'はまったく使われなくなりますが、ユーザを' Net :: SSLeay'に移行させる目的に役立ちます。 –

関連する問題