iOSデバイスからcode-serverに接続するために、自己証明書を作成する


ローカルネットワークにcode-serverを立てようとしたところ、iPhone(iOS)やiPad(iPadOS)で警告が出ない証明書作成に手間取ったため、共有します。

apple証明書の要件

証明書の要件については、appleの公式サポートページを参照してください。
iOS 13 および macOS 10.15 における信頼済み証明書の要件
信頼済み証明書に関する今後の制限について

内部IPアドレスの固定

内部IPアドレスを固定していない場合は固定します。
固定方法は割愛します。「OS名 + 固定IP」などで検索してください。

固定したIPアドレスで「~/.config/code-server/config.yaml」のbind-addrを変更します。

bind-addr: 固定したIPアドレス:ポート番号

証明書作成

証明書を適用するサーバーで証明書を作成します。
証明書の作成にはOpenSSLの自己署名証明書の生成の省力化の試みを使わせていただきました。
Makefileに以下の変更を行いました。

Subject names

「Subject names for cert」の変数値を自身に合う設定に変更します。

#
# Subject names for cert
#
INFO_C  ?= JP
INFO_ST ?= My Prefecture
INFO_L  ?= My City
INFO_O  ?= My organization name
INFO_OU ?= My branch name

hostname

hostnameに「.local」を追加します。

#
# Hostname and IP address
#
HOSTNAME          ?= $(shell hostname -f).local
HOSTNAME_S        ?= $(shell hostname -s).local

証明書配置

サーバー

「~/.config/code-server/config.yaml」のcertをtrueに変更します。

cert: true

「~/.local/share/code-server/」に作成したservice.keyをlocalhost.keyに、service.crtをlocalhost.crtにリネームしてコピーします。
※起動確認のための仮置きです。確認後に権限管理など適宜行ってください。

起動時に「--cert」, 「--cert-key」の引数設定でそれぞれ任意のファイルを指定可能です。

iOS, iPadOS

ホスト名+.local_ca.crtとservice.crtをiOS(iPadOS)にコピーします。
各プロファイルをインストールし、証明書を信頼させます。

iOS や iPadOS で手動でインストールした証明書プロファイルを信頼する

接続確認

「ホストネーム.local:ポート番号」でsafariからアクセスし、警告が出なければ成功です。