2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

NEAdvent Calendar 2023

Day 15

PHPでdh key too smallエラーを解決する

Last updated at Posted at 2023-12-14

概要

openssl1.1.1から、opensslの設定が変わり、デフォルトのセキュリティレベルが2になった。
通信の際に使用する鍵の長さが想定より短い場合、dh key too smallというエラーが発生し、通信が失敗してしまう。

This is caused by the SECLEVEL 2 setting the security level to 112 bit. This means that RSA and DHE keys need to be at least 2048 bit long.

設定を見てみる

find / -name openssl.cnf
[system_default_sect]
MinProtocol = TLSv1.2
CipherString = DEFAULT@SECLEVEL=2

このDEFAULT@SECLEVELはopenssl1.1.0では1だったが、2になっている。

解決方法

  • DEFAULT@SECLEVELを1に下げる
    • opensslの設定ファイルでDEFAULT@SECLEVEL=2DEFAULT@SECLEVEL=1にする
      • これはアプリケーションのすべての通信に影響するのでできれば避けたい
    • プログラムレベルで通信時のセキュリティレベルの設定を変える
      • 言語により通信時の設定ができる機能があると思うのでそれを利用
  • 鍵の再設定をする
    • (試していませんが)通信先の設定もいじらないといけない場合があるため、難しいかも。可能であればこちらが理想

※ セキュリティの設定なので詳しい方と相談する。

さいごに

ライブラリのパッチバージョンが1違うだけでもこういった現象が起きうることが分かりました。
念頭においておきたいと思います。

参考

https://www.google.com/url?q=https://wiki.debian.org/ContinuousIntegration/TriagingTips/openssl-1.1.1&sa=D&source=editors&ust=1702441550562129&usg=AOvVaw303sCdJtutwRxHltstCllb
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=907788#21
https://www.openssl.org/policies/releasestrat.html

補遺

opensslは1.1.1もサポートを終了している。
https://www.openssl.org/policies/releasestrat.html

Versions 1.1.1 and 1.0.2 are no longer supported.

サポートが終了しているバージョンを使用している場合は(可能なら)openssl3系に速やかに移行するべき。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?