SSL 上下文選項(xiàng)

SSL 上下文選項(xiàng)SSL 上下文選項(xiàng)清單

說(shuō)明

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

可選項(xiàng)

peer_name string

要連接的服務(wù)器名稱(chēng)。如果未設(shè)置,那么服務(wù)器名稱(chēng)將根據(jù)打開(kāi) SSL 流的主機(jī)名稱(chēng)猜測(cè)得出。

verify_peer bool

是否需要驗(yàn)證 SSL 證書(shū)。

默認(rèn)值為 true。

verify_peer_name bool

是否需要驗(yàn)證 peer name。

默認(rèn)值為 true.

allow_self_signed bool

是否允許自簽名證書(shū)。需要配合 verify_peer 參數(shù)使用(注:當(dāng) verify_peer 參數(shù)為 true 時(shí)才會(huì)根據(jù) allow_self_signed 參數(shù)值來(lái)決定是否允許自簽名證書(shū))。

默認(rèn)值為 false

cafile string

當(dāng)設(shè)置 verify_peer 為 true 時(shí), 用來(lái)驗(yàn)證遠(yuǎn)端證書(shū)所用到的 CA 證書(shū)。 本選項(xiàng)值為 CA 證書(shū)在本地文件系統(tǒng)的全路徑及文件名。

capath string

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

local_cert string

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

local_pk string

如果使用獨(dú)立的文件來(lái)存儲(chǔ)證書(shū)(local_cert)和私鑰, 那么使用此選項(xiàng)來(lái)指明私鑰文件的路徑。

passphrase string

local_cert 文件的密碼。

verify_depth int

如果證書(shū)鏈條層次太深,超過(guò)了本選項(xiàng)的設(shè)定值,則終止驗(yàn)證。

默認(rèn)情況下不限制證書(shū)鏈條層次深度。

ciphers string

設(shè)置可用的密碼列表。 可用的值參見(jiàn): ? ciphers(1)。

默認(rèn)值為 DEFAULT.

capture_peer_cert bool

如果設(shè)置為 true 將會(huì)在上下文中創(chuàng)建 peer_certificate 選項(xiàng), 該選項(xiàng)中包含遠(yuǎn)端證書(shū)。

capture_peer_cert_chain bool

如果設(shè)置為 true 將會(huì)在上下文中創(chuàng)建 peer_certificate_chain 選項(xiàng), 該選項(xiàng)中包含遠(yuǎn)端證書(shū)鏈條。

SNI_enabled bool

設(shè)置為 true 將啟用服務(wù)器名稱(chēng)指示(server name indication)。 啟用 SNI 將允許同一 IP 地址使用多個(gè)證書(shū)。

disable_compression bool

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

peer_fingerprint string | array

當(dāng)遠(yuǎn)程服務(wù)器證書(shū)的摘要和指定的散列值不相同的時(shí)候, 終止操作。

當(dāng)使用 string 時(shí), 會(huì)根據(jù)字符串的長(zhǎng)度來(lái)檢測(cè)所使用的散列算法:“md5”(32 字節(jié))還是“sha1”(40 字節(jié))。

當(dāng)使用 array 時(shí), 數(shù)組的鍵表示散列算法名稱(chēng),其對(duì)應(yīng)的值是預(yù)期的摘要值。

security_level int

設(shè)置安全級(jí)別。如果未指定,則使用庫(kù)默認(rèn)安全級(jí)別。 安全級(jí)別說(shuō)明請(qǐng)參考 ? SSL_CTX_get_security_level(3)。

從 PHP 7.2.0 和 OpenSSL 1.1.0 開(kāi)始可用。

更新日志

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

注釋

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

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