Let`Encrypt で FileMaker Server をSSL化する

Let`Encrypt

Let`Encrypt とは非営利団体の Internet Security Research Group が運営している証明書認証局です。
「全てのWebサーバへの接続を暗号化」という理念に賛同した大手スポンサーから支援されており、SSL証明書の発行を無料で行うことができます。

Let`Encrypt の有効期限

Let`Encrypt の発行する証明書は90日間の有効期限になります。
他の証明書は1年間の期限が殆どで、比較的短いです。

なぜ短いのかは、参考にした解説サイトによると以下の理由が挙げられます。

  • 漏洩した秘密鍵や誤発行された証明書が短い期間で無効になり、被害を抑えられる
  • 証明書更新作業の自動化を促進し、煩わしい手動での更新をなくす事ができる

決して短いことがデメリットである訳ではなく、
上記のようなメリットもあり、運用次第では有効期限が長いものと同様に使用することもできます。

参考:証明書の有効期間が90日間な理由 – Let’s Encrypt 総合ポータル
 https://free-ssl.jp/blog/2015-11-09.html

今回はそんな Let`Encrypt から証明書を自動取得しつつ、FileMaker Server をSSL化する仕組みを構築してみたので、それまでの手順を備忘録として残しつつ、皆様に共有したいと思います。

構築するサーバのスペック

今回は以下のスペックでサーバを構築します。

項目情報
OSUbuntu Server 20.04
FileMaker ServerFMS_19.6.3.302_Ubuntu20
AWS EC2 インスタンスt2.micro(無料枠の対象)

AWS の EC2 で構築していきます。

また、今回は検証のため無料枠のインスタンスタイプで構築しますが、FileMaker Server を実際に運用する際は、推奨のハードウェア条件を満たしたスペックで構築が必要となります。

参考:Claris FileMaker 19.4 〜 19.6 動作環境
  https://support.claris.com/s/answerview?language=ja&anum=000035714


環境構築

EC2 でサーバ構築

下準備として以下のものを用意します。

  • AWS のアカウント
  • Dyanamic Do.jp のアカウント

Dynamic Do.jp とは無料でドメイン提供を行なっているDDNSサービスです。

今回はこのサービスを利用してサーバのドメインを設定します。

Dynamic DO!.jpへのアクセス:http://ddo.jp/


インスタンスの起動

AWS Management Console にサインインしてホームに移動し、
右上のリージョンの設定を東京にします

検索から EC2 のサービスを選択します。

ダッシュボードから「インスタンスを起動」を選択して、
インスタンス起動画面に移動します。

インスタンス起動画面では主に以下の項目を設定します。

  • サーバ名
  • Amazon マシンイメージ(AMI)
  • インスタンスタイプ
  • キーペア
  • ネットワーク設定
  • ストレージ設定

OS は Ubuntu Server 20.04 で構築するので、
AMI を選択するメニューの検索窓で Ubuntu と検索します。

検索するといくつかのAMI候補が出てくるので、
そこから無料枠の Ubuntu Server 20.04 を選択します。

インスタンスタイプはt2.microを選択します

新しいキーペアを作成して設定しました。

その他の設定はデフォルトにしました。
設定が終わったら右のメニューからインスタンスを起動をクリック

以上でインスタンスの作成が完了します。


インバウンドルールを設定

今回は以下の受信ポートを開ける必要があります。

ポート用途
16001FileMaker Server
5003FileMaker Server
443FileMaker Server、Let`Encrypt
80FileMaker Server、Let`Encrypt
22SSH

そのため、インスタンスのインバウンドルールを設定していきます。

インスタンス一覧から指定のインスタンスを選択して、
画面下のセキュリティタブから設定されているセキュリティグループを選択します。

設定画面からインバウンドのルールを編集を選択します。

画像の通りにルールを設定して保存を選択します。
以上でインバウンドルールの設定が完了します。


Elastic IP、ドメイン設定

EC2 のサイドメニューで Elastic IP を選択して、
そこから右上の Elastic IP アドレスを割り当てるを選択します。

特に変更せず割り当てを選択します。

割り当てが完了したら Elastic IP をインスタンスに紐付けていきます。
アクションから Elastic IP の関連付けを選択します。

以下のように設定したら関連付けるを選択します。
インスタンス→今回作成したインスタンス
プライベートIPアドレス→インスタンスのプライベートIPアドレス

以上で Elastic IP を設定できたので、次はそのIPと紐づくドメインを設定します。

Dynamic DO!.jp へアクセスして、「ddo.jp サブドメイン DDNS 無料登録」から
希望ドメイン名を入力して、無料登録を選択します。

利用規約の方を読んだ後、下にある登録情報を適宜入力します。
入力したら登録内容確認を選択します。

進めていくと登録確認メールが届くので、確認用のURLを選択します。
選択することで登録が完了、ドメインが取得できました。

今度は取得したドメインと先ほど設定した Elastic IP を紐付けます。
Dynamic DO!.jp のトップ画面で無料サービスのIP更新を選択します。

無料登録者向けのフォームが出るので、三つの項目に記載していきます。
・登録ドメイン:先ほど取得したドメイン
・IPアドレス:インスタンスに紐付けた Elastic IP
・パスワード:ドメイン取得時のパスワード
上記を入力したらIPアドレス更新を選択します。

以上でElastic IPとドメインを紐付けることが完了しました。


Certbotで証明書を取得

作成したインスタンスに接続して、certbot からの証明書取得を行います。
複数の方法で接続することができますが、今回はSSH接続で作業をしていきます。


インスタンスにSSH接続

CUIコンソールを開いて、以下のコマンドを実行します。
※実行前にプライベートキーファイルが存在するフォルダに移動する
  >ssh -i “〇〇.pem”ubuntu@〇〇.ddo.jp

〇〇.pem→インスタンス起動時に作成したキーファイルの名前

〇〇.ddo.jp→インスタンスに紐づけたドメイン

実行することでインスタンスにSSH接続することができます。


Certbotから証明書を取得

以下のコマンドを実行して、certbotをインストールします。
  >sudo apt update
  >sudo apt install certbot

インストールできたら以下のコマンドで Let`Encrypt から証明書を取得します。
  >certbot certonly

コマンドを実行するとドメイン認証方法についての質問がきますので、
1を選択します。

How would you like to authenticate with the ACME CA?
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
1: Spin up a temporary webserver (standalone)
2: Place files in webroot directory (webroot)
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

続いて、ドメイン登録した際のメールアドレスを入力します
Enter email address
xxxx@gmail.com

利用規約を読んだ後に同意します
——————————————————————————-
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
——————————————————————————-

メールアドレスの利用についてでこちらも同意します
——————————————————————————-
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let’s Encrypt project and the non-profit
organization that develops Certbot? We’d like to send you email about EFF and
our work to encrypt the web, protect its users and defend digital rights.
——————————————————————————-

サーバのドメイン名を入力します。
Please enter in your domain name
>〇〇.ddo.jp

以上で下記フォルダにサーバ証明書が作成されます。
>etc/letsencrypt/live/〇〇.ddo.jp/


FileMaker ServerにSSL設定

取得した証明書と秘密鍵で FileMaker Server にSSL設定を行います。
Ubuntu での FileMaker Server のインストール方法は下記URLを参照ください。

参考:FileMaker Server のインストール(Ubuntu Linux)
https://community.claris.com/ja/s/article/FileMaker-Server-Linux-OnPrem-VolumeLicense


取得した証明書を FileMaker Server の CStore フォルダにコピー

>sudo cp /etc/letsencrypt/live/〇〇.ddo.jp/cert.pem
/opt/FileMaker/FileMaker Server/CStore/

>sudo cp /etc/letsencrypt/live/〇〇.ddo.jp/chain.pem 
/opt/FileMaker/FileMaker Server/CStore/

>sudo cp /etc/letsencrypt/live/〇〇.ddo.jp/privkey.pem   
/opt/FileMaker/FileMaker Server/CStore/

証明書を FileMaker Server にインポート
>fmsadmin certificate import /opt/FileMaker/FileMaker Server/CStore/cert.pem –keyfile /opt/FileMaker/FileMaker Server/CStore/privkey.pem 
–intermediateCA /opt/FileMaker/FileMaker Server/CStore/chain.pem

FileMaker Server を再起動
>sudo service fmshelper stop
>sudo service fmshelper start

以上で FileMaker Server のSSL設定が完了しました。


CRON で自動化

CRON はプログラムを定期的に実行してくれます。
WindowsOS でいうタスクスケジューラのようなものです。

これを使って、定期的に証明書の更新を行います。


証明書更新を自動化

cronのフォーマットをコピーします。
>sudo cp /etc/crontab /etc/cron.d/certbot

(certbotという名前でコピー)

コピーしたフォーマットを編集します。
>sudo vi /etc/cron.d/certbot

以下のように記載します。
>​​00 1,13 * * * root certbot renew –no-self-upgrade

毎日1:00と13:00に管理者権限で「certbot renew」というコマンドを実行します。

これによって、証明書の有効期限切れが近くなっていた場合は、
自動的に更新作業を行なってくれます。


FileMaker Server のSSL設定を自動化

cronのフォーマットをコピーします。
>sudo cp /etc/crontab /etc/cron.d/filemaker

(filemakerという名前でコピー)

コピーしたフォーマットを編集します。
>sudo vi /etc/cron.d/filemaker

以下のように記載します。
15 1 * /3 * * 
fmsadmin certificate delete

16 1 * /3 * * 
sudo cp /etc/letsencrypt/live/〇〇.ddo.jp/cert.pem
/opt/FileMaker/FileMaker Server/CStore/

17 1 * /3 * * 
sudo cp /etc/letsencrypt/live/〇〇.ddo.jp/chain.pem 
/opt/FileMaker/FileMaker Server/CStore/

18 1 * /3 * * 
sudo cp /etc/letsencrypt/live/〇〇.ddo.jp/privkey.pem
/opt/FileMaker/FileMaker Server/CStore/

20 1 * /3 * * 
fmsadmin certificate import /opt/FileMaker/FileMaker Server/CStore/cert.pem –keyfile /opt/FileMaker/FileMaker Server/CStore/privkey.pem 
–intermediateCA /opt/FileMaker/FileMaker Server/CStore/chain.pem

​​25 1 * /3 * * 
sudo service fmshelper stop

​​30 1 * /3 * * 
sudo service fmshelper start

3ヶ月ごとに更新した証明書を FileMaker Server にインポートするコマンドを実行します。

これによって、ユーザが手動でインポートする必要がなくなります。
最後に以下のコマンドを実行してCronの設定は完了します。
>sudo systemctl restart crond


まとめ

以上が Let`Encrypt で FileMaker Server をSSL化し、
そして証明書を自動更新する仕組みを構築する手順になります。

Let`Encrypt は Claris社からサポートされてないので
ご利用の際は自己責任となります。

感想ですが、SSL証明書の自動更新は魅力的だなと思いました。
(年明けの証明書の更新が結構大変…)
今後もLinux関係で役立つ機能があれば記事にしたいと思います。
ご覧いただきありがとうございました。

TUBA

Linux学習中

ロゴ:Claris Partner PLATINUM
Claris パートナーの中でも最上位のPLATINUMレベルメンバーとして、Claris FileMaker を活用したソリューションを提供いたします。
FileMaker 、ファイルメーカー、 FileMaker Cloud 、 FileMaker Go およびファイルフォルダロゴは、
Claris International Inc. (旧 FileMaker, Inc.)の米国および/またはその他の国における登録商標です。
アイコン:ページトップへ