NginxをWebサーバー“以外”でも徹底活用するこれから始める人のためのNginx(3)(3/4 ページ)

» 2014年09月18日 17時47分 公開
[鶴長鎮一@IT]

NginxでHTTPSを実現

 NginxにSSLサーバー証明書をインストールすることで、HTTPSに対応することができます。SSLサーバー証明書は正規の認証局から発行されたものでも、自己署名したものでも、どちらも利用できます。

SSLサーバー証明書の作成

 SSLサーバー証明書はベリサインやサイバートラストのような正規の認証局から購入できます。商用では正規の証明書を使うのがありふれた手法ですが、試験や評価に使用したい場合や、イントラネット内のローカルサービスで利用する場合に、自己発行証明書で代用できます。CentOS 7なら簡単な手順で証明書を自己発行することができます。

1)ディレクトリを移動

# cd /etc/pki/tls/certs/

2)秘密鍵の作成(鍵長は2048bit)

# make server.key
...省略...
Enter pass phrase:			<--パスフレーズを入力
Verifying - Enter pass phrase:	<--パスフレーズを再入力

3)秘密鍵からパスフレーズを削除

# openssl rsa -in server.key -out server.key
Enter pass phrase for server.key:	<--先ほど設定したパスフレーズを入力

4)公開鍵の作成

# make server.csr
...省略...
Country Name (2 letter code) [XX]:JP		<--国を入力
State or Province Name (full name) []:Tokyo	<--都道府県を入力
Locality Name (eg, city) [Default City]:Minatoku	<-- 市区町村を入力
Organization Name (eg, company) [Default Company Ltd]:itmedia	<--会社・組織名を入力
Organizational Unit Name (eg, section) []:linux					<--部署名を入力
Common Name (eg, your name or your server's hostname) []:www.example.jp		<--サーバのFQDNなどサーバ固有の名称を入力
Email Address []:foo@example.jp				<--管理者のメールアドレスを入力
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:			<--エンターをタイプ
An optional company name []:		<--エンターをタイプ

5)SSLサーバー証明書を自己発行(有効期限を365日に設定)

# openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365

6)SSLサーバー証明書と秘密鍵を/etc/nginxに移動

# mv server.crt /etc/nginx/		<--SSLサーバー証明書
# mv server.key /etc/nginx/		<--秘密鍵

Nginxの設定

 Nginxを設定し、作成した秘密鍵やSSLサーバー証明書を指定します。指定は「server {}」ディレクティブの中で行います。設定後Nginxサービスを再起動し、クライアントから「https://サーバーのアドレス」にアクセスします。なお自己発行した証明書を使用しているため、ブラウザーによっては図4のような警告が表示されます。

server {
    #listen       80;	<--HTTPを無効にする場合はコメントアウト
    server_name www.example.jp;
    listen 443 ssl;		<--HTTPSのサービスポート番号に443番と指定
    ssl on;				<--HTTPSを有効に
    ssl_certificate server.crt;			<--サーバー証明書を指定
    ssl_certificate_key server.key;		<--機密鍵を指定
「/etc/nginx/conf.d/default.conf」編集
図4「自己発行した証明書を使用した場合に表示されるブラウザーの警告(Firefoxの場合)」

SSLアクセラレーションとして活用する際の注意

 HTTPSリクエストをNginxで終端させ、バックエンドのWebサーバーにリクエストを分散させることで、HTTPSアクセラレーションが可能です。NginxとバックエンドのWebサーバーとはHTTPで通信するため、Webサーバー側にSSLサーバー証明書は不要です。ただし、認証局によっては証明書をインストールするサーバーの台数ではなく、バックエンドにあるサーバーの台数分購入が必要になる場合があるため注意します。

図5「NginxをSSLアクセラレーターとして活用する」

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。