■セキュアサーバーの構築
Turbolinux 10 Server の Apache 2.0 は、SSL (Secure Sockets Layer) を実装する mod_ssl モジュールが標準で組み込まれています。mod_ssl は、オープンソースとして非常に有名な OpenSSL プロジェクト(http://www.openssl.org/)から提供されるソフトウェアを利用してクライアントの Web ブラウザとセキュアな暗号化通信を実現します。
■ https でのアクセス
mod_ssl が機能していることを確認してみましょう。https://
ホスト名/ のように URL を入力して Apache Web サーバーへアクセスします。"https" であることに注意してください。
証明書の受け入れを確認するダイアログが表示されます。以下は、Mozilla Web ブラウザでの例です。ブラウザの指示に従い証明書を受け入れれば、その後の通信は SSL により暗号化されます。
※注意 Web サーバーが日本 VeriSign やセコムトラストネットなどが運営する CA(Certification Authority:認証局)によって署名された証明書を保持している場合、ブラウザは自動的にその証明書を受け入れるため、このようなダイアログは表示されません。
■ サーバー証明書の取得方法
認証局からサーバー証明書を取得し、Turbolinux 10 Server の Apache Web サーバーに格納するまでの一般的な手順は次のようになります。
- Apache Web サーバーのための秘密鍵(Server Private Key)の作成
- サーバー証明書署名要求(Certificate Signing Request - CSR)の作成
- 認証局に CSR を提出し、サーバー証明書(Server Certificate)を取得
- 取得したサーバー証明書(Server Certificate)を Apache Web サーバーの所定ディレクトリへ保存
○ 秘密鍵(/etc/httpd/conf/ssl.key/server.key)の生成
/etc/httpd/conf/ssl.key/ ディレクトリにサイトの暗号鍵を生成します。以下の例では、1024bit 長の RSA 方式の秘密鍵を生成しています。
# cd /etc/httpd/conf/ssl.key
# openssl genrsa -out server.key -des3 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: ←パスフレーズの入力
|
作成した server.key はセキュアサーバーを構築するために非常に重要なファイルとなります。root だけがアクセスできるようにパーミッションを変更しておきます。
○ サーバー証明書署名要求(/etc/httpd/conf/ssl.csr/server.csr)の生成
作成した秘密鍵(server.key)をもとに、サーバー証明書署名要求(server.csr)を生成します。この例は、有効期限が 365 日のサーバー証明書署名要求を生成します。-key オプションには秘密鍵を指定します。
# cd /etc/httpd/conf/ssl.csr
# openssl req -new -key ../ssl.key/server.key -days 365 -out server.csr
Enter pass phrase for ../ssl.key/server.key : ←秘密鍵のパスフレーズ
|
パスフレーズの入力を要求されますので、秘密鍵(server.key)の生成時に入力したパスフレーズを入力します。続いて一連の設定項目の入力を促されます。各項目への応答を入力してください。応答の例を以下に示します。必要なデータは CA により異なりますので各認証機関の手順に従ってください。
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) []:Shibuya
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Mycompany<.b>
Organizational Unit Name (eg, section) []:Doc
Common Name (eg, YOUR name) []:example.com
Email Address []:taro@example.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
|
サーバー証明書署名要求となる /etc/httpd/conf/ssl.csr/server.csr が生成されます。サーバー証明書の発行を取得するには、このファイルを CA に送付します。サイトを本稼動する前に CA の手続きに従い、サーバー証明書を取得してください。サーバー証明書署名要求の提出には、Web ページのフォームや E-mail を利用することが多いようです。CA では、身元を確認すると署名済みのサーバー証明書(Server Certificate)を作成し、要求元に届けます。取得したサーバー証明書を server.crt というファイル名で /etc/httpd/ssl.crt/ ディレクトリに保存してください。
■ Apache の起動
取得あひたサーバー証明書の配置後、Apache を起動します。
# /etc/init.d/httpd restart
Stopping httpd: OK
Starting httpd: Apache/2.0.50 mod_ssl/2.0.50 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide us with the pass phrases.
Server new.host.name:443 (RSA)
Enter pass phrase: ←秘密鍵のパスフレーズ
Ok: Pass Phrase Dialog successful.
OK
|
秘密鍵を復号するために、httpd の起動時にパスフレーズの入力を求められます。秘密鍵の生成時に入力したパスフレーズを入力します。
<<Turbolinux 10 Server チュートリアルに戻る