📑

FileMaker Server 2024で標準サポートされたLet's Encryptを使ってTLS証明書を自動更新する

2024/10/23に公開

はじめに

FileMaker Server 2024から、Let's EncryptによるTLS(SSL)証明書の自動更新が標準サポートされました。もともとLet's Encryptで取得した証明書はFileMaker Serverで利用可能でしたが、自動で更新する仕組みを作るのはかなり大変でした。今回、TLS証明書を自動で更新するスクリプトが公式に用意されたことで、設定がかなり容易になりました。この記事では、FileMaker Server 2024でLet's Encryptを使ってTLS証明書を自動更新する手順を紹介します。

公式ドキュメントはこちらです。

Let's Encryptの動作の仕組みについては、こちらを参照してください。

前提条件

この記事では、以下の環境を前提としています。あてはまらない場合は、公式ドキュメント等を参照してください。

  • Apple Silicon搭載のMacにFileMaker Server 2024をインストールしている
  • 独自ドメインを取得しており、FileMaker Serverに設定済みである
  • 80番ポートがインターネット側からアクセス可能である

事前準備

Let's Encryptを利用するには、certbotをインストールする必要があります。Macにcertbotをインストールするには、事前にHomebrewをインストールしておく必要があります。

Homebrewのインストール

Homebrewをまだインストールしていない場合は、以下のコマンドでインストールしてください。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

つづいて、次のコマンドを実行してHomebrewのパスを通します。

(echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> /Users/$USER/.zprofile
zsh
eval "$(/opt/homebrew/bin/brew shellenv)"

動作確認してみましょう。次のコマンドを実行して、Homebrewのバージョンが表示されればOKです。

brew -v

certbotのインストール

次のコマンドを実行して、certbotをインストールします。

brew install certbot

これで事前準備は完了です。

スクリプト変数の変更

編集する必要のあるスクリプトは、以下の2つです。

  • fm_request_cert.sh
  • fm_renew_cert.sh

どちらも、/Library/FileMaker Server/Tools/Lets_Encryptディレクトリに格納されています。このディレクトリは、FileMaker Server 2024のインストール時に自動的に作成されます。テキストエディタを用いて、それぞれのスクリプトを編集してください。テキストエディタは、VSCodevimなどがおすすめです。

fm_request_cert.shの編集

fm_request_cert.shは、TLS証明書の初回取得時に実行するスクリプトです。以下の変数を編集してください。

  • PROMPT: 1を設定すると、以下の設定値を無視して対話型で設定値の入力を求められます。通常は0を設定しておきましょう。
  • RESTART_SERVER: 1を設定すると、証明書の取得後にFileMaker Serverを再起動します。テスト中は安全のため、必ず0を設定しておきましょう。
  • DOMAIN: FileMaker Serverに設定したドメイン名を設定します。例: example.com
  • EMAIL: Let's Encryptからの通知を受け取るメールアドレスを設定します。
  • TEST_CERTIFICATE: 1を設定すると、Let'S Encryptのリクエストを消費せずに設定のテストが出来ます。最初は必ず1を設定しておきましょう。
  • UPDATE_EXISTING_CERT: 1を設定すると、既存の証明書を更新します。通常は1を設定しておきましょう。

その他の変数は、デフォルト値のままにしてください。

fm_renew_cert.shの編集

fm_renew_cert.shは、証明書の更新を自動化するスクリプトです。編集すべき変数はfm_request_cert.shと同じです。fm_request_cert.shが正常に動作していれば、TEST_CERTIFICATEの値は最初から0でいいかもしれません。

環境変数の設定

各スクリプトはAdmin Consoleを呼び出す関係上、認証情報を必要とします。スクリプトに直接認証情報を記述するのは危険なので、環境変数を用いて認証情報を設定します。まずは、以下のコマンドでユーザー名を設定しましょう。

export FAC_USERNAME={ユーザー名}

続いて、パスワードを設定します。

export FAC_PASSWORD={パスワード}

これで環境変数の設定は完了です。

証明書の取得

TEST_CERTIFICATEに0が設定されていることを確認してから、次のコマンドを実行してください。

cd /Library/FileMaker\ Server/Tools/Lets_Encrypt
sudo -E ./fm_request_cert.sh

sudoの-Eオプションは、環境変数を引き継ぐために必要です。エラーが発生した場合は、エラーメッセージをよく読んで対応してください。一例として、443番ポートだけ開放して80番ポートを開放し忘れているとLet's Encryptの認証に失敗します。

スクリプトが正常に終了した場合は、TEST_CETIFICATEを1に変更してから再度実行してください。証明書の取得に成功すると、証明書が/Library/FileMaker Server/CStore/Certbot/live/ディレクトリに保存されます。

証明書の更新

続いて、証明書の更新をテストします。

sudo -E ./fm_renew_cert.sh

エラーなくスクリプトが完了することを確認してください。正常に終了した場合は、次のようなメッセージが最後に表示されます。

Please restart the FileMaker Server service to apply the change.
Lets Encrypt certificate renew script completed without any errors.

スケジュールの設定

証明書の更新が正常に動作することを確認したら、スケジュールを設定して自動更新されるようにします。FileMaker Server Admin Consoleにログインし、「構成 → スケジュール」を開き、「スケジュールの作成」をクリックしてください。

スケジュールの作成

設定内容は以下の通りです。

  • スケジュールタイプ: システムスクリプト
  • スケジュール名: 任意の値(例: LetsEncrypt)
  • デフォルト以外のアカウントを使用: 必要に応じてチェック、および認証情報を設定
  • システムスクリプト: Sys_Default_ReloadLetsEncryptCertificate
  • 頻度: 毎日

設定を保存したら、作成したスケジュールを選択して「今すぐ実行」をクリックしてテストしましょう。証明書の更新が成功すると、Event.logに以下のようなメッセージが記録されます。

証明書のインポートに成功しました。発行先: [example.com]。発行元: [C=US, O=Let's Encrypt, CN=E5]。有効期限: [Jan 20 03:39:51 2025 GMT]。

これで証明書の自動更新設定が完了しました。サーバーを再起動すると、新しい証明書が適用されます。

Discussion