あるサイトを CentOS の VPS から、新しく作成した Ubuntu の VPS に引っ越ししようとしたら、500エラーが出てしまいました。
laravel.log を確認すると、以下のようなエラーが出ていました。
file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages: error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small {"exception":"[object] (ErrorException(code: 0): file_get_contents(): SSL operation failed with code 1.
ぐぐってみたら、openssl の設定を変更したら解決できるらしい。
設定ファイルの場所は、 /etc/ssl/openssl.cnf と書いてあるサイトと /usr/lib/ssl/openssl.cnf と書いてあるサイトがあったりした。
どちらのファイルが正しいのか確認してみようと思って、とりあえず ls してみました。
ls -la /usr/lib/ssl/openssl.cnf lrwxrwxrwx 1 root root 20 Aug 24 02:02 /usr/lib/ssl/openssl.cnf -> /etc/ssl/openssl.cnf
シンボリックリンクしてるだけでした。
というわけで、 /etc/ssl/openssl.cnf を編集します。
ファイルの先頭に以下の内容(openssl_conf = ... の行から CipherString = ... の行まで)を追加します。
openssl_conf = default_conf [ default_conf ] ssl_conf = ssl_sect [ ssl_sect ] system_default = system_default_sect [ system_default_sect ] MinProtocol = TLSv1.2 CipherString = DEFAULT:@SECLEVEL=1 # # OpenSSL example configuration file. # This is mostly being used for generation of certificate requests. # (以下略)
これでエラーは出なくなりました。
要はTLSのキーが短すぎるよと怒られたので、短いキーでも怒られないようにしたのです。
ホントにそれでいいんでしょうか?
セキュリティのレベルを下げてしまったのはまずい気がします。
忙しいので、とりあえずは現状の対処にしておいて、あとで時間があるときにでも。