Net::SSL::ExpireDate + Plagger で証明書の期限切れをチェック

g:subtech:id:miyagawa:20061024:1161678503 でとっくに先を越されてしまったけど、証明書の期限が切れる2か月前、2週間前、3日前、当日にNotifyしてくれるのをPlaggerでやってみた。

Net::SSL::ExpireDate 1.01からcheck-cert-expire.plというスクリプトを同梱しています。これは、テキストファイルに書かれたhttpsなURLやファイルパスの証明書について、N日後やNか月後など一定期間後に証明書の期限が切れているかどうかをチェックしてくれるスクリプトです。

check-cert-expire.plはYAMLで出力するので、これをCustomFeed::Scriptを使ってPlaggerに食べさせてあげれば、NotifyするのもPublishするのもミサイル打つのもあとはご自由にです。

例えば、期限が切れる

  • 10年前 (これはデバッグ用というか確認用)
  • 2か月前
  • 2週間前
  • 3日前
  • 当日

にNotifyするならこんなYAMLで。

plugins:
  - module: Subscription::Config
    config:
      feed:
        - script:check-cert-expire.pl -l -f /PATH/TO/cert-list.txt -d '10 years'
        - script:check-cert-expire.pl -l -f /PATH/TO/cert-list.txt -d '2 months'
        - script:check-cert-expire.pl -l -f /PATH/TO/cert-list.txt -d '2 weeks'
        - script:check-cert-expire.pl -l -f /PATH/TO/cert-list.txt -d '3 days'
        - script:check-cert-expire.pl -l -f /PATH/TO/cert-list.txt

  - module: CustomFeed::Script

  - module: Filter::Rule
    rule:
      - module: Deduped
        path: /var/state/plagger/cert-expire.db

check-cert-expire.plに-lオプションつけると、

    link: https://rt.cpan.org#10%20years

みたいに期間指定の文字列をフラグメントにつけたダミーのURLも出力してくれます。このオプションつけないと、Dedupedのキーが全部同じになるんで、-d '10 years'のNotifyが1回来るだけになっちゃうのでご注意を。