user icon

PHPでTLS/SSL証明書の有効期間を取得

昔使ったのでメモ用に。
SNI(同じIPアドレスで複数ドメイン)に対応するためオプションを付けています。
他にも色々情報が取れますが、今回は使わないので有効期間のみです。


取り合えずwww.php.netをサンプルに取得してみます。
<?php
$host = 'www.php.net';
$port = 443;
$timeout = 5;
//
$stream_context = stream_context_create(array(
    'ssl' => array(
        'capture_peer_cert' => true,
        'max_redirects' => 0,
        'SNI_enabled'=>true,
        'SNI_server_name'=>$host,
    )
));
$resource = stream_socket_client(
    'ssl://'. $host. ':'. $port,
    $errno,
    $errstr,
    $timeout,
    STREAM_CLIENT_CONNECT,
    $stream_context
);
$cont = stream_context_get_params($resource);
$Data = openssl_x509_parse($cont['options']['ssl']['peer_certificate']);

// span
$tm_start = $Data["validFrom_time_t"];
$tm_end = $Data["validTo_time_t"];
echo date("Y-m-d H:i:s", $tm_start)." - ".date("Y-m-d H:i:s", $tm_end);
出力はこんな感じに。
  • 2021-05-18 19:04:38 – 2022-05-18 19:04:38
Facebooktwitterlinkedintumblrmail

Tags: ,

名前
E-mail
URL
コメント

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)