php でドメイン名からSSL証明書の期限を取得する


<?php #ここでドメイン名を指定 $domain_name = 'hogehoge.com'; #外部接続するために必要なストリームコンテキストを取得する(ここでアロー演算子でSSL証明書の情報を絞り混んでます) $stream_context = stream_context_create(array( 'ssl' => array('capture_peer_cert' => true) )); #stream_socket_client関数で外物接続。$errno は接続失敗時のシステムエラーのレベルが $errstr は接続失敗した時のエラーメッセージが入ります 5 と書いてあるところはタイムアウトまでの時間です $resource = stream_socket_client( 'ssl://' . $domain_name . ':443',$errno,$errstr,5,STREAM_CLIENT_CONNECT,$stream_context ); #帰ってきた情報からstream_context_get_paramsで選んだドメインの情報を配列で取得します $cont = stream_context_get_params($resource); #上記で撮ってきた配列から配列からpeer_certificateという場所から idを取得してそれから全情報を取得する。 $parsed = openssl_x509_parse($cont['options']['ssl']['peer_certificate']); #あとは全情報から配列を抜き出して絞り込んで好きな形式に期限を出す if(strpos($parsed['subject']['CN'], $domain_name) !== false){ echo date('Y/m/d', $parsed['validTo_time_t']); }else{ echo 'not contract.'; }