※注)このページに書かれている事を信用し、 あなたが何らかの被害を被ったとしても、 当方では一切関知しません。(お約束ネ!)
CSR を OpenSSL を利用して作成するには、以下の様な手順を踏みます。
これが無いと始りません。
OpenSSL を取って来て下さい。
SSLeay は 0.8.1a から OpenSSL へと移行したみたいです。
今後は OpenSSL を使いましょう。
SSLeay だと Apache-mod-ssl 等がコンパイル出来ないこともありますしね。
さて、無事に取って来れましたでしょうか?
私は openssl-0.9.2b を取って来ました。
早速展開して、サクっと make してしまって下さい。
INSTALL ドキュメントに書いてある通りに、な〜んも考えずに、
で OK でした。 デフォルトのままだと、/usr/local/ssl へインストールされるので、 『そんなのイヤだよ〜』なんて人は、perl を用意して、make の前に、
を実行してみて下さい。
/new/install/path へインストール先ディレクトリを変更できます。
※ アメリカ合衆国に住んでいる人は、RSA の特許に引っかかるので、
RSA からライブラリをゲットして、OpenSSL に組み込んで下さい。
詳細は、OpenSSL のドキュメント、
Web サイトを御覧下さい。
うまく make & install 出来ましたか?
OpenSSL を利用して、プライベート鍵を作成します。 下準備として、乱数を発生させるためのデータファイルを用意します。 例えば、いくつかのバイナリファイルやテキストファイルを用意し、 一つのファイルに結合します。
乱数を発生させるための「タネ」ファイルが用意できたら、
いよいよプライベート鍵の作成です。openssl にパスは通してありますか?
以下の様に実行します。
% openssl genrsa -rand /tmp/random.dat -des 1024 > private.pem unable to load 'random state' 18458 semi-random bytes loaded Generating RSA private key, 1024 bit long modulus .......................................+++++ .+++++ e is 65537 (0x10001) Enter PEM pass phrase: < Pass phrase を入力(絶対忘れてはイケナイ) > Verifying password - Enter PEM pass phrase: < 同じモノをもう一度入力 > |
で出来ます。
前工程で作成した、プライベート鍵から CSR (証明書署名要求)
を作成します。
ここで出来たファイルを CA 機関(Verisign, RSA Data Security, etc...)
へ送付し、署名してもらいます。
もちろん、自分で作った簡易 CA 局でも署名できます。
以下の様に実行し、CSR を作成します。
% openssl req -new -key private.pem -out csr.pem Using configuration from /usr/local/openssl/lib/openssl.cnf Enter PEM pass phrase: < プライベート鍵作成時に設定した 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]:Kanagawa Locality Name (eg, city) []:Yokohama Organization Name (eg, company) [Internet Widgits Pty Ltd]:Takashi Communications Inc. Organizational Unit Name (eg, section) []:The Mail Systems Dept. Common Name (eg, YOUR name) []:www.ssl.nekoneko.co.jp < SSLサーバとしたいWebサーバのFQDN > Email Address []:webmaster@ssl.nekoneko.co.jp < SSLサーバの管理者メールアドレス > Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: < オプションなので入力不要 > An optional company name []: < オプションなので入力不要 > |
-----BEGIN CERTIFICATE REQUEST----- alsdkfjioiaerjfi2lksdflkasdASDFjoiadvksdfienljoijwefsdfdfkjASDfd f3oijalskdfjoinadmfnvlkjrifgjlkjgaASEViuhuSAoiuashlGi4asu2094jdf DFlsdasdfiHJgighiIEluYy4xJDAiBgNVBAsTGkasjdfib3ASlskdjfi3nasdj8A < snip... > asdfij2i3u887yh5EBBAUA89afdhkjvn8iufh83kajs7ig2j31kmnASDFibfIhDQ 3xcgDMfS3jCt2LF1KMFqlbbPfPZP52nPE6lbA4GBAIesd12398asdhjOsdfdgt7A asdfi/ashjasdfefpXYO/nJsdlfijoijasdfHkZsdfu8/o9sdfu12SD -----END CERTIFICATE REQUEST----- |
これまでの手順をまとめると、以下の様になります。
ファイル名 | 説明 |
---|---|
random.dat | プライベート鍵を作成する際に乱数を発生させるための「タネ」ファイル |
private.pem | プライベート鍵(秘密鍵) 公開不要なので、-r-------- が望ましい |
csr.pem | 証明書署名要求 (CSR) このファイルを CA 機関へ送付し署名してもらう |
Common Name | SSLサーバにしたいマシンのFQDN FQDN…完全なインターネットドメインネームアドレス |
Email Address | SSLサーバにしたいマシンの管理者メールアドレス |
CA 機関から送られてきた署名済証明書を、 利用したい SSL アプリケーションに組み込めば、 SSL 通信が使用できる様になるはずです。
参考までに Apache + mod_ssl での設定方法を記述します。 httpd.conf の以下のエントリを設定します。
エントリ名 | 値 |
---|---|
< IfDefine SSL > | SSL を利用したい時の設定開始合図 |
< VirtualHost _default_:443 > | 同じホスト名で https プロトコル(SSL通信)を利用する際の設定開始合図 |
SSLEngine | on |
SSLCertificateFile | /usr/local/ssl/certs/httpd-cer.pem CA 機関に署名してもらった証明書のファイル。 CA 機関へ CSR (csr.pem) を送付後、折り返し送られてきているハズ。 |
SSLCertificateKeyFile | /usr/local/openssl/private/private.pem |
SSLVerifyClient | none |
SSLVerifyDepth | 10 |
SetEnvIf User-Agent | ".*MSIE.*" nokeepalive ssl-unclean-shutdown |
< /VirtualHost > | 対応する開始合図の終了宣言 |
< Directory "/usr/local/htdocs/secret" > | ディレクトリ毎の設定 |
SSLRequireSSL | /usr/local/htdocs/secret ディレクトリ以下は SSL 通信を要求する設定 |
< /Directory > | ディレクトリ毎の設定終了宣言 |