1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SSLとドメインの期限をプログラムで取得した話

Posted at

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

早く使えるようになってほしい。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?