PHP の OpenSSL サポートを使用するには、--with-openssl[=DIR] を指定して PHP を コンパイルする必要があります。
OpenSSL ライブラリを動作させるためには、実行時にさらに必要なものがあります。
特に、OpenSSL から乱数 (あるいは疑似乱数) 生成器にアクセスできなければなりません。
たいていの Unix および Unix 系のプラットフォーム (Linux など) の場合、
/dev/urandom
あるいは
/dev/random
デバイスがこれにあたります。
configure オプション --with-system-ciphers が利用できます。 これにより、PHP がハードコードされたデフォルトではなく、システムが持つ暗号リストを使うようになります。
注意: Win32 ユーザーへの注意
この拡張モジュールを動作させるには、 Windows システムの PATH が通った場所に DLL ファイルが存在する必要があります。 FAQ の "Windows で PHP のディレクトリを PATH に追加するにはどうすればいいのですか?" で、その方法を説明しています。 DLL ファイルを PHP のフォルダから Windows のシステムディレクトリにコピーしても動作します (システムディレクトリは、デフォルトで PATH に含まれるからです) が、これは推奨しません。 この拡張モジュールを使用するには、以下のファイルが PATH の通った場所にある必要があります。 libeay32.dll, または、OpenSSL 1.1 以降では libcrypto-*.dll
加えてキー生成およびサイン認証関数を使用する計画がある場合、 システムに 有効な openssl.cnf をインストールする 必要があります。 Win32 バイナリ配布版にサンプル設定ファイルを同梱することにしました。 extras/openssl ディレクトリにあります。
PHP は、 以下のロジックにより openssl.cnf を探します。
インストール時に、設定ファイルを デフォルトのパス または 他の場所にインストールし、(例えば仮想ホスト毎に)環境変数に設定ファ イルの場所を指定するかを選ぶ必要があります。 設定ファイルを必要とする関数の
- 環境変数
OPENSSL_CONF
が設定された場合、 設定ファイルの(ファイル名を含む)パスとして使用されます。- 環境変数
SSLEAY_CONF
が設定された場合、 設定ファイルの(ファイル名を含む)パスとして使用されます。- ファイル openssl.cnf はデフォルトの認証エリアに あることが仮定され、openssl DLL がコンパイルされた時間で設定されます。 これは通常、デフォルトのファイル名が c:\usr\local\ssl\openssl.cnf (x64の場合), または C:\Program Files (x86)\Common Files\SSL\openssl.cnf (x86の場合), PHP 7.4.0 より前のバージョンでは C:\usr\local\ssl\openssl.cnf であることを意味します。
options
に より、デフォルトのパスを上書きすることが可能であることに注意してください。警告権限がないユーザーに openssl.cnf を変更させないようにしてください。
バージョン | 説明 |
---|---|
7.4.0 | OpenSSL のデフォルトの設定ファイルのパスが C:\usr\local\ssl から C:\Program Files\Common Files\SSL と C:\Program Files (x86)\Common Files\SSL にそれぞれ変更されました。 |