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

** 前提 [#dcdb14c8]
- [[OpenSSLのCAコマンドを使ったCA構築>セキュリティ・PKI/OpenSSL/CAコマンドを使ったCA構築]]を参考にして、CAを構築する。
- 今回は以下のような構成でCAがすでに構築されている事にする。
-- /tmp/pki/myCA CA証明書やサーバ証明書やクライアント証明書等が格納されているディレクトリ
-- /tmp/pki/openssl.cnf opensslコマンドの設定ファイル
-- /tmp/pki/CA CAコマンド

** サーバ証明書(クライアント証明書)の署名要求を作成 [#zc9abcc4]
 DAYS="-days 3650" ./CA -newreq
- パスフレーズはこのコマンド実行時には必ず実行する。(後でパスフレーズを鍵から取り除くのは良い。)
- 以下のファイルが作成される。
-- newkey.pem サーバ秘密鍵
-- newreq.pem サーバ証明書の署名要求

** 署名要求(CSR)をCA証明書で署名してサーバ証明書(クライアント証明書)を作成 [#j8c52c96]
 SSLEAY_CONFIG="-config ./openssl.cnf" ./CA -sign
- 上のコマンドを実行すると証明書の詳細が表示されて、署名するか?と問われるのでYESを選ぶ。
- すると、以下のファイルが作成される。
-- newcert.pem サーバ証明書(クライント証明書)
-- myCA/newcerts/F1234XXXXXXF1.pem サーバ証明書(クライント証明書)上のnewcert.pemと同じ内容
- さらに、この内容をコミットするか?と問われるのでYESを選ぶ。
- すると、以下のファイルが更新される。
-- myCA/index.txt データベースファイル
-- myCA/serial シリアルファイル
- (※ 証明書の有効期限を変更するにはopenssl.cnfのdefalut_daysを変更する。)

** 秘密鍵からパスフレーズを削除 [#g60d4449]
 mv newkey.pem newkey.pem.tmp
 openssl rsa -in newkey.pem.tmp -out newkey.pem
 rm newkey.pem.tmp

** 証明書のリネーム [#yed5859a]
 _tmp=server01 && ( mv newcert.pem $_tmp.crt; mv newkey.pem $_tmp.key; mv newreq.pem $_tmp.csr )

** クライアント秘密鍵とクライアント証明書を結合してpkcs12形式でexportする [#hb84888b]
 openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12
- 必要に応じて、client.keyのパスフレーズを入力する。
- 必要に応じて、client.p12をインポートする際のパスフレーズを入力する。

** サーバ証明書(クライアント証明書)の失効 [#x3c1c256]
*** 初回のみCRLシリアルファイルの作成 [#ff02fa31]
 echo 01 > ./myCA/crlnumber
初めて失効作業をする場合はを上のようにCRLシリアルファイルを作成する。
*** 失効対象の証明書の確認 [#uaef62ea]
 cat ./myCA/index.txt
失効対象の証明書のレコードの3カラム目がシリアルナンバー。
*** 証明書の失効の実行[#t6a995da]
 openssl ca -config ./openssl.cnf -revoke myCA/newcerts/XXXX.pem
上の「XXXX」が証明書のシリアルナンバーに相当する。
*** 証明書が失効された事の確認 [#jabe664c]
 cat ./myCA/index.txt
失効対象の証明書のレコードの先頭カラムが「V」から「R」に変わっている。
*** 失効リストファイルの作成 [#nc09e3e7]
 openssl ca -config ./openssl.cnf -gencrl -out myCA.crl
失効リストファイルmyCA.crlはApache等に設定する。
*** 失効リストファイルの内容の確認 [#kb1abca1]
 openssl crl -in myCA.crl -text

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS