はじめに
前回、Android 端末に、ルート認証局(CA)の証明書の設定を行い、HTTPS テスト環境に接続するところまで行いました。
いままでは、外部端末としてモバイル端末だけを想定してきましたが、テスト環境として考えた場合、折角、HTTPS テストサーバーを構築して、プライベートネットワークで公開できるのであれば、チーム開発にも応用できないかという気持ちが沸き起こってきます。
例えば、下記のように、モバイルだけでなく、他の Windows / macOS / ChromeOS / Linux といった OS からもアクセスができるのであれば、多くの種類の端末をテストに利用できます。
開発PC
192.168.10.108
│
│ HTTPS
▼
┌──────────────────────┐
│ 開発用HTTPS環境 │
└──────────────────────┘
│
┌───────┼───────┬───────┬───────┬───────┐
▼ ▼ ▼ ▼ ▼ ▼
iPhone Android Windows macOS ChromeOS Linux
そこで、今回はデスクトップ OS として、Windows / macOS / ChromeOS / Linux におけるルート認証局(CA)の証明書の設定方法の違いを整理したいと思います。
※ 各 OS については、筆者が現状用意できる下記のもので確認を行っています。バージョンやディストリビューションの違い等により、当記事の内容とは、文言や手順に違いがある可能性があります。
- Windows : Windows 11 Pro 25H2 26200.9457
- macOS : macOS Sequoia 15.7.3
- ChromeOS : Arm64 版 ChromeOS 152.0.7977.129
- Linuxは、Arm64 版 Debian GNU/Linux 12 (bookworm)
※ ブラウザに関しては、全 OS 共通で、Chrome を利用しています。
各 OS のルート認証局(CA)の証明書の設定方法の違い
まずはじめに、各 OS のルート認証局(CA)の証明書の設定方法を下記の表にまとめます。
| Windows | macOS | ChromeOS | Linux | |
|---|---|---|---|---|
| root CA | rootCA.pem | rootCA.pem | rootCA.pem | rootCA.pem |
| 端末への転送 | 必要 | 必要 | 必要 | 必要 |
| プロファイル | 不要 | 不要 | 不要 | 不要 |
| CA登録 | 「CA 証明書」をインストール | 「CA 証明書」をインストール | 「CA 証明書」をインストール | 「CA 証明書」をインストール |
| CA登録先 | OSの証明書ストア | キーチェーン | Chromeの証明書管理 | 利用する証明書ストアを確認 |
| Chromeでの確認 | 「CA 証明書」の登録で警告消失 | 「CA 証明書」の登録後、信頼設定で警告消失 | 「CA 証明書」の登録で警告消失 | 「CA 証明書」の登録で警告消失 |
| ブラウザ | Chromeなど | Chromeなど | Chromeなど | Chromeなど |
ほとんどの OS では、証明書ストアに信頼する認証局として、ルート認証局(CA)の証明書を登録することで完了します。しかし、macOS に関しては、登録だけでなく、信頼設定を行うという 2 段階の作業が必要になります。
■ Windows
インターネットオプションのコンテンツから呼び出せる OS の証明書ストア管理画面から、「信頼されたルート証明機関」にルート認証局(CA)の証明書をインポートします。
■ macOS
ダウンロードしたルート認証局(CA)の証明書をキーチェーンに読込、キーチェーン管理画面から信頼設定を行います。
■ ChromeOS
ChromeOS は、Chrome ブラウザと密接に連携しているため、Chrome ブラウザの証明書管理機能から ルート認証局(CA)の証明書をインストールします。
■ Linux
Linux は、OS として、証明書ストアが統一されておらず、少し複雑です。また、ディストリビューションによっても、その存在するパスが異なったりするため、注意が必要です。
例えば、Linux では、OS やアプリケーションによって利用する証明書ストアが異なります。
システムの証明書ストア NSS DB(ブラウザの証明書ストア)
│ │
┌────┼────┐ ┌───────┼───────┐
▼ ▼ ▼ ▼ ▼ ▼
curl wget その他 Chrome Chromium ...
※ Debian などの Linux では、/etc/ssl/certs/ などにシステムの CA 証明書を登録できますが、今回使用した Chrome では、この証明書ストアは HTTPS 接続の信頼には利用されませんでした。
Chrome / Chromium では、NSS DB が証明書ストアとして利用されます。NSS DB にルート認証局(CA)の証明書を登録すると、Chromeの証明書マネージャーにも「 Linux からインポートした証明書」として表示され、HTTPS 接続でその CA が信頼されるようになります。
NSS とは?
NSS(Network Security Services)とは、Mozilla が開発した「暗号・証明書・鍵管理のための共通ライブラリ群」です。MPL 2.0(Mozilla Public License 2.0) で公開されています。
Linux の主要なブラウザでは、NSS が証明書や鍵の管理に利用されています。
NSS は以下の機能を提供します。
- 暗号化(AES, RSA, ECC など)
- SSL/TLS の実装
- 証明書(CA)の管理
- 鍵の管理
- PKCS#11 の実装
証明書ストアのデータなどは NSS Shared DB ( sqlite の DB )に保存されています。
Chrome / Chromium の現在のデフォルトパスは、次の場所です。
~/.local/share/pki/nssdb/
ただし、既存の ~/.pki/nssdb/ が存在する場合、Chrome / Chromium はそちらを使用します。
そのため、実際に操作する場合は、使用している Chrome / Chromium がどちらの NSS DB を使用しているかを確認する必要があります。
また、Firefox は NSS を使っていますが、Chrome / Chromium とは異なり Firefox プロファイル単位の独自の証明書ストアを持ちます。
~/.mozilla/firefox/xxxxxx.default-release/
このように、ブラウザによっても、参照する証明書ストアが異なるため、同じ NSS を利用していても、注意が必要です。
NSS の CA を操作するコマンド
✔ CA の追加
certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n "MyCA" -i myCA.crt
✔ CA の一覧
certutil -L -d sql:$HOME/.pki/nssdb
✔ CA の削除
certutil -D -n "MyCA" -d sql:$HOME/.pki/nssdb
※ 使用しているNSS DBのパスに読み替えてください。
まとめ
- ほとんどのパソコン OS でのルート認証局(CA)の証明書の設定は、証明書ストアに登録するだけで完了するが、macOSに関しては、追加で信頼設定が必要です。
- Linuxの場合、OSやアプリケーションによって利用する証明書ストアが異なります。(今回使用したChromeでは、NSS DBへのルート認証局(CA)の登録が必要でした。)
- ブラウザの証明書ストアのパスは、Chrome / Chromium 系ブラウザと Firefox ブラウザのように、ブラウザによっても異なることがあるので、注意が必要です。
- Linux 上の Firefox や Chrome / Chromium系の多くのブラウザの証明書ストアには NSS が使われています。
次回予告
次回から、実際に各 OS にて、証明書ストアにルート認証局(CA)の証明書を登録し、警告画面や警告表示なく、HTTPS サイトの画面が表示されることを確認していきたいと思います。