はじめに
この記事ではUbiquiti Networks社より販売されているDream Machine Special Edition(以降、UDM-SE)を使って、SSL証明書の更新方法をまとめています。
毎回下記が表示されるのも面倒ですしね。
公式ではやり方のドキュメントがなく、コミュニティでは正しいやり方がまとまってなかったり、そもそもコミュニティは英語メインなので情報が見つけづらかったりするので日本語ベースでまとめて、誰かの役に立てばと思います。
事前準備
全部を手取り足取り説明すると大変なので、下記が出来ていることを条件としています。
- UDM-SEの初期セットアップが完了している。
- UDM-SEにSSHを利用して接続することが出来る。
- SSL証明書を発行することが出来る。
- CAの役割をさせるサーバの証明書を「信頼できるルート証明機関」にインポートされていること。
手順
証明書の発行
証明書の発行をしていきます。
今回は[.pfx]ファイルを利用していきます。
私はADサーバを構築し、AD CSに証明書要求をしています。
UDM-SEへのSSH接続
コマンドプロンプトでもPowerShellでもTeraTermでもいいですが、UDM-SEにSSH接続をします。
私はTeraTermを使います。
ユーザー名はroot、パスワードは任意のものを利用してください。
UniFi OSでSSHのパスワードを変更することも出来ます。
証明書の配置
証明書の場所の確認
既存の証明書は下記の保存されています。
/ssd1/.data/unifi-core/config/
lsコマンドでディレクトリを覗くとこんな感じです。
root@UDM-SE:~# ls -la /ssd1/.data/unifi-core/config/
total 68
drwxr-xr-x 2 root root 4096 Jun 24 08:59 ./
drwxr-xr-x 8 root root 4096 Jun 24 09:03 ../
-rw-r--r-- 1 root root 103 Jun 21 03:14 apps.availableUpdates.yaml
-rw-r--r-- 1 root root 155 Jun 16 00:17 apps.userPrefs.yaml
-rw-r--r-- 1 root root 3323 Jun 16 00:25 cloud.yaml
-rw-r--r-- 1 root root 2203 Jun 24 09:12 firmware.yaml
-rw-r--r-- 1 root root 73 Jun 16 00:25 jwt.yaml
-rw-r--r-- 1 root root 554 Jun 24 00:39 settings.yaml
-rw-r--r-- 1 root root 5688 Jun 16 00:25 unifi-core-direct.crt
-rw-r--r-- 1 root root 1702 Jun 16 00:17 unifi-core-direct.key
-rw------- 1 root root 2371 Jun 24 08:53 unifi-core.crt
-rw------- 1 root root 1977 Jun 24 08:52 unifi-core.key
root@UDM-SE:~#
- unifi-core.crt
- unifi-core.key
この2つが今回のターゲットです。この証明書と鍵を作製した証明書と置き換えていきます。
証明書の転送
SSHの接続元からUDM-SEに向けてSCPで証明書を転送します。
TeraTermなら比較的簡単に出来ます。
ファイル(F)からSSH SCP...を選択します。
Fromは任意のディレクトリの[.pfx]ファイルを指定します。
Toには証明書を配置する場所を指定しておきます。
別にtmpディレクトリでもいいです。
転送が出来たらlsコマンドで再度確認してみましょう。
root@UDM-SE:~# ls -la /ssd1/.data/unifi-core/config/
total 68
drwxr-xr-x 2 root root 4096 Jun 24 08:59 ./
drwxr-xr-x 8 root root 4096 Jun 24 09:03 ../
-rw-r--r-- 1 root root 4543 Jun 23 22:08 sample.pfx
-rw-r--r-- 1 root root 103 Jun 21 03:14 apps.availableUpdates.yaml
-rw-r--r-- 1 root root 155 Jun 16 00:17 apps.userPrefs.yaml
-rw-r--r-- 1 root root 3323 Jun 16 00:25 cloud.yaml
-rw-r--r-- 1 root root 2203 Jun 24 09:12 firmware.yaml
-rw-r--r-- 1 root root 73 Jun 16 00:25 jwt.yaml
-rw-r--r-- 1 root root 554 Jun 24 00:39 settings.yaml
-rw-r--r-- 1 root root 5688 Jun 16 00:25 unifi-core-direct.crt
-rw-r--r-- 1 root root 1702 Jun 16 00:17 unifi-core-direct.key
-rw------- 1 root root 2371 Jun 24 08:53 unifi-core.crt
-rw------- 1 root root 1977 Jun 24 08:52 unifi-core.key
sample.pfxが配置できていますね。
ファイルのバックアップ
既存の証明書ファイルのバックアップを取ります。
まず、証明書ファイルのあるディレクトリに移動します。
cd /ssd1/.data/unifi-core/config/
その後、ファイルをバックアップします。
crtとkeyファイルを両方ともバックアップします。
mv unifi-core.crt unifi-core.crt.bak
mv unifi-core.key unifi-core.key.bak
lsコマンドで確認したら完了です。
root@UDM-SE:~# ls -la
total 68
drwxr-xr-x 2 root root 4096 Jun 24 08:59 ./
drwxr-xr-x 8 root root 4096 Jun 24 09:03 ../
-rw-r--r-- 1 root root 4543 Jun 23 22:08 sample.pfx
-rw-r--r-- 1 root root 103 Jun 21 03:14 apps.availableUpdates.yaml
-rw-r--r-- 1 root root 155 Jun 16 00:17 apps.userPrefs.yaml
-rw-r--r-- 1 root root 3323 Jun 16 00:25 cloud.yaml
-rw-r--r-- 1 root root 2203 Jun 24 09:12 firmware.yaml
-rw-r--r-- 1 root root 73 Jun 16 00:25 jwt.yaml
-rw-r--r-- 1 root root 554 Jun 24 00:39 settings.yaml
-rw-r--r-- 1 root root 5688 Jun 16 00:25 unifi-core-direct.crt
-rw-r--r-- 1 root root 1702 Jun 16 00:17 unifi-core-direct.key
-rw-r--r-- 1 root root 1192 Jun 16 00:17 unifi-core.crt.bak
-rw-r--r-- 1 root root 1702 Jun 16 00:17 unifi-core.key.bak
pfxファイルからcrt,keyファイルを作成する
pfxファイルのままではUDM-SEで証明書として使えないので、crtファイルとkeyファイルに変換していきます。
UDM-SEにはデフォルトでopensslがインストールされているので、opensslコマンドを利用します。
pfxファイルからcrtファイルを作成する
openssl pkcs12 -in sample.pfx -clcerts -nokeys -out unifi-core.crt
pfxファイルからkeyファイルを作成する
openssl pkcs12 -in sample.pfx -nocerts -nodes -out unifi-core.key
lsコマンドで確認をします。
root@UDM-SE:~# ls -la /ssd1/.data/unifi-core/config/
total 68
drwxr-xr-x 2 root root 4096 Jun 24 08:59 ./
drwxr-xr-x 8 root root 4096 Jun 24 09:03 ../
-rw-r--r-- 1 root root 4543 Jun 23 22:08 sample.pfx
-rw-r--r-- 1 root root 103 Jun 21 03:14 apps.availableUpdates.yaml
-rw-r--r-- 1 root root 155 Jun 16 00:17 apps.userPrefs.yaml
-rw-r--r-- 1 root root 3323 Jun 16 00:25 cloud.yaml
-rw-r--r-- 1 root root 2203 Jun 24 09:12 firmware.yaml
-rw-r--r-- 1 root root 73 Jun 16 00:25 jwt.yaml
-rw-r--r-- 1 root root 554 Jun 24 00:39 settings.yaml
-rw-r--r-- 1 root root 5688 Jun 16 00:25 unifi-core-direct.crt
-rw-r--r-- 1 root root 1702 Jun 16 00:17 unifi-core-direct.key
-rw------- 1 root root 2371 Jun 24 08:53 unifi-core.crt
-rw-r--r-- 1 root root 1192 Jun 16 00:17 unifi-core.crt.bak
-rw------- 1 root root 1977 Jun 24 08:52 unifi-core.key
-rw-r--r-- 1 root root 1702 Jun 16 00:17 unifi-core.key.bak
再起動
ここまで出来たらほぼ完了です。
UDM-SEをリスタートします。
Restartをクリックするか、Turn Offで安全なシャットダウンをしてもいいです。
起動してWebブラウザでアクセスし、上手くいくと下記のようになります。
最後に
今回はUDM-SEのSSL証明書更新方法を書いていきました。
毎回思いますが、Ubiquti Networksは安く、性能もいいですが、公式ドキュメントが少ないのが難点ですね。
そもそもそんなに弄らない想定なのかもしれませんけどね。