ここでは不特定多数に公開する WEB サーバーを対象としておりません。独自CA による WEBサイトの暗号化は限られた用途のみに限定する必要があります。
クライアント認証が目的の一つなので 自CA(認証局)は立ち上げている事が前提となります。まず、サーバー証明書の作成から行います。
今回、クライアント認証が導入目的の一つなので自CA署名による証明書の発行となります。SSLサーバーに必要なサーバー証明書を得るために、サーバー管理者は自CA管理者に渡すCSRを作成します。
Apacheの証明書カレントディレクトリは /etc/httpd/ssl としました。
Using configuration from /var/ssl/openssl.cnf
Generating a 1024 bit RSA private key
.......++++++
........................++++++
writing new private key to 'privkey.pem'
-----
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) [JP]:
State or Province Name (full name) [Aichi]:
Locality Name (eg, city) [Nagoya]:
Organization Name (eg, company) [Creative.Unit.ZERO]:
Organizational Unit Name (eg, section) [Design]:
Common Name (eg, YOUR name) []:www.mydomain.net
Eweb Address []:korogi@mydomain.net
Please enter the following 'extra' attributes
A challenge password []:そのままenter
An optional company name []:そのままenter
Common Nameはサーバー名となります。
この作業で /etc/httpd/ssl 下に以下のファイルが生成されます。
./newreq.pem (Webサーバーの署名要求書(CSR))
./privkey.pem (Webサーバーの秘密鍵)
この署名要求書を 安全な方法でCA管理者に渡し証明してもらうことで証明書が発行されます。
CA管理者の立場で、サーバー管理者の署名要求に対して答えます。ここではCAとWebサーバーは同一ホストで管理しています。セキュリティ上、CAは別のサーバーで行うのが望ましいので実際には署名要求書と証明書をサーバー管理者とCA管理者でやり取りを行います。
まず、Netscapeユーザーのためにopenssl.cnfの内容を次のように修正します。署名する度に証明書タイプを変更するのは面倒なので予め目的別の設定ファイルを用意しておきます。openssl.cnf の内容を以下のように修正し、openssl_server.cnf という名前で保存してください。
[ usr_cert ]
nsCertType = server
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
証明書署名要求の内容が正しければ Y
コミットするかに対し Y
この作業でサーバー証明書が CAのデータベースに登録され、サーバー証明書が生成されます。
/etc/httpd/ssl/cert.pem
自CAが別ホストの場合は、この証明書をサーバー管理者に安全な方法で渡し、サーバーのSSLカレントディレクトリに設置します。べりサインなどの公の認証機関から受ける証明書の場合も同様です。