SSL 上下文選項

SSL 上下文選項SSL 上下文選項清單

說明

ssl://tls:// 傳輸協(xié)議上下文選項清單。

可選項

peer_name string

要連接的服務器名稱。如果未設置,那么服務器名稱將根據(jù)打開 SSL 流的主機名稱猜測得出。

verify_peer bool

是否需要驗證 SSL 證書。

默認值為 true。

verify_peer_name bool

是否需要驗證 peer name。

默認值為 true.

allow_self_signed bool

是否允許自簽名證書。需要配合 verify_peer 參數(shù)使用(注:當 verify_peer 參數(shù)為 true 時才會根據(jù) allow_self_signed 參數(shù)值來決定是否允許自簽名證書)。

默認值為 false

cafile string

當設置 verify_peer 為 true 時, 用來驗證遠端證書所用到的 CA 證書。 本選項值為 CA 證書在本地文件系統(tǒng)的全路徑及文件名。

capath string

如果未設置 cafile,或者 cafile 所指的文件不存在時, 會在 capath 所指定的目錄搜索適用的證書。 該目錄必須是已經經過哈希處理的證書目錄。 (注:所謂 hashed certificate 目錄是指使用類似 c_rehash 命令將目錄中的 .pem 和 .crt 文件掃描并提取哈希碼,然后根據(jù)此哈希碼創(chuàng)建文件鏈接,以便于快速查找證書)

local_cert string

本地證書路徑。 必須是 PEM 格式,并且包含本地的證書及私鑰。 也可以包含證書頒發(fā)者證書鏈。 也可以通過 local_pk 指定包含私鑰的獨立文件。

local_pk string

如果使用獨立的文件來存儲證書(local_cert)和私鑰, 那么使用此選項來指明私鑰文件的路徑。

passphrase string

local_cert 文件的密碼。

verify_depth int

如果證書鏈條層次太深,超過了本選項的設定值,則終止驗證。

默認情況下不限制證書鏈條層次深度。

ciphers string

設置可用的密碼列表。 可用的值參見: ? ciphers(1)

默認值為 DEFAULT.

capture_peer_cert bool

如果設置為 true 將會在上下文中創(chuàng)建 peer_certificate 選項, 該選項中包含遠端證書。

capture_peer_cert_chain bool

如果設置為 true 將會在上下文中創(chuàng)建 peer_certificate_chain 選項, 該選項中包含遠端證書鏈條。

SNI_enabled bool

設置為 true 將啟用服務器名稱指示(server name indication)。 啟用 SNI 將允許同一 IP 地址使用多個證書。

disable_compression bool

如果設置,則禁用 TLS 壓縮,有助于減輕惡意攻擊。

peer_fingerprint string | array

當遠程服務器證書的摘要和指定的散列值不相同的時候, 終止操作。

當使用 string 時, 會根據(jù)字符串的長度來檢測所使用的散列算法:“md5”(32 字節(jié))還是“sha1”(40 字節(jié))。

當使用 array 時, 數(shù)組的鍵表示散列算法名稱,其對應的值是預期的摘要值。

security_level int

設置安全級別。如果未指定,則使用庫默認安全級別。 安全級別說明請參考 ? SSL_CTX_get_security_level(3)

從 PHP 7.2.0 和 OpenSSL 1.1.0 開始可用。

更新日志

版本 說明
7.2.0 添加了 security_levels。 需要 OpenSSL >= 1.1.0。

注釋

注意: 因為 ssl://https://ftps:// 的底層傳輸協(xié)議, 所以,ssl:// 的上下文選項也同樣適用于 https://ftps:// 上下文。

注意: PHP 必須聯(lián)合 OpenSSL 0.9.8j 或以上版本編譯才可以支持 SNI, 同時也支持使用 OPENSSL_TLSEXT_SERVER_NAME 來探測 SNI 服務器名稱。