日付が来週以内であることを確認してください。

日付が来週以内であることを確認してください。

LetsEncryptを使用してSSLを自動的に更新するスクリプトを作成します。

毎日のスクリプトは最初にSSLの有効期限を確認します。

response="$(openssl x509 -enddate -noout -in ~/letsencrypt/www.mydomain.com/cert.pem)"

$responseはいnotAfter=May 9 19:27:44 2018 GMT

今日の日付と比較して、時差が7日以下であることを確認したいと思います。擬似コード:

if [$response is less than 7 days away from today] then cd ~/letsencrypt $$ ~/dehydrated/dehydrated --cron --domain www.mydomain.com --out . --challenge http-01

どうすればいいですか?

$responseより実行可能な形式に変換しようとしましたが、エラーがdate -d発生します。date: extra operand ‘19:27:44’

ベストアンサー1

ご要望のある質問ではなく、実際の懸念事項を解決いたします。dehydrated --cron日付が確認されました。

文書:

--cron-c)存在しない/変更/期限切れの証明書に署名/更新します。

パスワード:

# Check expire date of existing certificate
if [[ -e "${cert}" ]]; then
  echo " + Checking expire date of existing cert..."
  valid="$("${OPENSSL}" x509 -enddate -noout -in "${cert}" | cut -d= -f2- )"

  printf " + Valid till %s " "${valid}"
  if "${OPENSSL}" x509 -checkend $((RENEW_DAYS * 86400)) -noout -in "${cert}"; then
    printf "(Longer than %d days). " "${RENEW_DAYS}"
    if [[ "${force_renew}" = "yes" ]]; then
      echo "Ignoring because renew was forced!"
    else
      # Certificate-Names unchanged and cert is still valid
      echo "Skipping renew!"

https://github.com/lukas2511/de线/blob/master/de线#L1234-L1253)

RENEW_DAYSデフォルトは30のようですが、構成ファイルを使用してそれを上書きできます。文書:

deHydrated は、さまざまな場所で構成ファイルを探し、次の順序で見つかった最初のファイルを使用します。

  • /etc/dehydrated/config
  • /usr/local/etc/dehydrated/config
  • シェルの現在の作業ディレクトリ
  • 脱水を実行するディレクトリ

サンプル構成ファイルには、次の行が含まれています。

# Minimum days before expiration to automatically renew certificate (default: 30)
#RENEW_DAYS="30"

たとえば、値をデフォルトの30日から7日に下げるには、2行目を次のように編集します。

RENEW_DAYS="7"

おすすめ記事