MacでGUIを使ってオレオレルート認証局を作る
GUIを使ってオレオレルート認証局を作り、楽に証明書を発行したい!
オレオレ認証局を作ること自体は簡単だが、SANs証明書(マルチドメイン証明書)を発行するのは実はかなりめんどくさい!めったに作らないので手順も覚えられない!
実は Mac には標準に組み込まれているキーチェーンでGUIベースでオレオレ認証局を開設し SANs証明書を払い出す仕組みがあるので、今回はそれを利用して開設する。 Windows を使っている人はわからないのでご自身で調べてください><
- オレオレ認証局を開設するメリット
- キーチェーンを使うメリット
- ルート認証局を開設する手順
- 1) 認証局作成ウィザードを起動する
- 2) 認証局を作成
- 3) 証明書情報(1)
- 4) 証明書情報(2)
- 5) このCAの鍵ペア情報【スキップ可能】
- 6) このCAのユーザーが使う鍵ペア情報を指定【スキップ可能】
- 7) このCAが使う鍵用途拡張領域【スキップ可能】
- 8) このCAのユーザーが使う鍵用途拡張領域【スキップ可能】
- 9) このCAが使う拡張鍵用途拡張領域【スキップ可能】
- 10) このCAのユーザーが使う拡張鍵用途拡張領域【スキップ可能】
- 11) このCAが使う基本成約拡張領域【スキップ可能】
- 12) このCAのユーザーが使う基本成約拡張領域【スキップ可能】
- 13) このCAが使うサブジェクト代替名拡張領域【スキップ可能】
- 14) ユーザーが使うサブジェクト代替名拡張領域【スキップ可能】
- 15) 保存場所の指定【スキップ可能】
- 16) 完成!
- オレオレルート証明書の信頼設定
- 続き
オレオレ認証局を開設するメリット
常時SSL化が当たり前となった今、ローカル環境や開発環境等でもSSL化しテストすることが多くなってきたと思う。
たとえ商用の環境でなかったとしても、やっぱりこういうエラーは出てほしくないし無視したくない。
例えばよくある事故として、「開発時は」証明書の信頼チェックをオフにしオレオレ証明書を使えるようにしているつもりが、実際にエンドユーザーにリリースしたアプリケーションでもチェックをスキップしたままになっていた、などがある。
このような事故を防ぐために&ブラウザ等で毎回証明書を無視する画面を見なくてすむよう、「真面目に」オレオレ証明書を発行しようと思う。 (あらゆる環境で正規の証明書を発行できる人は正規のものを使うにこしたことはないのでそうしてほしい)
目指したい姿はこんな感じ。オレオレルート認証局を作り、使いたい環境でルート証明書を信頼するようにしておく。 一度オレオレルート認証局を作ってしまえば、あとは 本番環境等と同じ手順で証明書を発行できるようになる。
本番環境
オレオレ環境
キーチェーンを使うメリット
最初に書いたとおり、Macを使っているなら、オレオレルート認証局をキーチェーンで開設することができる。そのメリットは以下の通り。
ルート認証局を開設する手順
手順がかなり長いように見えるが、SSL大好きマン以外は【スキップ可能】のところは無視してそのまま進んでもらっていい(多分普段の開発で困ることはないと思う)。
1) 認証局作成ウィザードを起動する
キーチェーンを起動し、メニューから起動できる
2) 認証局を作成
- 固有名のタイプ: 自己署名ルート証明書
- ユーザー証明書: SSLサーバ
- ここで何が変わるかは分からない…
- 「デフォルトを無効化」にチェックを入れる
- ここにチェックを入れるとカスタマイズが可能になる
- メールの送信元は適当
3) 証明書情報(1)
- 有効期間: 好きに設定する
- 長くないと不便だと思う人が多いと思うのでここでは10年にする
- インビテーションに署名: 外す
- 割愛するが今回の用途では不要なので外す (どっちでもいい)
4) 証明書情報(2)
好きに入力してほしい
5) このCAの鍵ペア情報【スキップ可能】
好きなものを選ぶ。2019年現在、世の中の主要ルート証明書は RSA 2048bit。こだわりがないなら変えないほうがいい。
6) このCAのユーザーが使う鍵ペア情報を指定【スキップ可能】
これも特に変えなくていい
7) このCAが使う鍵用途拡張領域【スキップ可能】
なんとなく本物のルート証明書っぽくしたいので以下のようにしてみた。詳しい方、間違ってたら教えてください。 多分オレオレ証明書として使う分にはここの設定をどう変えても普通に動くと思う。
- この拡張領域は重要 にチェックを入れる
- 証明書署名、CRL署名 にチェックを入れる
多分ここの部分に相当すると思うんだけど…
8) このCAのユーザーが使う鍵用途拡張領域【スキップ可能】
- この拡張領域は重要 にチェックを入れる
- 署名、鍵の暗号化 にチェックを入れる
9) このCAが使う拡張鍵用途拡張領域【スキップ可能】
そのまま進む
10) このCAのユーザーが使う拡張鍵用途拡張領域【スキップ可能】
- この拡張領域は重要 のチェックを外す - SSLクライアント認証、SSLサーバ認証 にチェックを入れる
11) このCAが使う基本成約拡張領域【スキップ可能】
そのまま進む
12) このCAのユーザーが使う基本成約拡張領域【スキップ可能】
- 基本成約拡張領域を含める にチェックを入れる
13) このCAが使うサブジェクト代替名拡張領域【スキップ可能】
そのまま
14) ユーザーが使うサブジェクト代替名拡張領域【スキップ可能】
15) 保存場所の指定【スキップ可能】
16) 完成!
オレオレルート証明書の信頼設定
発行した証明書を選び、上記のように「常に信頼する」になっていれば使える状態のはずだが、なぜか発行したてのルート証明書は信頼されないことがある? その場合は、一回「信頼しない」にし画面を閉じたあともう一度開いて「常に信頼する」に設定しておく。
Mac以外の環境で信頼するようにしたい場合は、ルート証明書を書き出し、その証明書を信頼するようそれぞれのOS/デバイスで設定すればよい。
続き
この手順で作った僕の認証局の証明書を貼っておく。みんな僕のことすごく信頼していると思うので、みんなのOSで信頼するように設定しておいてね*1! (^^)
-----BEGIN CERTIFICATE----- MIIDWTCCAkGgAwIBAgIBATANBgkqhkiG9w0BAQsFADBOMRkwFwYDVQQDDBBtYXNo aSBSb290IENBIFIyMQswCQYDVQQGEwJKUDEkMCIGCSqGSIb3DQEJARYVd2VibWFz dGVyQG1hc2hpanAubmV0MB4XDTIwMTEwMTAxMzA0N1oXDTMwMTAzMDAxMzA0N1ow TjEZMBcGA1UEAwwQbWFzaGkgUm9vdCBDQSBSMjELMAkGA1UEBhMCSlAxJDAiBgkq hkiG9w0BCQEWFXdlYm1hc3RlckBtYXNoaWpwLm5ldDCCASIwDQYJKoZIhvcNAQEB BQADggEPADCCAQoCggEBANJ6LVh2asGdpJsNKwub634xu5lXqMUcCCIh6urzkXTd zFazh3S39QfMUZvUpAblGQPnXM9uLqlDRjj2Pqnj4tCiigNP28XjCbXAN3uM8vPa nufjjZaGSUtbQGLtVJgdCdmD0WWBjEQLDboIqTQbwS/287yiaSfSiscqzqBAvGy1 r+ZkYCKb4F9M/ZgMDvBDBl5MSTENx7BQsoHyniaD0yBWUl7uiZ23wv2KQGp6Hq3T 7+NmdsRX3AMwXPysfLL+IBPV0NBK6biKWTeVH6JYaBBe13svDhZDDgcqm7OHsPpi OXbRtfElC8yutks63s7zyIzW/Ypp24E4ATN2T1dhiAUCAwEAAaNCMEAwDwYDVR0T AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAqQwHQYDVR0lBBYwFAYIKwYBBQUHAwIG CCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUAA4IBAQAKCDZedLoFoC2+P1ILyf57KQle PakiQibwYE680ye+XD0mseOHAp2xAvonPNkLXi639m/5rxxflOP9nA8P6DiuPOQq xgeCdYK0NSPVqpW2NSYu2NrOCHWRGKc6eKwXkPjIcklAf2QvRTJwb48BPpOCwZGo aXR0CrSTo/N6J53AA6JlnjK0hZWxir8m49hMRXvuI/jkCf3uartQO8tDQQAaXSzr py3zGZzGt+Tw+upv29LwPBEvJmXsxyolRQkEScazYZPDXgpwA7mXeP1fX6Kr8hIR yQ0CHDvdOOXxn1OPTWEgVphQyo3Vidv1dwwT0jbfAAvbEQajF06PUraSSeua -----END CERTIFICATE-----