perl LWPで “SSL connect attempt failed error:0A000152:SSL routines::unsafe legacy renegotiation disabled” エラーになる

Linux

エラーメッセージの通り、"unsafe legacy renegotiation" で、「JVNDB-2009-002319 – 脆弱性対策情報データベース」と思われる。

ubuntu 20.04 で動いていたプログラムを ubuntu 22.04 に移すと発生したので、どこかで制限が厳しくなったのだろう。

SSL Server Test で調べると、"Secure Renegotiation Not supported ACTION NEEDED" なのでサーバー側の問題っぽい。念の為このブログを運営しているサーバー(www.zukeran.org)も見てみたが、こちらは “Secure Renegotiation Supported" で問題なし。


対処

サーバー側(Apache)で、SSLInsecureRenegotiation on してもらうのが正しいのだが、とりあえず手元のプログラム修正で逃げることにする。SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATIONを設定。

my $ua = LWP::UserAgent->new(
                ssl_opts => {
                                verify_hostname => 0,
                                SSL_create_ctx_callback => sub {
                                        my $ctx = shift;
                                        # 0x00040000 SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION
                                        Net::SSLeay::CTX_set_options($ctx, 0x40000);
                                        Net::SSLeay::CTX_set_security_level($ctx, 1);
                                },
                         } );

Linux

Posted by ず@沖縄