PHP SSL 上下文选项

phpserver side programmingprogramming更新于 2025/8/19 6:22:17

简介

ssl:// 和 tls:// 传输的上下文选项列表。

peer_name要使用的对等体名称。如果未设置此值,则根据打开流时使用的主机名猜测名称。
verify_peer需要验证所使用的 SSL 证书。默认为 TRUE。
verify_peer_name需要验证对等体名称。默认为 TRUE。
allow_self_signed允许自签名证书。需要 verify_peer。默认为 FALSE
cafile本地文件系统上用于验证远程对等方身份的证书颁发机构文件的位置。
capath必须是正确的哈希证书目录。
local_cert文件系统上本地证书文件的路径。
local_pk如果证书和私钥的文件分开,则文件系统上本地私钥文件的路径。
passphrase用于对local_cert文件进行编码的密码。
CN_match我们期望的通用名称。如果通用名称不匹配,连接尝试将失败。
verify_depth如果证书链太深,则中止。
ciphers设置可用密码列表。字符串的格式在»中描述。密码(1)。
capture_peer_cert如果设置为 TRUE,将创建一个包含对等证书的 peer_certificate上下文选项。
capture_peer_cert_chain如果设置为 TRUE,将创建一个包含证书链的 peer_certificate_chain 上下文选项。
SNI_enabled如果设置为 TRUE,将启用服务器名称指示。
SNI_server_name如果设置,此值将用作服务器名称指示的服务器名称。否则,将根据使用的主机名猜测服务器名称。
disable_compression如果设置,则禁用 TLS 压缩。
peer_fingerprint当远程证书摘要与指定的哈希值不匹配时中止。
security_level设置安全级别。如果未指定,则使用默认安全级别。自PHP 7.2.0和OpenSSL 1.1.0起可用。

示例

此示例显示 SSL 上下文设置。

$stream_context = stream_context_create([ 'ssl' => [
   'local_cert' => '/path/to/key.pem',
   'peer_fingerprint' => openssl_x509_fingerprint(file_get_contents('/path/to/key.crt')),
   'verify_peer' => false,
   'verify_peer_name' => false,
   'allow_self_signed' => true,
   'verify_depth' => 0 ]]);

相关文章