LoginSignup
0
0

More than 5 years have passed since last update.

中間CA向けキーマテリアルを作成する

Posted at

中間CA向けキーマテリアル作成

プライベートCAを構築したら,今度は各サーバ向けに証明書を発行できるようになります。

ここでは,中間CA向けのキーマテリアル(秘密鍵や証明書などデジタル証明関連のファイル)を作成する方法を紹介します。

なお,OpenSSLのコマンドの詳細は,「openssl 1.0.2 manpages」にあります。

確認環境

1つのマシンですべての作業を行うことは可能ですが,本来は秘密鍵ファイルとCSRファイルを作成する側と,証明書ファイルを発行する側は,異なる組織または部門で行うものです。

ここでは異なる組織/部門で行うことを想定して,2つのマシンで作業します。

  • 中間CAのマシン
    • このマシンで,秘密鍵ファイル,CSRファイルを作成
    • CentOS 7
    • OpenSSL 1.0.2k-fips
  • プライベートCAのマシン

中間CAマシンでの作業

作業ディレクトリを作成

作業ディレクトリを作成し,そこに移動します。

$ mkdir -p /tmp/keys
$ cd /tmp/keys

利用可能な曲線を確認

次のコマンドで, prime256v1 が出力されればOKです。

$ openssl ecparam  -list_curves

秘密鍵ファイルを作成

曲線 prime256v1 を使用して,暗号鍵ファイル private.pem を作成します。

$ openssl ecparam -name prime256v1 -genkey -out private.pem

秘密鍵が破損していないことを確認

$ openssl ecparam -check -noout -in private.pem

秘密鍵ファイルをPKCS#8に変換

$ openssl pkcs8 -topk8  -nocrypt -in private.pem -out key.pem

CSRファイルを作成

$ openssl req -new -sha256 -key key.pem -out csr.pem -verbose -subj "/C=JP/ST=Tokyo/L=Minato-ku/O=My Company/OU=My Company Certificate Authority/CN=*.example.com"

CSRファイルを確認

$ openssl req -text -noout -in csr.pem

以上で,秘密鍵ファイルとCSRファイルを作成できました。秘密鍵は漏洩しないように管理します。
CSRファイル csr.pem 「だけ」をプライベートCAに渡して,証明書を発行してもらうことになります。

プライベートCAマシンでの作業

今度は,プライベートCA(ルートCAの位置付け)で,中間CAから受け取ったCSRファイル csr.pem から証明書ファイル cert.pem を作成します。

作業ディレクトリを作成

作業ディレクトリを作成し,そこに移動します。

$ mkdir -p /tmp/keys
$ cd /tmp/keys

証明書の拡張情報ファイルを作成

プライベートCAで証明書を作成する際に,証明書に追記する情報が必要です。
サーバの種類ごとに情報が異なるため,その都度ファイルを作成します。
中間CA向けの証明書の場合,次のような内容になります。Webサーバ向けの場合は内容が異なるので留意します。
keyUsage がポイントで,中間CAとしては cRLSignkeyCertSign が必要です。

v3.txt
authorityKeyIdentifier=keyid,issuer
basicConstraints = critical,CA:TRUE
keyUsage = critical, cRLSign, keyCertSign
subjectKeyIdentifier=hash

証明書ファイルを作成

有効期限が1,068日(3年間)の証明書ファイルを作成します。

/etc/pki/tls/openssl.cnf ファイルを見ての通り,OpenSSLはデフォルトでは policy_match のポリシーで証明書を作成します。しかし,このポリシーだとプライベートCAとCSRファイルの国名,都市名,組織名が一致しないと証明書を作成できません。そのため, -policy policy_anything オプションを指定して緩い条件で証明書を作成します。

また, -extfile v3.txt オプションで拡張情報ファイルを指定します。先述の通り,証明書に「中間CA向けの証明書」であることを書き込むためです。

$ sudo openssl ca -policy policy_anything -days 1068 -in csr.pem -out cert.pem -extfile v3.txt

なお,過去に作成した証明ファイルと同じ国名,組織名などで証明書を作成しようとした場合に,次のエラーが出力されます。

failed to update database
TXT_DB error number 2

このようなときは,次の方法で過去の証明書を取り消させます。
xxx.pem は過去に発行した証明書ファイルです。

$ sudo openssl ca -revoke /etc/pki/CA/newcerts/xxx.pem

証明書ファイルを確認

最後に,証明書ファイルを確認します。

$ openssl x509 -text -noout -in cert.pem
$ cat cert.pem

以上で作成した証明書ファイル cert.pem を,中間CAのマシンに渡します。
これで「証明書を発行」したことになります。

中間CAマシンで必要なファイル

以上の作業でいくつかファイルが揃いますが,中間CAで必要なのは次のファイルのみです。
それ以外は破棄します。特に,key.pem は漏洩しないように管理します。

  • key.pem : 秘密鍵ファイル
  • cert.pem : 証明書ファイル

プライベートCAの管理状況

余談ですが,プライベートCAで証明書を発行した時に生成されるファイルについては,次のコマンドを実行すれば分かります。treeコマンドがない場合は, sudo yum install tree で投入します。

$ sudo su -c "tree /etc/pki/"
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0