PHPのパッケージマネージャであるComposerを使用していて、「You are running Composer with SSL/TLS protection disabled.」の警告メッセージが出たときの対処法について説明します。
「SSL/TLS protection disabled」エラーの出力例
Composerでコマンドを実行した場合、下記の警告が表示される場合があります。
> composer diag
You are running Composer with SSL/TLS protection disabled.
...
これは、httpsのサイト(https:://packagist.org)にアクセスした場合、https(ssl)の暗号化が正当かのチェックが行われていないという警告メッセージです。
警告なので、composerの処理自体は実行されていますが、セキュリティ警告なので解決しておいた方が良い問題です。
「SSL/TLS protection disabled」エラーの対処法
SSLの暗号化に関する正当化チェックを行うか否かは、Composerの設定パラメータdisable-tls
で指定することができます。
現在の設定はcomposer config
コマンドで確認できます。この値がtrueの時はチェックがdisable化されているので、チェックが行われない(=安全ではない)状態です。false
だと「チェック無視がをしない」なので、チェックが行われている正常な状況です。
下記は、設定値を確認するコマンドの例です(windows環境でgrepがない場合は、composer config -l
だけ入力して目視で確認しても良いです)
> composer config -l | grep "disable-tls"
[disable-tls] true
この設定値を変更したい場合は、下記のコマンドを実行すれば、プロジェクト単位のdisable-tlsパラメータ値が変更できます(PC内に存在する別プロジェクトには影響しません)。
> composer config disable-tls false
システム全体のグローバル設定を変更したい場合は、下記のコマンドでパラメータを変更できます。これによってPC全体の設定、PC内で作業している全プロジェクトの設定値が変わります。SSLのセキュリティチェックは本来プロジェクトに依存するような内容ではないので、グローバル設定を変更する方が望ましいです。
> composer config -g -- disable-tls false
disable-tlsをfalseにした場合PHPがSSLの暗号・複合化を行うためOpenSSLモジュールを有効にする必要があります。OpenSSLモジュールを有効化するためには、php.iniファイルの下記の定義を変更する必要があります。
;extension=php_openssl.dll
↓
extesion=php_openssl.dll
システム全体でのComposer設定はどこで行われているか
先ほどの'composer config'へのオプションを見ても分かるように、Composerは、設定内容をプロジェクト単位の設定とPC全体のグローバル設置の2つで管理しています。
新しく作ったプロジェクトで、SSL/TLS protection disabledエラーが出る場合は、グローバル設定でdisable-tlsの設定が行われています。
システム全体のグローバル設定は、Windowsの場合、デフォルトでは下記のファイルに保存されています。
C:/Users/username/AppData/Roaming/Composer/config.json
上記のインストール先フォルダを調べたい場合は、こちらもcomposer config
で確認できます
> composer config -l | grep "data-dir"
[data-dir] C:/Users/username/AppData/Roaming/Composer