SSL暗号化プロトコルに必要な証明書の作成

sshやsslを利用する上で、証明書が必要になります。そこで、証明書の種類や、作成方法について調べてみました。とくに、CA証明型証明書の作成について詳しく調べたのでまとめておきます。

証明書には、次の2種類があり、それぞれ特徴があるようです。

「CA(認証局)署名型証明書」

  • 認証局(CA)がサーバー管理者に発行した証明書
  • クライアント認証が可能

「自己証明型証明書」

  • ローカルで作成した公開鍵、秘密鍵を使った証明書
  • 公開鍵と秘密鍵をひとつのファイルにすることも可能
  • クライアント認証は不可

CA(認証局)署名型証明書を作成する手順をまとめました。

CA(認証局)の構築

必要なディレクトリとファイルを作成

kuroboxhg:~# cd /var/
kuroboxhg:/var# mkdir ssl
kuroboxhg:/var# cd ssl
kuroboxhg:/var/ssl# mkdir CA
kuroboxhg:/var/ssl# cd CA
kuroboxhg:/var/ssl/CA# mkdir certs crl newcerts privat
kuroboxhg:/var/ssl/CA# chmod 700 private
kuroboxhg:/var/ssl/CA# echo "01" > serial
kuroboxhg:/var/ssl/CA# touch index.txt

設定ファイルのバックアップ

kuroboxhg:/var/ssl/CA# cp /etc/ssl/openssl.cnf /etc/ssl/openssl.cnf.original

設定ファイルの編集

設定ファイル「/etc/ssl/openssl.cnf」を編集します。

[ CA_default ]
# dir = ./demoCA # Where everything is kept
dir = /var/ssl/CA

自己署名済みの証明書と秘密鍵の生成(CA用)

kuroboxhg:/var/ssl/CA# openssl req -new -x509 -keyout private/cakey.pem -out cacert.pem -days 7000

パスワードの入力を求められるので、入力します。

Enter PEM pass phrase:********
Verifying password - Enter PEM pass phrase:********

パスワード入力後、各質問事項に答えます。

Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:OSAK
Locality Name (eg, city) []:OSAKA
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Uetyi Ltd
Organizational Unit Name (eg, section) []:System
Common Name (eg, YOUR name) []:kuroboxhg
Email Address []:info@uetyi.mydns.jp

以下のファイルが作成されています。

/var/ssl/CA/cacert.pem (自己署名済みの証明書)
/var/ssl/CA/private/cakey.pem(秘密鍵)

以上でCA構築終了です。

署名要求(CSR)の作成

サーバ用秘密鍵の生成

kuroboxhg:~# cd /etc/apache2/ssl/
kuroboxhg:~# openssl genrsa -des3 -out server.key 1024

パスフレーズを入力します。

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:**********

最後にApache起動時にパスレーズを聞かれないよう解除します。

kuroboxhg:~# openssl rsa -in server.key -out apache2.key
Enter pass phrase for server.key:**********
writing RSA key

以下のファイルが作成されています。

/etc/apache2/ssl/apache2.key(サーバ用の秘密鍵)

署名要求(CSR)の作成

kuroboxhg:/etc/apache2/ssl# openssl rsa -in apache2.key -out apache2.csr

以下の質問事項に答えます。

Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:OSAKA
Locality Name (eg, city) []:OSAKA
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Uetyi Ltd
Organizational Unit Name (eg, section) []:System
Common Name (eg, YOUR name) []:www.uetyi.mydns.jp
Email Address []:info@uetyi.mydns.jp

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

以下にファイルが作成されています。

/etc/apache2/ssl/apache2.csr(サーバの署名要求書)

CA(認証局)による署名作業

kuroboxhg:/etc/apache2/ssl# cp /etc/ssl/openssl.cnf /var/ssl/openssl_server.cnf
kuroboxhg:/etc/apache2/ssl# vi /etc/ssl/openssl_server.cnf

以下の行のコメントを外し有効にしてください。

[usr_cert]
nsCertType = server

証明を作成します。

kuroboxhg:/etc/apache2/ssl# openssl ca -config /var/ssl/openssl_server.cnf -policy policy_anything -out apache2.pem -in apache2.csr
Enter PEM pass phrase:**********
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]:y

以下にファイルが作成されています。

/etc/apache2/ssl/apache2.pem(サーバの証明書)

Apache設定ファイル編集

kuroboxhg:/etc/apache2/ssl# vi /etc/apache2/sites-available/ssl

サーバの証明書とサーバの秘密鍵のパスを設定します。

SSLCertificateFile  /etc/apache2/ssl/apache2.pem
SSLCertificateKeyFile /etc/apache2/ssl/apache2.key
スポンサーリンク







シェアする

  • このエントリーをはてなブックマークに追加

フォローする