FileMakerServerを稼働させる必要が出てきた。
単純にインストール、コンテンツをいれてサービス開始は無事に出来るのだが、
インターネット経由で外部からアクセスを有効にするには、パスワードによる保護は当然のほか、そのアクセス経路にも工夫を入れたいところ。
ここでは無料SSL証明書のLet's Encryptの証明書をFileMakerServerに組み込んでよりセキュアな運用を作ってみる
環境は mac mini Late 2012、macOS Catalina, 10.15.7、FileMakerServer 19.4.2.204

*そもそもそオンプレミスで構築するサイトは少なくなって、ほとんどが「Claris FileMaker Cloud」に移っているかと思うけど..

FileMakerServerをインストールするとディスクトップに「Claris FileMaker Server Admin Console.webloc」とFileMakerServerをコントロールするWebサービスへのブックマークみたいなものが置かれる.

まずはこれをダブルクリックします。
2022y04m19d_200439268.png

するとブラウザが立ち上がってインストール時に指定したアカウントとパスワードの入力を経て、サービス制御画面に移ります。
2022y04m19d_201512133.png

FileMakerServerのSSL証明書

インストール時に用意できない場合は簡便にClaris側で用意されているSSL証明書を利用できます。
これを差し替えるには

上段メニューの「構成」を開き、左メニューから「SSL証明書」を選びます。
画面は下記のようになります。

2022y04m19d_202021928.png

ここで「カスタム証明書のインポート」ボタンを押下して Let's Encrypt で得られた証明書を組み込む

2022y04m19d_202148980.png

そのためには

brewのインストール

事前に「Command Line Tools for Xcode」が必要なようで、ターミナルを立ち上げて

mini:~ supervisor$ xcode-select --install

を実行します。

その後に

mini:~ supervisor$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

を実行する。実行中にsudoが聞かれるので、自身のパスワードを入力すれば進む。
(2022.04) brewコマンドは「/usr/local/Homebrew/bin」に置かれる. 以前は「/usr/loal/bin」だったのだが変わった模様
一応、「.bashrc」の末尾にHomebrewのパスを入れておく.

mini:~ supervisor$ vi .bashrc
 :
 :
export PATH=/usr/local/Homebrew/bin:$PATH
 
mini:~ supervisor$

新たなターミナルを開いて brew を実行してみる

mini:~ supervisor$ brew --version
Homebrew 3.4.7
Homebrew/homebrew-core (git revision e0bdda4fa8; last commit 2022-04-18)
 
mini:~ supervisor$

一応、インストール方法をしめしたので、反対にその削除方法も示す.

mini:~ supervisor$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

っと単に、同じコマンドだけど、引数の最後の部分が「uninstall」となるだけ

certbotをインストールする

っで肝心の certbot をインストールする

brew install certbot
 
(削除は)
brew uninstall certbot

証明書を取得する(準備編)

  • 名前
  • httpサービス
  • port

の確認が必要みたい.

まず外向けに名前を持っていることが必須で、
例えば外向きに「f.chaperone.jp」なる名前でFileMakerServerを運用するとして、この「f.chaperone.jp」がDNSで引けることが必要です。

mini:~ supervisor$ nslookup
> server 8.8.8.8
Default server: 8.8.8.8
Address: 8.8.8.8#53
> f.chaperone.jp
Server:         8.8.8.8
Address:        8.8.8.8#53
 
Non-authoritative answer:
f.chaperone.jp  canonical name = c.chaperone.jp.
Name:   c.chaperone.jp
Address:  XXX.XXX.XXX.XXX
> exit
 
mini:~ supervisor$

そしてhttpサービスを経由して「SSL証明書」を頂くのですが、その経路としてhttpサービスを certbot 自身に負わせて取得するか「--standalone」、既にサーバーに備え付けのhttpサービスを代用して取得するか(--webroot)を選びます.

ここではインストールしたFileMakerServer備え付けhttpサーバが動いているので、これを拝借します。

mini:~ supervisor$ ps -ef |grep http
    0   382     1   0  1:10PM ??         0:02.09 /usr/sbin/httpd -k start -D FILEMAKER -f /Library/FileMaker Server/HTTPServer/conf/httpd.conf
  502   388   382   0  1:10PM ??         0:00.04 /usr/sbin/httpd -k start -D FILEMAKER -f /Library/FileMaker Server/HTTPServer/conf/httpd.conf
  502   393   382   0  1:10PM ??         0:00.03 /usr/sbin/httpd -k start -D FILEMAKER -f /Library/FileMaker Server/HTTPServer/conf/httpd.conf
  502   395   382   0  1:10PM ??         0:00.01 /usr/sbin/httpd -k start -D FILEMAKER -f /Library/FileMaker Server/HTTPServer/conf/httpd.conf
  502   396   382   0  1:10PM ??         0:00.04 /usr/sbin/httpd -k start -D FILEMAKER -f /Library/FileMaker Server/HTTPServer/conf/httpd.conf
  502   397   382   0  1:10PM ??         0:00.02 /usr/sbin/httpd -k start -D FILEMAKER -f /Library/FileMaker Server/HTTPServer/conf/httpd.conf
  502   398   382   0  1:10PM ??         0:00.02 /usr/sbin/httpd -k start -D FILEMAKER -f /Library/FileMaker Server/HTTPServer/conf/httpd.conf
  502   399   382   0  1:10PM ??         0:00.03 /usr/sbin/httpd -k start -D FILEMAKER -f /Library/FileMaker Server/HTTPServer/conf/httpd.conf
  502   400   382   0  1:10PM ??         0:00.03 /usr/sbin/httpd -k start -D FILEMAKER -f /Library/FileMaker Server/HTTPServer/conf/httpd.conf
  501 27367 92289   0 10:58PM ttys001    0:00.00 grep http
mini:~ supervisor$

次にportの話.
こちらかコマンドを実行して、次に相手側からこちら側の稼働のwebサーバにアクセスが必要です。 まぁ外向けに作っているのなら当然ですが
もしFWの内部で置いてポートフォワーディングで外向けサービスをするなら、80と必要ならFileMakerのポートも開ける必要があります.
それに加えて、既に80番でポートフォワードを受けている内部のwebサービスがあるなら、apacheで言うところの「VirtualHost」と「ProxyPass」の出番です
80番でポートフォワードを受けているwebサービスには下記のような文言を入れて、「f.chaperone.jp」で受けたらそれを「mini.sybyl.local」に流すようにします。

<VirtualHost *:80>
    ServerName   f.chaperone.jp
    ProxyPass /  http://mini.sybyl.local/
    ProxyPassReverse /  http://mini.sybyl.local/
</VirtualHost>

証明書を取得する(実施編)

一時的に書き込まれるファイルは「-w」で指定して、ここではFileMakerServerのwebサービスで
コンテンツが置かれている場所「"/Library/FileMaker Server/HTTPServer/htdocs/" 」を指定してます。
「-d」は外から見たときのホスト名(外部DNSで引けること)
「--agree-tos」は利用規約への同意を意図してます。指定しないと問われます。
「--register-unsafely-without-email」はメールアドレスの登録をしないで進む

mini:~ supervisor$ sudo certbot certonly --webroot -w "/Library/FileMaker Server/HTTPServer/htdocs/" -d f.chaperone.jp --register-unsafely-without-email --agree-tos
Password:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Requesting a certificate for f.chaperone.jp
 
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/f.chaperone.jp/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/f.chaperone.jp/privkey.pem
This certificate expires on 2022-07-18.
These files will be updated when the certificate renews.
 
NEXT STEPS:
- The certificate will need to be renewed before it expires. Certbot can automatically renew the certificate in the background, but you may need to take steps to enable that functionality. See https://certbot.org/renewal-setup for instructions.
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
mini:~ supervisor$

頂いたファイルは「/etc/letsencrypt/live/f.chaperone.jp/」に置かれる

mini:~ supervisor$ ls -l /etc/letsencrypt/live/f.chaperone.jp/
total 8
-rw-r--r--  1 root  wheel  692 Apr 19 23:41 README
lrwxr-xr-x  1 root  wheel   38 Apr 19 23:41 cert.pem@ -> ../../archive/f.chaperone.jp/cert1.pem
lrwxr-xr-x  1 root  wheel   39 Apr 19 23:41 chain.pem@ -> ../../archive/f.chaperone.jp/chain1.pem
lrwxr-xr-x  1 root  wheel   43 Apr 19 23:41 fullchain.pem@ -> ../../archive/f.chaperone.jp/fullchain1.pem
lrwxr-xr-x  1 root  wheel   41 Apr 19 23:41 privkey.pem@ -> ../../archive/f.chaperone.jp/privkey1.pem
 
mini:~ supervisor$

FileMakerServerへ登録

「/etc/letsencrypt/live/f.chaperone.jp」に存在するcert.pem と privkey.pem が必要。
だが、リンクファイルではだめで、実態のファイルが必要になる。

その場合「/etc/letsencrypt/archive/f.chaperone.jp/」に実態があるのだが、

mini:~ supervisor$ ls -l /etc/letsencrypt/archive/f.chaperone.jp/
total 40
-rw-r--r--  1 root  wheel  1838 Apr 19 23:41 cert1.pem
-rw-r--r--  1 root  wheel  3749 Apr 19 23:41 chain1.pem
-rw-r--r--  1 root  wheel  5587 Apr 19 23:41 fullchain1.pem
-rw-------  1 root  wheel  1704 Apr 19 23:41 privkey1.pem
 
mini:~ supervisor$

「cert1.pem」は持っていけても、「privkey1.pem」はchmodを施す必要がある。

mini:~ supervisor$ sudo cp -r /etc/letsencrypt/archive/f.chaperone.jp ~/
 
mini:~ supervisor$ sudo chown -R supervisor ./f.chaperone.jp/
 
mini:~ supervisor$ ls -l f.chaperone.jp/
total 40
-rw-r--r--  1 supervisor  staff  1838 Apr 19 23:49 cert1.pem
-rw-r--r--  1 supervisor  staff  3749 Apr 19 23:49 chain1.pem
-rw-r--r--  1 supervisor  staff  5587 Apr 19 23:49 fullchain1.pem
-rw-------  1 supervisor  staff  1704 Apr 19 23:49 privkey1.pem
 
mini:~ supervisor$

この2つを何処かに配置して、署名済みの証明書ファイルに「cert1.pem」、プライベートキーファイルに「privkey1.pem」を当てて「インポート」ボタンを押下します
2022y04m19d_235256647.png

証明書が読み込まれて
2022y04m19d_235259370.png

無事取り込みが終了します
2022y04m19d_235307938.png

「構成」->「SSL証明書」から証明書情報を見ると下記のようになっている
2022y04m19d_235323762.png

接続

FileMakerProからアクセスするとアプリの右上に下記のようなマークが表示されて
2022y04m20d_021002352.png

それを押下すると証明書の情報が表示される.
2022y04m20d_021136432.png

3ヶ月更新

ただし、この証明書は3ヶ月で切れます。
なのでcronとかで定期的に発行させ、反映させる必要がある。

cert.pem、privkey1.pemらはリンクファイルとさせれば、更新だけで済むのかな?

sudo /usr/local/bin/certbot renew
/etc/letsencrypt/renewal/fm.sysosa.jp.conf

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
# renew_before_expiry = 30 days
version = 0.33.0
archive_dir = /etc/letsencrypt/archive/fm.sysosa.jp
cert = /etc/letsencrypt/live/fm.sysosa.jp/cert.pem
privkey = /etc/letsencrypt/live/fm.sysosa.jp/privkey.pem
chain = /etc/letsencrypt/live/fm.sysosa.jp/chain.pem
fullchain = /etc/letsencrypt/live/fm.sysosa.jp/fullchain.pem
 
# Options used in the renewal process
[renewalparams]
account = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
authenticator = webroot
server = https://acme-v02.api.letsencrypt.org/directory
[[webroot_map]]
#fm.sysosa.jp = /Library/FileMaker Server/HTTPServer/htdocs
fm.sysosa.jp = /Library/WebServer/Documents

backup

FileMakerServerにはバックグラウンドでバックアップを指定の場所においてくれます。
ですが、既定では最近7日間のデータは保持するものの、それ以上古いのは設定を変更する必要がある。

だが、その設定を修正するよりもmacOSに備わった rsync と cron を使って無制限にしたいと思った。
デバイスが溢れそうになれば、その都度削除すればいいし、外付けHDDにも保存とか多重で保存を考えればそっちがいいかなと

っで、まずはスクリプトを作成します

mini:~ supervisor$ mkdir script
mini:~ supervisor$ cd script/
mini:script supervisor$
 
mini:script supervisor$ vi backup.sh
#!/bin/bash
IFS=$'\n'
#
FM="/Library/FileMaker Server/Data/Backups/"
B1="/Users/supervisor/Downloads/fm_backup/"
 
if [ -d $FM ]; then
echo ok
   rsync -av --log-file=$B1/rsync-`date +"%Y%m%d-%H%M"`.txt $FM $B1
fi
 
mini:script supervisor$
 
(crontabの設定)
 
mini:script supervisor$ crontab -e
#
# min,hour,day,month,day of week, command
#
MAILTO=""
30 0 * * *  bash /Users/supervisor/script/backup.sh
 
mini:script supervisor$

既定のFileMakerServerのバックアップは午前0時に行うので、その30min後 午前0時半位に実行すればいいかなと。

最大でも99日みたい。それ以上補完すると


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2022-04-21 (木) 01:46:31 (67d)