サーバ認証を行う環境を作るには,以下の手順で処理を行います.
処理内容 | 処理する人 |
---|
鍵ペア(秘密鍵と公開鍵)とCSR(証明書要求)を作成し、CSRをCAに送る |
サーバの管理者 |
受け取ったCSRから証明書を作り,要求者に送り返す | CAの管理者 |
CAから受け取った証明書と秘密鍵をサーバに組み込む | サーバの管理者 |
CAが公開しているCA自身の証明書をクライアントに組み込んで、
サーバにアクセスする
(よく知られているCAについては、ブラウザに最初から
そのCAの証明書が組み込まれているならこの処理は不要)
| クライアント |
一般に広く信頼されているCAに依頼してサーバ証明書を発行してもらう場合は
この手順が必要です.
しかし、自分で立ち上げたCAで処理を行う場合もこの方法で処理を行います.
ただ、一人でサーバ管理者の役割とCAの管理者の役割を担当することになり、
処理をする際に同じマシン上で、同じユーザ(rootなど)で
作業をする場合があります。
この際にどんな立場でどんな処理を行っているか認識していないと、
どの秘密鍵はだれが所有しているのかとか、
どの証明書をどこに置くのかなどを間違ってしまう場合があります。
例えば,CAの秘密鍵とサーバの秘密鍵は区別して、アクセスモードも
それに応じた設定をするべきですし、CAの証明書とサーバの証明書も
混同してはなりません。
それで、以下に自分で構築したCAによるサーバ認証の環境を作る
作業を説明しますが,各処理を行う際に、
自分がどんな立場でコマンドを実行しているのか
認識するようにしてください。
鍵ペアとCSRの作成
以下のコマンドを実行してCSRの作成します。
この処理は証明するサーバの管理者
の立場で実行します。
% openssl req -new -keyout key.pem -out csr.pem
|
これにより、秘密鍵を収めたファイルがkey.pemに
公開鍵とサーバの情報が入った証明書要求(CSR)が
csr.pemにできます。この証明書要求(CSR)の中には公開鍵と
証明する内容が含まれています.
このcsr.pemをCAに送って署名してもらい証明書を作ってもらいます.
(自分でCAをやっている場合は、異なる立場の自分に依頼していることを
意識して、処理を進めるとといいと思います)
CSRに署名し,証明書を作る
次にCSRに署名して証明書を作ります.
この処理はCAの管理者の立場で実行します。
それで、CAの管理者がアクセスできるCAの秘密鍵にアクセス権限が
ある状態でコマンドを実行します。さらに途中で
CAの秘密鍵のパスフレーズを
入力する必要があります。
# openssl ca -out cert.pem -infiles csr.pem
|
これでcert.pemという証明書ができあがりました。
この証明書をサーバの管理者に渡します.
(自分でCAをやっている場合は、ここでまた立場が変わることを
念頭においてください)
証明書と秘密鍵をサーバに組み込む
CSRを作った際にできた秘密鍵(上の場合だとkey.pem)とCAに
から受け取った証明書をサーバに組み込みます。
apacheで作ったWWWサーバに組み込むため例を示します.
これを行うにはhttpd.confに"SSLEnable"などを含むSSLを使う設定をします。
(これについては
Apache-SSLの設定を参照してください)
その設定の中で,証明書と秘密鍵に関する項目は以下の部分です。
SSLCertificateFile |
このサーバの証明書のファイルのパスを指定します |
SSLCertificateKeyFile |
このサーバの秘密鍵を収めたファイルのパスを指定します。
(証明書のファイルに秘密鍵が含まれている場合は設定する必要はありません)
|
設定の例を示します.
SSLCertificateFile /usr/local/apache/ssl/certs/cert.pem
SSLCertificateKeyFile /usr/local/apache/ssl/private/key.pem
|
設定が終了したらhttpdを起動すればOKです。起動時には
サーバの秘密鍵のパスフレーズが聞かれるので、
それを入力してください。
クライアントにCAの証明書を組み込む
ここで組み込むのはCAの証明書であって、
サーバの証明書ではありません。サーバの証明書はSSL通信の最初に
サーバからクライアントへ送られます。
ダウンロードする方法
/usr/local/apache/htdocs/certs/
|
DERの形式の証明書は
# openssl x509 -inform pem -outform der -in cacert.pem -out cacert.der
で作る
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl
|
LDAPで組み込む方法
手動で組み込む方法