サンプル・プログラムの実行例

サンプル・プログラム
checkSSL.php | サンプル・プログラム本体。 |
pahooInputData.php | データ入力に関わる関数群。 使い方は「数値入力とバリデーション」「文字入力とバリデーション」などを参照。include_path が通ったディレクトリに配置すること。 |
バージョン | 更新日 | 内容 |
---|---|---|
2.0.1 | 2022/06/04 | 不具合修正 |
2.0 | 2022/06/04 | PHP8対応,リファラ・チェック追加 |
1.0 | 2015/03/01 | 初版 |
バージョン | 更新日 | 内容 |
---|---|---|
1.8.1 | 2025/03/15 | validRegexPattern() -- debug |
1.8.0 | 2024/11/12 | validRegexPattern() 追加 |
1.7.0 | 2024/10/09 | validURL() validEmail() 追加 |
1.6.0 | 2024/10/07 | isButton() -- buttonタグに対応 |
1.5.0 | 2024/01/28 | exitIfExceedVersion() 追加 |
準備
解説:SSLの有効期限を調べる
checkSSL.php
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 によってパーシングし、証明書の有効期限を取り出す。
checkSSL.php
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日)不具合修正