📜  使用 php openssl_x509_parse 检查网站 ssl 证书 - PHP (1)

📅  最后修改于: 2023-12-03 15:36:32.892000             🧑  作者: Mango

使用 php openssl_x509_parse 检查网站 ssl 证书 - PHP

当你访问一个使用 HTTPS 协议的网站时,浏览器会根据该网站的 SSL 证书来验证该网站的身份。SSL 证书通常由第三方机构颁发并包含了网站信息、公钥等信息。在 php 应用中,可以使用 openssl_x509_parse 函数来解析证书信息。

函数介绍

openssl_x509_parse 函数是 php 中一个基于 OpenSSL 扩展的函数,用于解析证书信息。本函数接收一个经过 base64 编码的证书字符串,并返回包含各种证书信息的关联数组。

函数原型如下:

array openssl_x509_parse ( mixed $x509 )

函数参数:

  • $x509:要解析的证书字符串或者公钥。

返回值:

返回一个关联数组,包含了证书信息的各个部分。其中各个字段的含义和格式可以参考 PHP 官方文档

示例

下面是一个简单的示例,我们可以使用该示例来检查指定的网站的 SSL 证书:

$hostname = 'www.example.com';
$port = 443;
$timeout = 30;

$fp = fsockopen("ssl://{$hostname}", $port, $errno, $errstr, $timeout);

if (!$fp) {
    echo "$errstr ($errno)\n";
} else {
    $out  = "GET / HTTP/1.1\r\n";
    $out .= "Host: {$hostname}\r\n";
    $out .= "Connection: Close\r\n\r\n";
    fwrite($fp, $out);
    while (!feof($fp)) {
        $response = fgets($fp);
        if (strpos($response, 'Certificate chain') !== false) {
            $cert = fgets($fp);
            break;
        }
    }
    fclose($fp);

    $certInfo = openssl_x509_parse(base64_decode($cert));
    print_r($certInfo);
}

在代码示例中,我们首先使用 fsockopen 函数建立一个安全连接,然后发送一个 HTTP GET 请求,并获取该网站的 SSL 证书。最后,我们使用 openssl_x509_parse 函数来解析证书信息并输出。

总结

本文介绍了如何使用 openssl_x509_parse 函数来解析网站 SSL 证书的信息。使用该函数,我们可以检查证书是否合法,检查证书是否过期以及提取证书中的其他信息,从而保证 web 应用的安全性。