FileMaker ServerにLet's EncryptのSSL証明書を設定する
FileMaker Server(Windows Server)にLet’s EncryptのSSL証明書を設定する際のメモ。
FileMakerでは、Let’s Encryptはサポートされていないため、すべて自己責任でチャレンジしてください。
更新
2019-02-02
以下の記事を書きましたので、よろしければご覧ください。
legoを使ってLet’s EncryptのSSL証明書をDNS認証で発行しFileMaker Serverに設定する方法
作業自体は簡単ですので、開発環境で使う場合など、チャレンジするのは良いと思います。
ちなみに、私はLet’s Encryptを利用しています。
環境
- Windows Server 2016 Datacenter(GCP Compute Engine)
- FileMaker Server 17
- win-acme.v1.9.11.2
作業の前にやったこと
ドメイン
- GCP Cloud DNSにて管理しているドメイン(frudens.app)にサブドメイン(hoge.frudens.app)を追加。
- 追加したサブドメイン(hoge.frudens.app)のAレコードにFileMaker ServerのIPを設定。
Windows Server
- GCP Compute EngineでWindows Serverを起動。
- GCPのファイアーウォールを適切に設定。
- Windows Serverのファイアーウォールを設定。
- FileMaker Serverをインストール。
Windows Server IISを設定する
IISを確認する
サーバーマネージャーからインターネットインフォメーションサービス(IIS)マネージャー
を選択する。
画面左の接続
からサイト > FMWebSite
を選択する。
画面右の操作
からバインド
を選択する。
サイトバインドを設定する
FileMaker Serverがインストールされているので、ポート(16000)も設定されています。
ポート80
の行を選択し編集
を選択します。(もしくはダブルクリック)
ホスト名にhoge.frudens.app
を入力します。
80
と同じように443
も16000
も、hoge.frudens.app
を入力します。
Let’s Encryptを実行するための準備
win-acmeのダウンロード
win-acme
は、Let’s Encryptの証明書の発行作業を、コマンドラインから簡単に実行するためのCLIツールです。
ということで、ダウンロードし展開しましょう。
https://github.com/PKISharp/win-acme/releases
展開する場所はどこでも大丈夫です。今回、私はデスクトップに展開しました。
Webサーバのルートにフォルダを作成する
FileMaker Serverをインストールしたフォルダによってルートは変わりますが、デフォルトの場合は以下のフォルダがWebサーバのルートになるはずです。
1C:\Program Files\FileMaker\FileMaker Server\HTTPServer\conf
conf
の下が.well-known/acme-challenge
となるようにフォルダを作成します。
Windowsだと、GUIからでは.フォルダ
が作れないと思いますので、コマンドプロンプトなど使ってmkdir
してください。
1C:\Program Files\FileMaker\FileMaker Server\HTTPServer\conf\.well-known\acme-challenge
以下のような感じになると思います。
Let’s Encryptのファイルを移動しrenameする
win-acme
を展開したフォルダの中にあるWeb_Config.xml
を、上記で作成したフォルダ\acme-challenge\
に移動し、web.config
にrenameします。
こんな感じのイメージです。
letsencrypt.exeを実行する
準備が整いましたのでletsencrypt.exe
を実行します。
CLIツールが起動します。
CLIツールの質問に従い、順番に入力していくと完了します。
1 [INFO] A Simple ACME Client for Windows (WACS)
2 [INFO] Software version 1911.2.6726.40690 (RELEASE)
3 [INFO] IIS version 10.0
4 [INFO] ACME server https://acme-v01.api.letsencrypt.org/
5 [INFO] Please report issues at https://github.com/PKISharp/win-acme
6
7 N: Create new certificate
8 M: Create new certificate with advanced options
9 L: List scheduled renewals
10 R: Renew scheduled
11 S: Renew specific
12 A: Renew *all*
13 V: Revoke certificate
14 C: Cancel scheduled renewal
15 X: Cancel *all* scheduled renewals
16 Q: Quit
17
18 Please choose from the menu: n
19
20 [INFO] Running in Simple mode
21
22 1: Single binding of an IIS site
23 2: SAN certificate for all bindings of an IIS site
24 3: SAN certificate for all bindings of multiple IIS sites
25 4: Manually input host names
26 C: Cancel
27
28 Which kind of certificate would you like to create?: 2
29
30 1: FMWebSite
31 C: Cancel
32
33 Choose site: 1
34
35 * hoge.frudens.app
36
37 Press enter to include all listed hosts, or type a comma-separated lists of exclusions:
38
39 [INFO] Plugin IISSite generated target [IISSite] FMWebSite (SiteId 2) [1 binding - hoge.frudens.app @ C:\Program Files\FileMaker\FileMaker Server\HTTPServer\conf\]
40 [INFO] Authorize identifier: hoge.frudens.app
41 [INFO] Cached authorization result: valid
42 [INFO] Requesting certificate FMWebSite 2018/9/15 15:03:41 ??
43 [INFO] Saving certificate to C:\ProgramData\win-acme\httpsacme-v01.api.letsencrypt.org
44 [INFO] Installing certificate in the certificate store
45 [INFO] Adding certificate FMWebSite 2018/9/15 15:03:41 ?? to store WebHosting
46 [INFO] Installing with IIS...
47 [INFO] Updating existing https binding hoge.frudens.app:443
48 [INFO] Updating existing https binding hoge.frudens.app:16000
49 [INFO] Committing 2 https binding changes to IIS
50 [INFO] IIS will serve the new certificates after the Application Pool IdleTimeout has been reached.
51 [INFO] Uninstalling certificate from the certificate store
52 [INFO] Removing certificate FMWebSite 2018/9/14 23:35:40 ?? from store WebHosting
53 [INFO] Renewal for FMWebSite succeeded
54 [INFO] Next renewal scheduled at 2018/11/9 6:03:44 ??
55
56 N: Create new certificate
57 M: Create new certificate with advanced options
58 L: List scheduled renewals
59 R: Renew scheduled
60 S: Renew specific
61 A: Renew *all*
62 V: Revoke certificate
63 C: Cancel scheduled renewal
64 X: Cancel *all* scheduled renewals
65 Q: Quit
66
67 Please choose from the menu: q
最初から最後までの実際の画像を…
上記のテキストと画像は同じものではないので、時間など若干違いますが、気にしないでください。
IISのサイトバインドを確認する
完了しましたので、IISのバインドを確認します。
SSL 証明書
の部分に表示されています。
httpsでアクセスする
試しにhttps://hoge.frudens.app
にアクセスしてみます。
証明書も認識しています。
証明書をFileMaker Serverにインストールする
さきほど作成した証明書をFileMaker Serverにインポートします。
証明書の場所
作成された証明書は、以下のフォルダにあります。
1C:\ProgramData\win-acme\httpsacme-v01.api.letsencrypt.org\
1C:\ProgramData\win-acme\httpsacme-v01.api.letsencrypt.org>dir
2 Volume in drive C has no label.
3 Volume Serial Number is D8A2-01B9
4
5 Directory of C:\ProgramData\win-acme\httpsacme-v01.api.letsencrypt.org
6
72018/09/15 15:03 <DIR> .
82018/09/15 15:03 <DIR> ..
92018/09/15 15:03 1,174 ca-FMWebSite-crt.der
102018/09/15 15:03 1,674 ca-FMWebSite-crt.pem
112018/09/15 15:03 3,378 FMWebSite-all.pfx
122018/09/15 15:03 3,864 FMWebSite-chain.pem
132018/09/15 15:03 1,550 FMWebSite-crt.der
142018/09/15 15:03 2,190 FMWebSite-crt.pem
152018/09/15 15:03 1,006 FMWebSite-csr.pem
162018/09/15 15:03 1,050 FMWebSite-gen-csr.json
172018/09/15 15:03 1,807 FMWebSite-gen-key.json
182018/09/15 15:03 1,702 FMWebSite-key.pem
192018/09/15 15:03 542 FMWebSite.history.json
202018/09/14 01:08 1,015 Registration
212018/09/15 15:03 420 Renewals
222018/09/14 01:08 1,679 Signer
23 14 File(s) 23,051 bytes
24 2 Dir(s) 30,963,933,184 bytes free
インポートする
Admin Consoleにログインし、SSL証明書のインポートをします。
fmsadmin
コマンドを使ってインポートしてもよいです。(最後の方にコマンドは書いています。)
ファイル | ファイル名 |
---|---|
署名済みの証明書ファイル | FMWebSite-crt.pem |
プライベートキーファイル | FMWebSite-key.pem |
中間証明書ファイル | FMWebSite-chain.pem |
インポートできました。
インポートできたので、再起動します。
FileMakerからアクセスする
アクセスしてみます。
緑色になっています。
ロックアイコンをクリックすると、証明書が表示されます。
SSL証明書の更新作業(renew)の自動化
Let’s EncryptのSSL証明書の有効期限は、3ヶ月間です。
自動的にrenewコマンドを実行してほしいので、タスクスケジューラに登録します。
(私の環境では、自動的にタスクスケジューラに登録されていました。)
タスクスケジューラにrenewを登録する
もし、登録されていないようでしたら、簡単にコマンドで設定できるようです。
自分でバッチを作っても良いと思います。
Windows Task Scheduler Settings
1Microsoft Windows [Version 10.0.14393]
2(c) 2016 Microsoft Corporation. All rights reserved.
3
4C:\Users\user>C:\Users\user\Desktop\win-acme.v1.9.11.2\letsencrypt.exe --renew --baseuri "https://hoge.frudens.app"
FileMaker Serverへのインポートの自動化
上記の作業ではC:\ProgramData\win-acme\httpsacme-v01.api.letsencrypt.org\
にある、証明書が更新されるのみですので、FileMaker Serverの証明書は更新されません。
ということで、FileMaker Serverの証明書を更新する作業をfmsadmin
コマンドで書いてバッチファイルにしておけば、タイミングを見てダブルクリックで手軽に更新できます。
FileMaker Serverのrestartもあるので、メンテナンスの際に実行するのが良いと思います。
(削除してから、インポートする必要があります。)
fmsadmin certificate delete
1fmsadmin certificate delete -y -u USER -p PASSWORD
fmsadmin certificate import
1fmsadmin certificate import C:\ProgramData\win-acme\httpsacme-v01.api.letsencrypt.org\FMWebSite-crt.pem --keyfile C:\ProgramData\win-acme\httpsacme-v01.api.letsencrypt.org\FMWebSite-key.pem --intermediateCA C:\ProgramData\win-acme\httpsacme-v01.api.letsencrypt.org\FMWebSite-chain.pem -y -u USER -p PASSWORD
セキュリティについて
今回の作業時には、FileMaker Serverのポート(80, 443など)を開ける必要があります。
Data APIを使う場合などは、443を開ける必要はあるかもしれませんが、基本的には開けないほうが良いです。
そのため、作業終了時には、ポートやファイアーウォールを適切な状態に戻しておきましょう。
当然ですが、更新の際にはポートを開ける必要があります。
FileMaker製品でサポートされるSSL証明書
FileMaker製品でサポートされるSSL証明書を購入する場合は、以下のリンクを参照してください。
FileMaker製品でサポートされるSSLサーバー証明書の販売元と種類の一覧
あとがき
Let’s Encrypt は「安全なのか?」みたいな話をする人もいるかも知れませんが、個人的には問題ないと思っています。
ご自身でググってください。
参考
https://www.emic.co.jp/fmpress/services/ssl/
https://twitter.com/HiromitsuTakagi/status/1004013636883382274
上場企業やgo.jpドメインでもLet’s Encryptのサーバ証明書の利用が広がる
comments powered by Disqus