OpenSSLのCAコマンドを使ったサーバ証明書クライアント証明書の作成

前提

  • OpenSSLのCAコマンドを使ったCA構築を参考にして、CAを構築する。
  • 今回は以下のような構成でCAがすでに構築されている事にする。
    • /var/pki/myCA CA証明書やサーバ証明書やクライアント証明書等が格納されているディレクトリ
    • /var/pki/openssl.cnf opensslコマンドの設定ファイル
    • /var/pki/CA CAコマンド

サーバ証明書とクライアント証明書

  • サーバ証明書とクライアント証明書の作成手順は同じ。
  • ただしクライアント証明書は最終的にPCのブラウザなどにインストールするため、pkcs12形式にエクスポートする。

サーバ証明書(クライアント証明書)の秘密鍵とCSR(署名要求)を作成

 SSLEAY_CONFIG="-config ./openssl.cnf" DAYS="-days 3650" ./CA -newreq
  • パスフレーズの設定が促されるが、不要な場合は後でこの証明書ファイルから取り除いて証明書ファイルを作り直す。
  • 以下のファイルが作成される。
    • newkey.pem サーバ秘密鍵
    • newreq.pem サーバ証明書の署名要求(CSR)

CSR(署名要求)の内容確認

 openssl req -noout -text -in newreq.pem

署名要求(CSR)をCA証明書で署名してサーバ証明書(クライアント証明書)を作成

 SSLEAY_CONFIG="-config ./openssl.cnf" CATOP=./myCA ./CA -sign
  • 上のコマンドを実行すると証明書の詳細が表示されて、署名するか?と問われるのでYESを選ぶ。
  • すると、以下のファイルが作成される。
    • newcert.pem サーバ証明書(クライント証明書)
    • myCA/newcerts/F1234XXXXXXF1.pem サーバ証明書(クライント証明書)上のnewcert.pemと同じ内容
    • 以降の作業はnewcert.pemを使うが、newcerts以下の証明書ファイルは大切に保存しておき、後日に証明書失効などする時に使う。
  • さらに、この内容をコミットするか?と問われるのでYESを選ぶ。
  • すると、以下のファイルが更新される。
    • myCA/index.txt 発行した証明書一覧データベースファイル
    • myCA/serial 証明書を発行するごとにインクリメントされるシリアルファイル

秘密鍵からパスフレーズを削除

 mv newkey.pem newkey.pem.tmp
 openssl rsa -in newkey.pem.tmp -out newkey.pem
 rm newkey.pem.tmp

証明書のリネーム

 _tmp=server01 && ( mv newcert.pem $_tmp.crt; mv newkey.pem $_tmp.key; mv newreq.pem $_tmp.csr )

クライアント秘密鍵とクライアント証明書を結合してpkcs12形式でexportする

 openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12
  • 必要に応じて、client.keyのパスフレーズを入力する。
  • 必要に応じて、client.p12をインポートする際のパスフレーズを入力する。

PKCS12形式のクライアント証明書をブラウザへインストールする

Apache / SSL / クライアント証明書による認証


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2017-05-18 (木) 04:39:06