php keystore怎樣驗(yàn)證證書

PHP
小樊
81
2024-10-17 13:59:56

要驗(yàn)證PHP KeyStore中的證書,您需要使用OpenSSL擴(kuò)展。以下是一個(gè)簡(jiǎn)單的示例,說(shuō)明如何使用PHP和OpenSSL驗(yàn)證證書:

  1. 首先,確保您的系統(tǒng)上已安裝了OpenSSL擴(kuò)展。在大多數(shù)Linux發(fā)行版中,您可以使用以下命令安裝:
sudo apt-get install php-openssl
  1. 創(chuàng)建一個(gè)名為verify_certificate.php的PHP腳本,并將以下內(nèi)容粘貼到其中:
<?php
// 證書文件路徑
$cert_file = 'path/to/your/certificate.pem';

// 要驗(yàn)證的證書文件路徑
$ca_cert_file = 'path/to/your/ca_certificate.pem';

// 要驗(yàn)證的證書文件路徑
$client_cert_file = 'path/to/your/client_certificate.pem';

// 要驗(yàn)證的私鑰文件路徑
$client_key_file = 'path/to/your/client_private_key.pem';

// 要驗(yàn)證的證書主題
$subject = 'CN=example.com'; // 例如:CN=www.example.com

// 初始化SSL上下文
$context = stream_context_create([
    'ssl' => [
        'verify_peer' => true,
        'verify_peer_name' => true,
        'allow_self_signed' => false,
        'cafile' => $ca_cert_file,
        'local_cert' => $client_cert_file,
        'local_pk' => $client_key_file,
    ],
]);

// 嘗試建立SSL連接
$socket = fsockopen('ssl://www.example.com', 443, $errno, $errstr, 30);

if (!$socket) {
    echo "Error: $errstr ($errno)";
} else {
    // 關(guān)閉SSL連接
    fclose($socket);

    // 驗(yàn)證證書
    $certInfo = openssl_x509_parse($client_cert_file);

    if (isset($certInfo['subject']['commonName']) && $certInfo['subject']['commonName'] == $subject) {
        echo "Certificate is valid.";
    } else {
        echo "Certificate is invalid.";
    }
}
?>
  1. 修改腳本中的證書文件路徑和主題,以匹配您的實(shí)際情況。

  2. 在命令行中運(yùn)行腳本:

php verify_certificate.php

如果證書驗(yàn)證成功,您將看到"Certificate is valid."消息。如果證書驗(yàn)證失敗,您將看到相應(yīng)的錯(cuò)誤消息。

0