Gateway(以後、UAG)を構築しました。Encrypt(以後、LE)を使うことにしました。ご存じのようにLEの有効期間は3か月です。一応我が家の環境には、期限が1か月を切ったときに証明書を自動更新する仕組みと、それを統合リバースプロキシサーバへ配信する仕組みを過去に作って現在も運用を続けています。これを何とか活用して、UAGに対する証明書適用の処理を自動化できないかなーと思ってスクリプトを作りました。APIでも備わってるやろう・・・と思って情報を探すのですが、意外と見つかりませんで。EncryptでUAGと連携する記事って意外となく、たいていの情報は海外にありました。certificate.これを用いてスクリプトを作ることにしました。作ったスクリプトは以下のような内容です。ファイルは定義ファイルと実行ファイルに分かれていて、定義ファイルに対してはパーミッション600に設定しています。API用の受け口として提供されたURLに向けて、以下のようなJSONデータを投げ込んでいます。認証はBASIC認証を用いればよいようです。"string"}stringの中には証明書データの中身を格納させる必要があります。CERT...というような先頭・末尾にあるような行も含める必要があります(文字列マッチングに利用しているようだ)。この時改行コードなどに対する一定の文字列変換が必要になるため、いったんJSONフォーマットに格納してから文字列変換を行い、それをcurlに渡すようにしています。$TEMPFILE2私の環境ですと、一定期間のサイクルで常に最新の証明書が定められた特定のディレクトリに配置されています。これは私の環境ではLegoで更新しています。これで更新されたファイルから証明書データを抜き出して、JSONに成型して変換し、UAGへ送るということをしているだけですね。仕上げとしては、我が家で稼働しているRundeck環境にこのスクリプトのジョブとスケジュールを組み込んで回すだけです。うまくスクリプトが動作すると、UAGからは投入した証明書データの情報が出力されます。失敗するとエラーメッセージが返ってきます。