PHP检查https链接的合法性
时间: 2023-08-14 12:07:24 浏览: 46
可以使用 PHP 内置的函数 `stream_socket_client` 和 `openssl_verify` 来检查 https 链接的合法性。具体步骤如下:
1. 使用 `stream_socket_client` 函数建立与目标服务器的 TCP 连接。
2. 使用 `openssl_verify` 函数验证服务器的 SSL 证书是否合法,包括证书的颁发机构、有效期等。
3. 如果 SSL 证书验证通过,则说明 https 链接合法。
以下是一个示例代码:
```php
$url = 'https://www.example.com';
$parts = parse_url($url);
$context = stream_context_create([
'ssl' => [
'verify_peer' => true,
'verify_peer_name' => true,
],
]);
$socket = stream_socket_client('ssl://' . $parts['host'] . ':443', $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context);
if (!$socket) {
echo "Failed to connect: $errstr ($errno)\n";
} else {
$cert = stream_context_get_params($socket)['options']['ssl']['peer_certificate'];
if (openssl_verify($parts['host'], $cert) === 1) {
echo "Valid certificate\n";
} else {
echo "Invalid certificate\n";
}
fclose($socket);
}
```
注意:上述代码仅验证了 SSL 证书的合法性,未验证域名是否有效。如果需要验证域名的有效性,可以使用 `openssl_x509_parse` 函数解析证书中的 Subject Alternative Name 字段,并检查其中是否包含目标域名。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)