NginxにSSLサーバー証明書をインストールすることで、HTTPSに対応することができます。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を設定し、作成した秘密鍵や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; <--機密鍵を指定
HTTPSリクエストをNginxで終端させ、バックエンドのWebサーバーにリクエストを分散させることで、HTTPSアクセラレーションが可能です。NginxとバックエンドのWebサーバーとはHTTPで通信するため、Webサーバー側にSSLサーバー証明書は不要です。ただし、認証局によっては証明書をインストールするサーバーの台数ではなく、バックエンドにあるサーバーの台数分購入が必要になる場合があるため注意します。
Copyright © ITmedia, Inc. All Rights Reserved.