開発者ドキュメント

Ubuntu14.04のNginxでSSL証明書を作成する方法

序章

TLS 、つまりトランスポート層セキュリティ、およびその前身である SSL は、セキュアソケットレイヤーの略で、通常のトラフィックを保護された暗号化ラッパーでラップするために使用されるWebプロトコルです。

このテクノロジーを使用すると、サーバーは、メッセージが外部の第三者によって傍受されて読み取られることを心配することなく、サーバーとクライアントの間でトラフィックを安全に送信できます。 証明書システムは、ユーザーが接続しているサイトのIDを確認するのにも役立ちます。

このガイドでは、Ubuntu14.04サーバー上のNginxWebサーバーで使用するための自己署名SSL証明書を設定する方法を示します。 自己署名証明書は、Webブラウザの信頼できる認証局の1つによって署名されていないため、ユーザーのサーバーのIDを検証しませんが、Webクライアントとの通信を暗号化できます。

注:自己署名証明書の代わりにLet’sEncryptの使用を検討することをお勧めします。 Let’s Encryptは、ほとんどのWebブラウザで信頼されている無料のSSL/TLS証明書を発行する新しい認証局です。 チュートリアルをチェックして開始してください: Ubuntu14.04でLet’sEncryptを使用してNginxを保護する方法

前提条件

このガイドを開始するには、サーバーにいくつかの基本的な設定を行う必要があります。

sudo権限を持つroot以外のユーザーを利用できるようにする必要があります。 Ubuntu 14.04 初期サーバー設定の手順1〜4に従って、このようなユーザーアカウントを設定する方法を学ぶことができます。

その後、NginxWebサーバーもインストールする必要があります。 LEMPスタック全体(Linux、Nginx、MySQL、PHP)をサーバーにインストールする場合は、 Ubuntu14.04でのLEMPのセットアップに関するガイドに従ってください。

Nginx Webサーバーが必要な場合は、代わりに次のように入力できます。

sudo apt-get update
sudo apt-get install nginx

ステップ1—SSL証明書を作成する

まず、すべてのSSL情報を保持するために使用されるディレクトリを作成することから始めます。 これは、Nginx構成ディレクトリの下に作成する必要があります。

sudo mkdir /etc/nginx/ssl

ファイルを配置する場所ができたので、次のように入力して、SSLキーと証明書ファイルを一度に作成できます。

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt

一連の質問があります。 それを説明する前に、発行しているコマンドで何が起こっているかを見てみましょう。

上で述べたように、これらのオプションはキーファイルと証明書の両方を作成します。 情報を証明書に正しく埋め込むために、サーバーについていくつか質問があります。

プロンプトに適切に記入します。 最も重要な行は、Common Name (e.g. server FQDN or YOUR name)を要求する行です。 サーバーに関連付けるドメイン名を入力する必要があります。 ドメイン名がない場合は、代わりにパブリックIPアドレスを入力できます。

プロンプト全体は次のようになります。

国名(2文字のコード)[AU]:米国の州または州の名前(フルネーム)[一部の州]:ニューヨークの地域名(例:市)[]:ニューヨーク市の組織名(例:会社)[インターネットWidgits Pty Ltd]: Bouncy Castles、Inc.組織単位名(例:セクション)[]: Ministry of Water Slidesの一般名(例: サーバーFQDNまたはあなたの名前)[]: your_domain.comメールアドレス[]: admin  @あなたの _domain.com

作成した両方のファイルが/etc/nginx/sslディレクトリに配置されます。

ステップ2—SSLを使用するようにNginxを構成する

Nginx構成ディレクトリの下にキーファイルと証明書ファイルを作成しました。 次に、サーバーブロックファイルを調整してこれらを利用するようにNginx構成を変更する必要があります。 この記事でNginxサーバーブロックについて詳しく知ることができます。

Nginxバージョン0.7.14以降(Ubuntu 14.04にはバージョン1.4.6が付属)は、通常のHTTPトラフィックと同じサーバーブロック内でSSLを有効にできます。 これにより、同じサイトへのアクセスをより簡潔に構成できます。

サーバーブロックは次のようになります。

サーバー{リッスン80default_server; リッスン[::]:80 default_server ipv6only = on;
    root /usr/share/nginx/html;
    index index.html index.htm;

    server_name your_domain.com;

    location / {
            try_files $uri $uri/ =404;
    }

}

モバイルバージョンを終了