
AlmaLinux8環境でのCurl実行エラー

皆様こんにちは。tamです。
Webサーバーに対してCurl接続を行おうとしたら予想外のエラーになった話(2回目)をしたいと思います。
Curlとはなんぞや?という方はこちらの記事をご覧下さい。
また、1回目のエラーのお話はこちら。
何が起きたのか?
さて本題に戻りますが、古いSSL/TLSバージョンにしか対応していないWebサーバーに対してCurl接続する機会がありました。
実行したコマンドは特別なオプションもない非常に単純なものです。
[root@tam ~]# curl https://example.jp
※URLは架空のものです
結果は…
curl: (35) error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol
なんだかSSL/TLSのバージョン関連で問題があるようなエラーメッセージです。
通信エラーの原因は?
色々と調べた結果、RHEL8のドキュメント(システム全体の暗号化ポリシーの使用)に以下の記載がありました。
デフォルトのシステム全体の暗号化ポリシーレベルで、現在の脅威モデルに対して安全なものです。
TLS プロトコルの 1.2 と 1.3、IKEv2 プロトコル、および SSH2 プロトコルが使用できます。
※ドキュメントより引用
TLS1.2とTLS1.3にしか対応していない…だと!?
ありがたいことに対処方法はドキュメントの別ページ(システム全体の暗号化ポリシーを、以前のリリースと互換性のあるモードに切り替え)にありました。
ポリシーレベルの設定を行う
まずは現在のポリシーレベルを確認してみます。
[root@tam ~]# update-crypto-policies --show
DEFAULT
特に設定していなかったのでDEFAULTのようです。
ドキュメントに従いLEGACYポリシーレベルに設定を変更します。
[root@tam ~]# update-crypto-policies --set LEGACY
Setting system policy to LEGACY
Note: System-wide crypto policies are applied on application start-up.
It is recommended to restart the system for the change of policies
to fully take place.
[root@tam ~]# update-crypto-policies --show
LEGACY
これでLEGACYになりました。
再度通信テスト
この状態で再度Curlを試してみます。
[root@tam ~]# curl https://example.jp
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css" />
~~以下省略
無事通信成功し、目的のHTMLコードが取得できました。
念のためTLSバージョンを指定してみます。
[root@tam ~]# curl https://example.jp --tlsv1.1
curl: (35) error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol
あれ?どうして???
まさか…?
[root@tam ~]# curl https://example.jp --tlsv1.0
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css" />
~~以下省略
TLS1.2が利用不可なだけでなくTLS1.1ですら使えないサイトって。
今は2025年なんですが、さすがに古いにもほどがある…。
おそらく、一般的なブラウザではもう閲覧不可なのではないでしょうか。
まぁこれでLEGACYポリシーレベルではTLS1.0でも通信可能ということがわかったのでヨシとします。
今回はAlmaLinux8環境でしたが、RHEL9でもDEFAULTでは同じエラーとなります。
RHEL9のドキュメントはこちらにありますので、ご確認ください。
それではいずれ、Curlエラー(3回目)?でお会いしましょう。