サンプル・プログラムの実行例
サンプル・プログラム
checkSSL.php | サンプル・プログラム本体。 |
pahooInputData.php | データ入力に関わる関数群。 使い方は「数値入力とバリデーション」「文字入力とバリデーション」などを参照。include_path が通ったディレクトリに配置すること。 |
バージョン | 更新日 | 内容 |
---|---|---|
2.0.1 | 2022/06/04 | 不具合修正 |
2.0 | 2022/06/04 | PHP8対応,リファラ・チェック追加 |
1.0 | 2015/03/01 | 初版 |
バージョン | 更新日 | 内容 |
---|---|---|
1.5.0 | 2024/01/28 | exitIfExceedVersion() 追加 |
1.4.2 | 2024/01/28 | exitIfLessVersion() メッセージ修正 |
1.4.1 | 2023/09/30 | コメントの訂正 |
1.4.0 | 2023/09/09 | $_GET, $_POST参照をfilter_input()関数に置換 |
1.3.0 | 2023/07/11 | roundFloat() 追加 |
準備
解説:SSLの有効期限を調べる
130: /**
131: * SSLサーバ証明書の有効期限を返す
132: * @param string $url 調査するURL
133: * @return long SSL証明書の有効期限/FALSE
134: */
135: function getLimitSSL($url) {
136: $arr = parse_url($url);
137: if ($arr == FALSE) return FALSE;
138: if ($arr['scheme'] != 'https') return FALSE;
139:
140: $stream_context = stream_context_create(array(
141: 'ssl' => array('capture_peer_cert' => TRUE)
142: ));
143: $resource = stream_socket_client(
144: 'ssl://' . $arr['host'] . ':443',
145: $errno,
146: $errstr,
147: 30,
148: STREAM_CLIENT_CONNECT,
149: $stream_context
150: );
151: $cont = stream_context_get_params($resource);
152: $parsed = openssl_x509_parse($cont['options']['ssl']['peer_certificate']);
153:
154: return (strpos($parsed['subject']['CN'], $arr['host']) !== FALSE) ?
155: $parsed['validTo_time_t'] : FALSE;
156: }
ストリーム関数 stream_context_create によってストリームコンテキストを作成し、次に関数 stream_socket_client によってSSLソケット接続を開く。そして関数 stream_context_get_params によってSSL証明書に関するパラメータを取得する。
取得パラメータはOpenSSL関数 openssl_x509_parse によってパーシングし、証明書の有効期限を取り出す。
158: /**
159: * SSLサーバ証明書の有効期限を調べる
160: * @param string $url 調査するURL
161: * @return bool TRUE:有効期限内/FALSE:期限外
162: */
163: function checkSSL($url) {
164: $limit = getLimitSSL($url);
165: if ($limit == FALSE) return FALSE;
166:
167: return ($limit - time() > 0) ? TRUE : FALSE;
168: }
(2024年1月21日)不具合修正