🐈

curlでunsafe legacy renegotiation disabledが発生した場合の対処方法(AmazonLinux2023)

2025/01/28に公開

完全に自分用の忘備録です🙇

弊社のとあるサーバをAmazonLinux2023にリプレイスしたんですが、リプレイス後に外部サーバからのHTTPS経由での通信ができなくなりました。。。。

アプリケーション(Ruby)でのエラーはこんな感じ

Faraday::ConnectionFailed SSL connect error

実際にcurlでそのサイトにアクセスしてみると、以下のようなエラー

$ curl https://{{ サイトのURL }}
curl: (35) OpenSSL/3.0.8: error:0A000152:SSL routines::unsafe legacy renegotiation disabled

いろいろ調べていたら、下記の参考サイトにもある通り、OpenSSL3側で安全でないネゴシエーションの通信は遮断してしまうらしい。。。。
妥協してAIに聞いてみたんですが、以下の回答

このエラーメッセージは、特定の種類のSSL/TLS通信が拒否されたことを示しています。具体的には、「unsafe legacy renegotiation」(安全でないレガシー再ネゴシエーション)が無効化されているために発生しています。
この状況では:
1. クライアント(curlを使用しているあなたのシステム)が、サーバーとの接続を確立しようとしています。
2. サーバーが古い、セキュリティ的に問題のある再ネゴシエーション方法を使用しようとしています。
3. クライアント側のOpenSSLが、このセキュリティ上問題のある方法を拒否しています。
具体的に拒否される通信:
- TLS/SSLセッションの再ネゴシエーションを使用する古い方式の通信
- CVE-2009-3555脆弱性に関連する潜在的に安全でない通信
この問題を解決するには:
1. サーバー側:可能であれば、サーバーのSSL/TLS設定を更新し、安全な再ネゴシエーション方法を使用するようにしてください。
2. クライアント側:一時的な解決策として、環境変数を設定して安全でない再ネゴシエーションを許可することができます:
   
   export OPENSSL_ALLOW_UNSAFE_LEGACY_RENEGOTIATION=1
   
   ただし、これはセキュリティリスクを伴うため、恒久的な解決策としては推奨されません。

CVE-2009-3555脆弱性に関連する潜在的に安全でない通信🤔

それもAIに聞いてみたw

CVE-2009-3555は、TLS/SSLプロトコルの再ネゴシエーション機能に関する脆弱性です。この脆弱性により、以下のような潜在的に安全でない通信が発生する可能性があります:
1. 中間者攻撃(Man-in-the-Middle):
攻撃者がクライアントとサーバーの間に介入し、通信を傍受したり改ざんしたりする可能性があります。
2. セッションハイジャック:
既存の安全な接続に、攻撃者が悪意のあるデータを挿入する可能性があります。
3. クロスプロトコル攻撃:
異なるプロトコル間で脆弱性を悪用し、予期しない動作を引き起こす可能性があります。
4. なりすまし:
攻撃者が正規のサーバーになりすまし、クライアントから機密情報を入手する可能性があります。
5. 機密情報の漏洩:
再ネゴシエーション時に、以前の通信内容が攻撃者に露出する可能性があります。
6. サービス妨害(DoS)攻撃:
攻撃者が再ネゴシエーションを繰り返し要求し、サーバーリソースを消費させる可能性があります。
7. 暗号化されていない通信の挿入:
暗号化されたセッション内に、暗号化されていないデータを挿入する可能性があります。
これらの潜在的に安全でない通信は、主にTLS/SSLの再ネゴシエーション機能の脆弱性を悪用することで発生します。適切なパッチやセキュリティ更新を適用し、最新のセキュリティプロトコルを使用することで、これらのリスクを軽減できます。

難しい。。。。。

対応方法なのですが、参考サイトにある通り、
/etc/pki/tls/openssl.cnfの[ crypto-policy ] に以下のように記述を追加すれば問題なく通信できるようになりました。

[ crypto_policy ]
Options = UnsafeLegacyServerConnect →このオプションを追加
.include = /etc/crypto-policies/back-ends/opensslcnf.config

とりあえず通信できるようになったけど、アプリ側でもオプション追加できるっぽいので追加しておいた方がいいのかな🤔(外部サイトが全部対応してくれればいいんだけどそういわけにもいかなそうですし。。。。)

参考サイト

https://cyener.co.jp/2024/10/07/al2023でのcurl実行時のエラー/

NaviPlusテックブログ

Discussion