/*
* $domainからSSLの期限を取得
*/
public static function getSSLDueDate($domain)
{
// 外部接続用のstream_contextを取得
$stream_context = stream_context_create([
'ssl' => [
'capture_peer_cert' => true
// エラー回避用
, 'verify_peer' => false
, 'verify_peer_name' => false
]
]);
// 外部接続
$resource = stream_socket_client(
'ssl://' . $domain . ':443'
, $err_no, $err_str, 5
, STREAM_CLIENT_CONNECT, $stream_context
);
// ドメインの情報を取得
$context = stream_context_get_params($resource);
$parsed = openssl_x509_parse(
$context['options']['ssl']['peer_certificate']
);
// SSL期限を返す
return (strpos($parsed['subject']['CN'], $domain) !== false)
? date('Y-m-d', $parsed['validTo_time_t']) : null;
}