2016年11月17日木曜日

⑦認証局と電子証明書

opensslを使って独自の認証局を立ち上げ,個人証明書を発行する実験です。

独自の認証局の構築


演習1では認証局のディレクトリを作成します。認証局のディレクトリは,C:\Users\hinfo\openssl内にdemoCAという名前で作成します。

Microsoft Windows [Version 10.0.14393]
(c) 2016 Microsoft Corporation. All rights reserved.

C:\Users\hinfo>cd openssl

C:\Users\hinfo\openssl>mkdir demoCA
次に,作成したdemoCAフォルダ内につぎのフォルダやファイルを作成します。

【フォルダ】
  • certs ・・・ 証明書保管用フォルダ
  • crl ・・・ 失効リスト保管用フォルダ
  • newcerts ・・・ 新規に発行した証明書保管用フォルダ
  • private ・・・ 認証局の秘密鍵保管用フォルダ
【テキストファイル】(メモ帳で作成する)
  • index.txt ・・・ データベースインデックスファイル(内容は空にする)
  • index.txt.attr ・・・ インデックス管理属性ファイル(内容は空にする)
  • serial ・・・ 証明書シリアルナンバー(内容は01にする)

まずフォルダを作成します。
C:\Users\hinfo\openssl>cd demoCA
C:\Users\hinfo\openssl\demoCA>mkdir certs
C:\Users\hinfo\openssl\demoCA>mkdir crl
C:\Users\hinfo\openssl\demoCA>mkdir newcerts
C:\Users\hinfo\openssl\demoCA>mkdir private
テキストファイルはメモ帳で作成します。 例えばコマンドプロンプトからメモ帳でindex.txtを作成するには次のようにします。
C:\Users\hinfo\openssl\demoCA>notepad index.txt
すると「index.txtが見つかりません。新しく作成しますか?」とメッセージが出るので「はい」を押し,メモ帳が開いたら,何もせずそのまま終了させます。これで中身が空のindex.txtが作成されます。 同様にしてindex.txt.attrやserialも作成します。ただし,serialにはメモ帳が開いたとき01とだけ入力してから保存します。

独自認証局の秘密鍵とルート証明書の作成

opensslコマンドを使って独自認証局の秘密鍵とルート証明書を作成します。 この作業はC:\Users\hinfo\openssl\demoCAで行います。
C:\Users\hinfo\openssl\demoCA>openssl
OpenSSL> req -new -x509 -keyout private/cakey.pem -out cacert.pem -days 3650
Generating a 2048 bit RSA private key
..........+++
...+++
writing new private key to 'private/cakey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Okayama
Locality Name (eg, city) []:Kurashiki
Organization Name (eg, company) [Internet Widgits Pty Ltd]:KUMW
Organizational Unit Name (eg, section) []:Hinfo
Common Name (e.g. server FQDN or YOUR name) []:PDC120 CA
Email Address []:mtanaka@mw.kawasaki-m.ac.jp
OpenSSL>
1行目は,opensslコマンドを対話モードで実行しているところです。 2行目は,opensslのコマンドプロンプトで秘密鍵の作成とルート証明書の作成を行っているところです。 秘密鍵は-keyoutオプションを使ってカレントディレクトリ上のprivateディレクトリ内にcakey.pemという名前で作成し,ルート証明書は-outオプションを使ってカレントディレクトリ(つまり,C:\Users\hinfo\openssl\demoCA)にcacert.pemという名前で作成しています。