fc2ブログ
Dies irae

  Top > SSL > SSLの設定  

SSLの設定

2011 - 05/10 [Tue] - 00:31

通信の秘匿性強化のためにSSLの導入をします。これはWebページやMailサーバにも利用することができ、中々重要度が高いです。
出てくるファイルがごちゃごちゃになりやすいので「SSLのファイルの区別やら手続きの流れ」を一読しておくと理解しやすいと思います。
とりあえず出来ればいいという方はそのまま進めてください。

これにはやり方が2通りあります。
①独自CA(認証局)を開設して、CA秘密鍵、CA証明書を作成し、その後で秘密鍵、証明書要求(公開鍵)を作成。そしてCA証明書を使って証明書要求を元にサーバ証明書を作成。CAの情報が署名に載ります。

②秘密鍵、証明書要求を作成し、opensslの自己署名コマンドで証明書要求を元にサーバ証明書を作成。署名と証明書要求の申請者情報が同一になります。


今回は手間の少ない②を使用します。

さてそれでは始めます。まずsslのフォルダにCAフォルダを作成します。この中に秘密鍵など入れてきます。

# mkdir /etc/ssl/CA
# cd /etc/ssl/CA



◆サーバ側秘密鍵作成
今回鍵の名前はserver.keyとします。
下のコマンドはRSA鍵を生成し、暗号化アルゴリズムはDES3、鍵長1024ビットで指定、としています。

$ sudo 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:yyyy   # パスフレーズ設定
Verifying - Enter pass phrase for server.key:yyyy   # 確認再入力

また補足ですが暗号化アルゴリズムをAES256で、鍵長2048ビットであれば
$ sudo openssl genrsa -aes256 -out server.key 2048

のように書きます。この辺はopensslコマンドを参考にしてください。


◆秘密鍵からパスフレーズ削除
秘密鍵からパスフレーズを削除します。このようにして作成した鍵をApacheで使用すると、Apacheの起動時に毎回パスフレーズを聞かれます。自動起動させる場合は邪魔な場合は、鍵からパスフレーズを削除します。(もちろんセキュリティ上は毎回パスフレーズを入力するほうが望ましいですが)

$ sudo openssl rsa -in server.key -out server.key

Enter pass phrase for server.key:yyyy   # さきほどのパスフレーズを入力
writing RSA key


◆秘密鍵から証明書要求(公開鍵でもある)を作成
次にサーバ証明証要求ファイルCSRを作ります(同様にserver.csr)。CSRとは、サイト証明書を発行するためのリクエストです。-daysオプションで証明書の有効期限を設定できます。下の場合は3650=10年です。

$ sudo openssl req -new -days 3650 -key server.key -out server.csr

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]:Tokyo   # 地域(県)
Locality Name (eg, city) []:Tokyo   # 都市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:○○   # 組織名
Organizational Unit Name (eg, section) []:IT Solution    # 組織の部門名
Common Name (eg, YOUR name) []:www.○○○.com   # サーバーのFQDN(ホスト名)
Email Address []:xxx@yahoo.co.jp   # 管理者アドレス

ここのホスト名は、必ずhttp://・・・・でアクセスするホスト名とすること。

次の部分は'extra'なので入力不要です。
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:



◆サーバ証明書の作成
先ほどのCSRをVeriSignなどの認証局に送ると公的なサーバ証明書が発行されます。
ただそうするのはクレジット会社など信頼の必要なところくらいで、個人でサーバを構築する場合は自前で署名で証明書を発行します。その場合は、以下のようにします。

$ sudo openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650

Signature ok
subject=/C=JP/ST=Tokyo/L=Tokyo/O=○○/OU=IT Solution/CN=www.○○○.com/emailAddress=xxx@yahoo.co.jp
Getting Private key



作成後、所有者(root)以外アクセスできないよう、モードを変更しておきます。

$ sudo chmod 400 server.*


とりあえず発行まで。ApacheやWebDAVとの組み合わせは「WebDAV(HTTPS)の設定」を参考にしてください。


◆補足
ちなみに公的な認証局のルート証明書が/etc/ssl/certsに入っています。これは別の時に使うことがある(メールのリレー送信時など)ので消さないようにしてください。


ソース:
SSL証明書を作成する
サーバ証明書の作成
SSL証明書作成
opensslコマンド

コメントの投稿





管理者にだけ表示を許可する

 | ホーム | 

プロフィール

Cicatrice

Author:Cicatrice

検索フォーム

カテゴリ

最新記事