管理するサイトが増えてくると、いろんな契約の更新とか手続きが埋もれていく事ってありますよね?
SSLの更新もそんな中の一つだと思います。
大抵は契約している管理会社から期限が近づいている連絡がくるのですがファックスでなんてところがありました orz
まさかです!!
ってことでPHPで監視するためのプログラムを作ってみました。サイトが増えたら配列にドメイン名を追加していけばOKです。
監視サーバーがあってDBでドメインを管理してあるのであれば、DBから取るようにしても良いですね。
<?php

$from    = 'from@exsample.com';
$to      = 'to@example.com';
$subject = '';
$body    = '';

$urls = array(
'test1.com',
'test2.com',
);

$stream_context = stream_context_create(array(
'ssl' => array('capture_peer_cert' => true)
));

$errs = array();

foreach($urls as $url){
$resource = stream_socket_client(
"ssl://{$url}:443",
$errno,
$errstr,
30,
STREAM_CLIENT_CONNECT,
$stream_context
);
$cont = stream_context_get_params($resource);
$parsed = openssl_x509_parse($cont['options']['ssl']['peer_certificate']);
if(date('Y/m/d',strtotime('-1month')) < date('Y/m/d', $parsed['validTo_time_t'])){
$errs[] = $url;
}
}

if(count($errs) > 0){
$subject = 'SSL Error!!';
$body    = implode("\r\n",$errs);
}else{
$subject = 'SSL OK!!';
$body = 'OK';
}

mail($to, $subject, $body, "From: {$from}");