安裝

要使用 PHP 的 OpenSSL 支持,你應(yīng)該使用 --with-openssl[=DIR] 參數(shù)來編譯 PHP。

OpenSSL 庫還在運(yùn)行時對正常操作有額外的要求。最明顯的是,OpenSSL 需要訪問隨機(jī)或偽隨機(jī)數(shù)生成器; 在大多數(shù) Unix 和類 Unix 平臺上(包括linux),意味著它必須要訪問 /dev/urandom 或者 /dev/random 設(shè)備。

自 PHP 5.6.3 起,--with-system-ciphers 配置選項(xiàng)可用于設(shè)置 PHP 使用系統(tǒng)密碼列表,而不是硬編碼。

注意: Win32 平臺的用戶請注意

為了使此擴(kuò)展生效, DLL 文件必須能在 Windows 系統(tǒng)的 PATH 指示的路徑下找到。如何操作的信息,請參見題為“如何在 Windows 中將 PHP 目錄加到 PATH 中”的FAQ。雖然將 DLL 文件從 PHP 文件夾復(fù)制到 Windows 系統(tǒng)目錄也行,但不建議這樣做。 此擴(kuò)展需要下列文件在 PATH 路徑中: libeay32.dll, 或者,自 OpenSSL 1.1 起,為 libcrypto-*.dll

此外,如果打算使用密鑰生成和證書簽名功能,你需要在你的系統(tǒng)上安裝一個可用的 openssl.cnf 文件。 在我們的 win32 二進(jìn)制發(fā)行版本中,我們已經(jīng)包含了一個示例配置文件,在 extras/openssl 文件夾中。

PHP 將會使用如下邏輯搜索 openssl.cnf 文件:

  • 如果 OPENSSL_CONF 環(huán)境變量設(shè)置了,該變量將會被當(dāng)作配置文件的路徑(含文件名)。
  • 如果 SSLEAY_CONF 環(huán)境變量設(shè)置了,該變量將會被當(dāng)作配置文件的路徑(含文件名)。
  • 假設(shè)openssl.cnf 文件將會在 openssl DLL 被編譯時配置的默認(rèn)證書區(qū)域被找到。這通常意味著默認(rèn)的文件名是 C:\Program Files\Common Files\SSL\openssl.cnf(x64) 或者 C:\Program Files (x86)\Common Files\SSL\openssl.cnf (x86),而 PHP 7.4.0之前,則是 C:\usr\local\ssl\openssl.cnf。

在你的安裝過程中,你需要決定是否將配置文件安裝在默認(rèn)路徑或者使用環(huán)境變量(可能是基于每個虛擬主機(jī)的基礎(chǔ))來定位配置文件安裝到其他地方。注意,可以使用引入配置文件的函數(shù)中的 options 參數(shù)來覆蓋腳本中的默認(rèn)路徑。
警告

確保無權(quán)限的用戶無法修改 openssl.cnf 文件。

更新日志

版本 說明
7.4.0 OpenSSL 默認(rèn)配置文件的路徑已經(jīng)從 C:\usr\local\ssl 分別改至 C:\Program Files\Common Files\SSLC:\Program Files (x86)\Common Files\SSL。