はじめに、例えばKeyGenという名でデスクトップ上に作業ディレクトリを作成する。
|
|
1) 乱数(rand.dat)の作成:乱数の種になるデータを作成する。
|
% cd /
% openssl md5 * > ~/Desktop/KeyGen/rand.dat
|
|
コメント:以下のエラーが表示されるが構わず利用する。
|
Read Error
in Applications
9762:error:0200B001:system library:fread:Operation
not permitted:bss_file.c:167:
9762:error:20082002:BIO routines:FILE_READ:system
lib:bss_file.c:168:
Read Error in Applications (Mac OS 9)
9762:error:0200B001:system library:fread:Operation
not permitted:bss_file.c:167:
ー以下略ー
|
|
rand.datの内容は以下の通り。
|
MD5(0)= d41d8cd98f00b204e9800998ecf8427e
MD5(Desktop DB)= 36bfdf54cecbcd6965b22691b3a5f525
MD5(Desktop DF)= 8150b47a7157ebd6047d2f5e73f9fe59
MD5(Desktop DF - for rebuild)= 7209a1ce16f85bd1cbd287134ff5cbb6
MD5(NAVMac800QSFile)= a05cff0a63dffcf9e0101278bbe9eb6e
MD5(NAVェ 7.0 QuickScan)= b65cbbf131357898626ce2f29f3a3440
ー以下略ー
|
|
2) サーバー鍵及び証明書署名要求(CSR:Certificate
Signing Request)の作成
ここからは4)までは、KeyGenディレクトリに移って作業をする。
|
|
2-1) サーバー鍵(server.key)の作成:
RSA (RSA公開鍵方式) の秘密鍵 (実際は秘密鍵と公開鍵のペア) を作成する。パスフレーズ (パスワード)
を要求されるので適当に入れる。
|
% openssl
genrsa -des3 -out server.key -rand rand.dat
1024
|
|
コメント:Apacheを停止してないと、上のコマンドは有効に機能しない!
|
686 semi-random
bytes loaded
Generating RSA private key, 1024 bit long modulus
...................++++++
.................................................++++++
e is 65537 (0x10001)
Enter pass phrase for server.key: パスフレーズを入れる
Verifying - Enter pass phrase for server.key:
パスフレーズを入れる
|
|
|
2-2) 証明書署名要求(server.csr)の作成:
署名のためにCA (Certificate Authority = 認証局) へ送るもの。通常、買物サイトなどでは、ベリサイン等のパブリックCAに署名を依頼することになる。
|
% openssl
req -new -key server.key -out server.csr
|
|
Enter pass
phrase for server.key: パスフレーズを入れる
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]:Aichi
Locality Name (eg, city) []:Anjo
Organization Name (eg, company) [Internet Widgits
Pty Ltd]:kakonacl
Organizational Unit Name (eg, section) []:ken
Common Name (eg, YOUR name) []:kakonacl.dip.jp
Email Address []:xxx@yyy
Please
enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:.
An optional company name []:.
|
|
コメント:ここでの「
Common Name」 には,後に httpd.conf に書き込むドメインサーバ名(今回はkakonacl.dip.jp)を入れる。ここが違うとSSLが有効にならない。
|
|
3) CAの鍵及びCA証明書の作成
CA (Certificate Authority = 認証局)は ベリサイン等の第三者である必要があるが,自らが
CA になることもできる。テストであれば,これで十分。但し,ブラウザが「不明な認証機関」と警告を発するが・・・。
|
3-1) CAの鍵(ca.key)の作成:
|
% openssl
genrsa -des3 -out ca.key -rand rand.dat 1024
|
|
686 semi-random
bytes loaded
Generating RSA private key, 1024 bit long modulus
. ....++++++
.................++++++
e is 65537 (0x10001)
Enter pass phrase for ca.key: パスフレーズを入れる
Verifying - Enter pass phrase for ca.key: パスフレーズを入れる
|
|
3-2) CA証明書(ca.crt)の作成:
今作った秘密鍵を使って自己署名のCA証明書 (ルート証明書) を作成する。
|
% openssl
req -new -x509 -days 365 -key ca.key -out ca.crt
|
|
コメント:CSRの時とは少し違う。「Common
Name」はここでは自分の名前を入れる。
|
Enter pass
phrase for ca.key: パスフレーズを入れる
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]:Aichi
Locality Name (eg, city) []:Anjo
Organization Name (eg, company) [Internet Widgits
Pty Ltd]:kakonacl
Organizational Unit Name (eg, section) []:ken
Common Name (eg, YOUR name) []:kenji
kamiya
Email Address []:xxx@yyy
|
|
|
4) 署名済みサーバ証明書(server.crt)の作成
プライベートCAとして2-2)で作成した server.csr に署名することで,自前のサーバ証明書server.crtを作る。パブリックCAへ頼んだ場合は、署名済みサーバ証明書が送られてくる。
このためには、事前準備の5)で準備したsign.shスクリプトを作業ディレクトリにコピーしておいて実行する。
|
|
CA signing:
server.csr -> server.crt:
Using configuration from ca.config
Enter pass phrase for ./ca.key: パスフレーズを入れる
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'JP'
stateOrProvinceName :PRINTABLE:'Aichi'
localityName :PRINTABLE:'Anjo'
organizationName :PRINTABLE:'kakonacl'
organizationalUnitName:PRINTABLE:'ken'
commonName :PRINTABLE:'kakonacl.dip.jp'
emailAddress :IA5STRING:'xxx@yyy'
Certificate is to be certified until Jun 25
10:33:08 2005 GMT (365 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified,
commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
CA verifying: server.crt <-> CA cert
server.crt: OK
|
|