まず、OpenSSLがインストールされているとして進めます。
本来、信頼のある認証局に認証してもらいますが 今回は、自分で認証するための自己認証局を作成します。 CAの作成は、/usr/local/ssl/CAに行います。 あらかじめディレクトリを作成しておきます。
OpenSSLがインストールされているディレクトリにある miscディレクトリにCA.shというスクリプトがあります。 このスクリプトで認証局を構築することができます。
CA.shをCAの作成場所にコピーします。
cp CA.sh /usr/local/ssl/CA
構築する場所等を変更するためスクリプトを少し修正します。 openssl.cnfの[CA_default]-dirも同様に修正します。
DAYS="-day 3650" CATOP=/usr/local/ssl/CA CAKEY=./cakey.pem CACERT=./cacert.pem
これで、認証局の構築準備ができたので
CA.sh -newca
を実行します。 スクリプト内部では、ディレクトリの作成とコマンドが実行されます。
openssl req -new -x509 -keyout /usr/local/CA/private/cakey.pem \ -out /usr/local/CA/cacert.pem -days 3650
コマンドを実行すると、以下のように入力が求められます。
CA certificate filename (or enter to create) 【Enter】 Making CA certificate ... Using configuration from /usr/local/ssl/openssl.cnf Generating a 1024 bit RSA private key ..........................++++++ ...............................++++++ writing new private key to './demoCA/private/./cakey.pem' Enter PEM pass phrase: 【適当なパスフレーズ】 Verifying password - 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 Namer or a DN. There are quite a few fields bur 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]:【Tokyo:都道府県名】 Locality Name (eg, city)[]:【Chofu-shi:市区町村】 Organization Name(eg, company)[Internet Widgits Pty Ltd]:【bnote:組織名(法人名)】 Organization Unit Name (eg, section)[]:【System:部署名】 Common Name (eg, your name or your server's hostname)[]:【bnote.sample.jp:サーバのホスト名(FQDN)等】 Email Address []:【master@sample.jp:メールアドレス】
これで/usr/local/CAに認証局の証明書(cacert.pem)と /usr/local/CA/privateに認証局の秘密鍵(cakey.pem)が 作成されます。
作成した証明書は、以下のコマンドで内容が確認できます。
openssl x509 -in cacert.pem -text
この証明書をバイナリー(DER)フォーマットにするには
openssl x509 -in cacert.pem -outform DER -out cacert.der
を実行します。 バイナリーにする方法にはBER,DER,PERなどがあるそうです。
参考:デジタル証明書の形式 PEMとはメールを暗号化するために規定されたものです。 PEMにおいては暗号化情報をメールで送るためにこれを テキスト形式で表現します。この暗号化情報のテキスト形式 のことをPEM形式と呼びます。多くの場合、DER形式の X509証明書をこの PEM形式に変換したものが用いられるようです。
証明書、CSR、および暗号化鍵のいずれも、 base64でエンコード により作られるこの形式で保存することができます。 このテキスト形式のファイルはHTTPサーバなどでも、この形式の ファイルを使う場合が多いようです。
サーバの秘密鍵や証明書は、/usr/local/ssl/SERVERに作成することとします。
mkdir /usr/local/ssl/SERVER chmod 600 /usr/local/ssl/SERVER
openssl genrsa -rand 適当なFile -des3 -out serverkey.pem 1024 又は openssl genrsa -des3 -out serverkey.pem 1024
コマンドを実行すると、以下のように入力を求められます。
Enter PEM pass phrase:(パスフレーズ入力) Verifying password - Enter PEM pass phrase:(パスフレーズ再入力)
これで、サーバの秘密鍵の完成です。 Apacheで使用する場合、Apacheを起動するたびにパスフレーズが 必要となるので、パスフレーズを解除します。 (セキュリティー上好ましくはないですね。)
openssl rsa -in serverkey.pem -out servernopasskey.pem
これでパスフレーズの外れた秘密鍵が出来上がります。
先ほど作成したサーバ鍵を基に認証局への署名要求書ファイルを 作成します。認証局は、この署名要求書ファイルを基に署名付の 証明書を作成してくれます。
openssl req -new -days 365 -key serverkey.pem -out csr.pem
コマンドを実行すると以下のように入力を求められます。 (同一ホストの自己認証局を利用する場合は、以下の情報はCA構築時 とまったく同じ内容で作成してください)
Country Name (2 letter code)[AU]: 【JP:国名】 State or Province Name (full name)[Some-State]:【Tokyo:都道府県名】 Locality Name (eg, city)[]:【Chofu-shi:市区町村】 Organization Name(eg, company)[Internet Widgits Pty Ltd]:【bnote:組織名(法人名)】 Organization Unit Name (eg, section)[]:【System:部署名】 Common Name (eg, your name or your server's hostname)[]:【bnote.sample.jp:サーバのホスト名(FQDN)等】 Email Address []:【master@sample.jp:メールアドレス】
これで署名要求書の作成は終了です。
次は、ここで作成した署名要求書を基にCAに署名して証明書を 発行してもらいます。
先ほど作成したサーバの署名要求書を基にCA(自己認証局)が署名し、 サーバの証明書を作成します。
cd /usr/local/ssl/CA openssl ca -in /usr/local/ssl/SERVER/csr.pem -keyfile \ private/cakey.pem -cert cacert.pem -out /usr/local/ssl/SERVER/cert.pem
これでサーバ証明書の作成は終了です。
Apache 2系はconfigureでenable-sslを指定してコンパイルしてください。 Apache 1.3系はmod_sslを入手してコンパイルしてください。 下記例は1.3系です。
/usr/local/apache/confにあるhttpd.confを編集します。
SSLEngine on SSLCertificateFile /usr/local/ssl/SERVER/cert.pem SSLCertificateKeyFile /usr/local/ssl/SERVER/servernopasskey.pem
とりあえず、ApacheのSSLの設定は終了です。 あとは、/usr/local/apache/bin/apachectl startsslでSSLを有効にして Apacheを起動します。
Copyright 1997-2010 BBB All rights reserved.