はじめに

前回、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 サイトの画面が表示されることを確認していきたいと思います。