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を設定。

[code lang="perl"]
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);
},
} );
[/code]

Linux

Posted by ず@沖縄