SSL
PHPで取得
ソース丸パクリで動きました。
https://qiita.com/hondy12345/items/7d493b8544f9eb2cd747
わかったこと
- 期限が切れてる場合も取得できる
- 証明書のドメインが正しい場合、自己証明書でも日付は取得できる。証明書のドメインが違う場合は日付は取得できない。
- 自己証明書の場合は注意が必要
- ドメインが無効の場合は例外が発生する
ドメイン
PHPで取得
execでwhoisを叩きました。
exec('whois ' . $domain, $results);
whoisのバージョンに注意
dockerでやるとwhoisのバージョンは5.2.17でしたが、
CentOSでyumでinstallすると5.1.1になります。
5.1.1では新しいドメインに対応しておらず、また.comなどの結果が途中で切れてしまいます。
ですので、新し目のwhoisを入れる必要があります。
dockerと同じ5.2.17を入れる場合はソースからビルドしてください。
※5.2.11を試しましたが、新しいドメインに対応してなかったので5.2.17でいいと思います。
whoisをソースからビルド
gitから好きなバージョンをwget
https://github.com/rfc1036/whois
解凍して、cdしてmakeするとperlのautodieで怒られるかと思います。
yumでperl-autodie.noarchをinstallすれば大丈夫です。
また、そのままmakeすると日本語ドメインに対応しないため、
yum install libidn-devel
の後、設定値を加えてmake
make all HAVE_LIBIDN=1;
OKならmake install。
連続してwhoisをすると20回で止められるのでsleepで5秒待つ
whoisサーバには連続接続に制限があるようです。
これを回避するにはsleepで5秒待つとイケました。
結果の解析
whoisの結果文字列を解析して、ドメインが無効かどうか、有効の場合は期限を取得します。
トップレベルドメインで結果が違うので、分岐します。
- .jp
- あらかじめサーバでwhoisを試してみて、結果が日本語で出力されるか確認する。以下は日本語の場合です。
- ドメイン無効の場合「No match!!」がある
- 有効の場合は[有効期限]の行を探す。無い場合は[状態]の行を見る。
- .com、.net
- ドメイン無効の場合「No match for domain」がある
- 有効の場合は[Registrar Registration Expiration Date:]の行を見る。
- .info
- ドメイン無効の場合「NOT FOUND」がある
- 有効の場合は[Registry Expiry Date:]の行を見る。
- .biz
- ドメイン無効の場合「No Data Found」がある
- 有効の場合は[Registry Expiry Date:]の行を見る。
- .organic
- ドメイン無効の場合「NOT FOUND」がある
- 有効の場合は[Registry Expiry Date:]の行を見る。
- .work
- ドメイン無効の場合「This domain name has not been registered.」がある
- 有効の場合は[Registry Expiry Date:]の行を見る。
RDAP
早く使えるようになってほしい。