2019年12月24日火曜日

MacOS でクライアント証明書を発行してみる

概要

キーチェーンアクセスを使ってクライアント証明書を発行する方法を紹介します
ちなみにサーバ証明書の発行ではないのでご注意ください
サーバ証明書は Let’sEncrypt などを使い正式な認証局を通してから発行しましょう

環境

  • macOS 10.15.2
  • openssl 2.8.3

キーチェーンアクセスでクライアント証明書を発行する

キーチェーンアクセスを開きます

そしてメニューから「証明書アシスタント」->「証明書を作成」を選択します

証明書のタイプを「SSL クライアント」にします

自己証明書のため警告が表示されますが「続ける」を選択します

以下のように作成されれば OK です
キーチェーンアクセスに追加したクライアント証明書があることを確認しましょう

.cer ファイルと .p12 ファイルを書き出す

証明書ファイルと鍵ファイルをキーチェーンアクセスで書き出します
作成したクライアント証明書を右クリックし書き出しを選択します

フォーマットを「証明書 (.cer)」にします

.cer ファイルが作成されたら続けて「個人情報交換 (.p12)」を選択します

パスワードを設定することができますが今回は空のまま作成しました

以下のように書き出しできれば OK です

.crt ファイルと .key ファイルに書き換える

MacOS で使う場合はこのままでも使えますが nginx や Apache Httpd Server などのメジャーな Web サーバで使う場合には変換が必要です
変換には openssl コマンドを使います

  • openssl x509 -in my_client_cert.cer -inform DER -out my_client_cert.crt -outform PEM
  • openssl pkcs12 -in my_client_cert.p12 -nocerts -nodes -out my_client_cert.key

鍵を変換するときにパスワードを求められますが今回は空にしているのでそのまま Enter で OK です

中間 CA 証明書を作成する

作成した鍵情報から自己認証局を作成することもできます
認証局が作成できれば中間 CA 証明書も発行できます
まずは認証局を作成します

先程作成したクライアント証明書の鍵を選択し「認証局を作成」を選択します

固有名のタイプは「自己署名ルート CA」にします
ユーザ証明書は「SSL クライアント」にします

これで認証局が作成できました
これはルート認証局になります

続けて中間認証局を作成します
同じ用に「認証局を作成」を選択します
そして今度は固有名のタイプに「中間CA」を選択します

先ほど作成したルート認証局が表示されるので確認します
今回は信頼されていないルート認証局になるので警告が出ますが作成します

中間 CA が作成されれば OK です

キーチェーンアクセスの一覧に作成対 CA と中間 CA が存在できると思います
あとは中間 CA を選択して再度書き出しを行えば中間 CA 証明書が発行できます
クライアント証明書を作成した手順と同じで .cer ファイルを書き出して .crt に変換すれば OK です

  • openssl x509 -in my_client_ca_cert.cer -inform DER -out my_client_ca_cert.crt -outform PEM

Tips: その名前の認証局構成ファイルはすでに存在します。別の名前を選んでください。と表示される場合は

バグなのかもしれませんが作成した認証局をキーチェーンアクセスの一覧から削除して再度作成しようとすると「その名前の認証局構成ファイルはすでに存在します。別の名前を選んでください。」と表示され認証局が作成できなくなりました
その場合は以下のディレクトリにある認証局のディレクトリを削除すれば再び作成できるようになります

/Users/username/Library/Application Support/Certificate Authority

最後に

MacOS で SSL クライアント証明書を発行する方法を紹介しました
結局 openssl コマンドを使うのであれば初めの手順から openssl コマンドだけで完結することも可能です
キーチェーンアクセスに慣れている人はキーチェーンアクセスを使っても OK です

参考サイト

0 件のコメント:

コメントを投稿