FileMakerServer19でのCSR生成とカスタム証明書の新規／更新インポート

# はじめに
## 対象読者
* Claris FileMaker Server 18 / 19 管理者
* Windows Server 環境
* カスタム証明書を更新しないといけなくなった人
    * なお、新規インポートの場合でも可


## 問題
### Windows での FileMakerServer 18 / 19 バグ問題
* `fmsadmin certificate create` コマンドを実行すると予期せぬエラーが発生する
    * 何じゃそりゃ、というエラー文面……

```sh
IP Address '127.0.0.1' is inaccessible or invalid.
Error: 10502 (Host unreachable)
```

* 公式からは openssl から生成するようにというコミュニティでの回答が確認されるものの、結局、それだと証明書のインポート時にエラーが発生するもよう
    * [Claris Community - CSR Creation Hanging on fresh install of fms_18.0.2.217
](https://community.claris.com/en/s/question/0D50H000070eQQb/csr-creation-hanging-on-fresh-install-of-fms1802217)

* なお、FileMaker Server 18.0.2 で CSR 生成は「ダメ！　絶対」です
    * [Claris - FileMaker Server 17 以降でのセキュリティ設定
](https://support.claris.com/s/article/Configuring-Security-for-FileMaker-17?language=ja
)

> FileMaker Server 18.0.2 では、CLI を使用して CSR を作成しようとしても CSR が作成されず、FileMaker Server が応答しなくなるという重大な問題が確認されています



## 回避策
### 別環境で生成する
* 今回は Linux ( CentOS 7.7 ) 版を用いる
* もしくは FileMaker Server 16 / 17 あたりで生成してもできるかもしれない
    * 未検証


# 本題
## CSR 生成
### Linux 環境の準備
* 以下の Qiita 記事をご覧ください
    * [FileMakerServer19をLinuxのCLI 環境のみでインストールする試み（成功）](https://qiita.com/Hi_Noguchi/items/c841d3bd0e9858ffd665)
    * [FileMakerServer19をLinuxのCLI 環境のみで稼働](https://qiita.com/Hi_Noguchi/items/f0d0cedc81a807cedbb1)

### 生成コマンド実行
* 引数について
    * C= 国名
    * ST= 都道府県
    * L= 市区町村
    * O= 組織名
    * CN= ドメイン名
        * ワイルドカードで指定するときは *.example.com のようにする
    * --keyfilepass パスワード
* コマンドのサンプル

```sh
fmsadmin certificate create "/C=JP/ST=Tokyo/L=Toshima-ku/O=PTNA/CN=*.piano.or.jp" --keyfilepass password
```

* コマンド実行後に訊かれる username と password については FileMaker Server の AdminConsole での認証情報。唐突に出てくるので、何のことやらと分かりづらい……

* 参考までに、もし openssl コマンドで実行する場合は以下のような感じになる

```sh
openssl req -new -newkey rsa:2048 -nodes -out csrname.csr -keyout keyname.key -sha256 -subj "/C=JP/ST=Tokyo/L=Toshima-ku/O=PTNA/CN=*.piano.or.jp"
```


### CSR = serverRequest.pem が生成された場所
* 以下にある

```
/opt/FileMaker/FileMaker Server/CStore/
```

### CSR を認証局へ渡し、証明書ファイルを受け取る
* serverRequest.pem を認証局へお渡し
    * あるいはファイルの中身をコピペ
* 先方で証明書ファイルが発行されるのでそちらを受け取る


## カスタム証明書インポート
### AdminConsole で SSL 証明書の設定画面へ
* ログイン
* メインメニューから「構成」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/35e20f0e-917d-9b87-9856-3e11962cd73d.png)

* サブメニューから「SSL 証明書」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/a77fb7fa-a4c0-822d-3415-fc319261afa7.png)

### ファイルを削除
* 一度、「ファイルを削除」を実行
    * 既に証明書がインポートされている場合、「カスタム証明書のインポート」へ進んでも途中で詰みます
    * 新規インポートの場合は省略可能

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/9af8cc17-806c-a43d-78c4-20835e742686.png)

### カスタム証明書のインポート
* 署名済みの証明書ファイル
    * 認証局から送られてきた crt ファイル
    * domain_name.crt のような名前
* プライベートキーファイル
    * CSR 生成時に出力された serverKey.pem
    * 右記の path にある `/opt/FileMaker/FileMaker Server/CStore/`
* 中間証明書ファイル
    * 認証局から送られてきた crt ファイル
    * xxxxxCA.crt のような名前になっていることが多い
* プライベートキーパスワード
    * CSR 生成時に入力した `--keyfilepass password` での password

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/5329a395-882d-805d-a360-fe681e259ff3.png)

* 以下のわかったようなわからないような注釈については、気にしなくてよいです

> 証明書をインポートすると、証明機関 (CA) から受け取った署名済み証明書ファイルと証明書署名要求の作成時に作成したプライベートキーファイル (serverKey.pem) が結合されます。

* インポート実行すると、完了
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/d470ba54-7b65-fbf5-e796-1a8a8a102a7c.png)

* 最後に OS の再起動を求められるので、任意のタイミングで再起動してください


# 2021/10/08 追記
## CSR 再発行について
* 証明書は一年に一回、更新されなくてはなりません。その際、認証局に CSR を再発行・再送する必要があります
* しかし、再発行しようと `` コマンドを打つと、先に証明書を消してくれと怒られてしまいます
* とはいえ、本番環境の証明書をいきなり抹消することなんてできません。なので、必然的に、開発環境用の FileMaker Server が必要になってしまうということに🤔

https://twitter.com/Hi_Noguchi/status/1446445588011048964?s=20

https://twitter.com/Hi_Noguchi/status/1446447198191828994?s=20

## 証明書の削除
* `fmsadmin certificate delete` というコマンドを打つと、以下のように訊かれます

```
fmsadmin: really delete certificate? (y, n) (Warning: server needs to be restarted)
```

* 再起動必須と書かれているのですが、気にせず `y` を入力して進めます
  * user / pass は FileMaker Server AdminConsole へログインするためのものです
* このあとで改めて `fmsadmin certificate create` コマンドで CSR 発行へ進むことができるようになります！


# おわりに
## 感想
* 過去にも以下のような Qiita 記事を書いていましたが、ver.up にともなって証明書まわりで致命的な問題が起きすぎではありませんかね……？
    * [FileMakerServer16にDigiCertのEVマルチドメイン証明書を入れる](https://qiita.com/Hi_Noguchi/items/acf2d5ef68f92e1fe6a1)
* アルファベットで入力されている所属が文字化けするのナンデ……

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/251b416a-f34e-d4e6-9ae6-6c938e78272d.png)