SSL 上下文選項
SSL 上下文選項 — SSL 上下文選項清單
說明
ssl://
和 tls://
傳輸協議上下文選項清單。
可選項
-
peer_name
string
-
要連線的伺服器名稱。如果未設定,那麼伺服器名稱將根據打開 SSL 流的主機名稱猜測得出。
-
verify_peer
bool
-
是否需要驗證 SSL 證書。
預設值為 true
。
-
verify_peer_name
bool
-
是否需要驗證 peer name。
預設值為 true
.
-
allow_self_signed
bool
-
是否允許自簽名證書。需要配合
verify_peer
參數使用(註:當 verify_peer 參數為 true 時才會根據 allow_self_signed 參數值來決定是否允許自簽名證書)。
預設值為 false
-
cafile
string
-
當設定 verify_peer
為 true 時,
用來驗證遠端證書所用到的 CA 證書。
本選項值為 CA 證書在本地檔案系統的全路徑及檔名。
-
capath
string
-
如果未設定 cafile
,或者 cafile
所指的檔案不存在時,
會在 capath
所指定的目錄搜索適用的證書。
該目錄必須是已經經過雜湊處理的證書目錄。
(註:所謂 hashed certificate 目錄是指使用類似 c_rehash 命令將目錄中的 .pem 和 .crt 檔案掃瞄並提取雜湊碼,然後根據此雜湊碼建立檔案鏈接,以便於快速查詢證書)
-
local_cert
string
-
本地證書路徑。
必須是 PEM 格式,並且包含本地的證書及私鑰。
也可以包含證書頒發者證書鏈。
也可以通過 local_pk
指定包含私鑰的獨立檔案。
-
local_pk
string
-
如果使用獨立的檔案來儲存證書(local_cert
)和私鑰,
那麼使用此選項來指明私鑰檔案的路徑。
-
passphrase
string
-
local_cert
檔案的密碼。
-
verify_depth
int
-
如果證書鏈條層次太深,超過了本選項的設定值,則終止驗證。
預設情況下不限制證書鏈條層次深度。
-
ciphers
string
-
設定可用的密碼列表。
可用的值參見: » ciphers(1)。
預設值為 DEFAULT
.
-
capture_peer_cert
bool
-
如果設定為 true
將會在上下文中建立 peer_certificate
選項,
該選項中包含遠端證書。
-
capture_peer_cert_chain
bool
-
如果設定為 true
將會在上下文中建立 peer_certificate_chain
選項,
該選項中包含遠端證書鏈條。
-
SNI_enabled
bool
-
設定為 true
將啟用伺服器名稱指示(server name indication)。
啟用 SNI 將允許同一 IP 地址使用多個證書。
-
disable_compression
bool
-
如果設定,則禁用 TLS 壓縮,有助於減輕惡意攻擊。
-
peer_fingerprint
string | array
-
當遠端伺服器證書的摘要和指定的雜湊值不相同的時候,
終止操作。
當使用 string 時,
會根據字串的長度來檢測所使用的雜湊演算法:「md5」(32 位元組)還是「sha1」(40 位元組)。
當使用 array 時,
陣列的鍵表示雜湊演算法名稱,其對應的值是預期的摘要值。
-
security_level
int
-
設定安全級別。如果未指定,則使用庫預設安全級別。
安全級別說明請參考 » SSL_CTX_get_security_level(3)。
從 PHP 7.2.0 和 OpenSSL 1.1.0 開始可用。
註釋
注意:
因為 ssl://
是
https://
和
ftps://
的底層傳輸協議,
所以,ssl://
的上下文選項也同樣適用於
https://
和 ftps://
上下文。
注意:
PHP 必須聯合 OpenSSL 0.9.8j 或以上版本編譯才可以支援 SNI,
同時也支援使用 OPENSSL_TLSEXT_SERVER_NAME
來探測 SNI 伺服器名稱。