ステータス:非推奨

この記事では、サポートされなくなったバージョンのUbuntuについて説明します。 現在Ubuntu12.04を実行しているサーバーを運用している場合は、サポートされているバージョンのUbuntuにアップグレードまたは移行することを強くお勧めします。

理由: Ubuntu 12.04は2017年4月28日に保守終了(EOL)に達し、セキュリティパッチまたはアップデートを受信しなくなりました。 このガイドはもう維持されていません。

代わりに参照してください:
このガイドは参考として役立つかもしれませんが、他のUbuntuリリースでは機能しない可能性があります。 可能な場合は、使用しているUbuntuのバージョン用に作成されたガイドを使用することを強くお勧めします。 ページ上部の検索機能を使用して、より新しいバージョンを見つけることができます。

Server Name Identification(SNI)を使用して、1つのIPアドレスで複数のSSL証明書をホストできます。

SNIについて

単一の仮想プライベートサーバーで複数のサイトをホストすることは、仮想ホストを使用する場合の課題ではありませんが、従来、サイトごとに個別のSSL証明書を提供するには、個別のIPアドレスが必要でした。 このプロセスは最近、サーバー名表示(SNI)を使用することで簡素化されました。これは、要求されたサーバー名と一致する証明書をサイト訪問者に送信します。

ノート:

SNIは、Webサーバーから複数のSSLサイトにサービスを提供するためにのみ使用でき、メールサーバーなどの他のデーモンではまったく機能しない可能性があります。 また、証明書エラーが発生する可能性のある古いWebブラウザの割合もわずかです。 Wikipedia には、このTLS拡張をサポートするソフトウェアとサポートしないソフトウェアの更新されたリストがあります。

設定

SNIは、証明書を提供するためにドメイン名を登録する必要があります。

このチュートリアルの手順では、ユーザーがroot権限を持っている必要があります。 これを設定する方法は、手順3と4の初期サーバー設定チュートリアルで確認できます。

NginxはすでにVPSにインストールされ、実行されているはずです。

そうでない場合は、次のコマンドでダウンロードできます。

sudo apt-get install nginx

サーバーでSNIが有効になっていることを確認できます。

 nginx -V

nginxバージョンを表示すると、次の行が表示されます。

 TLS SNI support enabled

ステップ1-SSL証明書ディレクトリを作成する

このチュートリアルでは、両方の証明書が自己署名されます。 example.comとexample.orgの両方をホストするサーバーの作成に取り組んでいます。

SSL証明書には、証明書自体と公開鍵の2つの主要部分があります。 関連するすべてのファイルに簡単にアクセスできるようにするには、各仮想ホストのSSL証明書用のディレクトリを作成する必要があります。

mkdir -p /etc/nginx/ssl/example.com
mkdir -p /etc/nginx/ssl/example.org

ステップ2—サーバーキーと証明書署名要求を作成します

まず、example.comのSSL証明書を作成します。

適切なディレクトリに切り替えます。

cd /etc/nginx/ssl/example.com

秘密サーバーキーを作成することから始めます。 このプロセス中に、特定のパスフレーズを入力するように求められます。 このフレーズを忘れたり紛失したりすると、証明書にアクセスできなくなりますので、注意してください。

sudo openssl genrsa -des3 -out server.key 1024

証明書署名要求を作成してフォローアップします。

sudo openssl req -new -key server.key -out server.csr

このコマンドは、入力する必要のあるフィールドのリストを表示するように端末に指示します。

最も重要な行は「共通名」です。 ここに公式ドメイン名を入力するか、まだ持っていない場合はサイトのIPアドレスを入力します。 チャレンジパスワードとオプションの会社名は空白のままにします。

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]:US
State or Province Name (full name) [Some-State]:New York
Locality Name (eg, city) []:NYC
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Awesome Inc
Organizational Unit Name (eg, section) []:Dept of Merriment
Common Name (e.g. server FQDN or YOUR name) []:example.com                  
Email Address []:[email protected]

ステップ3—パスフレーズを削除する

証明書の作成はほぼ完了です。 ただし、パスフレーズを削除することはできます。 パスフレーズを設定するとセキュリティが強化されますが、nginxをリロードしようとすると問題が発生します。 nginxがクラッシュしたり、再起動する必要がある場合は、常にパスフレーズを再入力して、Webサーバー全体をオンラインに戻す必要があります。

パスワードを削除するには、次のコマンドを使用します。

sudo cp server.key server.key.org
sudo openssl rsa -in server.key.org -out server.key

ステップ4—SSL証明書に署名する

証明書はほとんど完成しており、署名するだけです。

365を希望の日数に変更することで、証明書の有効期間を指定できることに注意してください。 現状では、この証明書は1年後に期限切れになります。

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

これで、最初のホストの証明書の作成が完了しました。

2番目の証明書を作成するには、2番目のディレクトリに切り替えます。

cd /etc/nginx/ssl/example.org

2番目の証明書について、前の3つの手順を繰り返します。 両方が二乗されたら、仮想ホストへの証明書の追加を開始できます。

ステップ5—仮想ホストを作成する

証明書を保存して準備ができたら、仮想ホストファイルに情報を追加できます。

必須ではありませんが、2つの仮想ホストファイルを作成して、仮想ホストを別々のファイルに保存できます。

sudo nano /etc/nginx/sites-available/example.com

各ファイルには、仮想ホスト構成が含まれます( server_name ssl_certificate 、および ssl_certificate_key の行を詳細に一致するように編集してください)。

 server {

        listen   443;
        server_name example.com;

        root /usr/share/nginx/www;
        index index.html index.htm;

        ssl on;
        ssl_certificate /etc/nginx/ssl/example.com/server.crt;
        ssl_certificate_key /etc/nginx/ssl/example.com/server.key;
}

次に、適切な構成を他の仮想ホストファイルに配置できます。

sudo nano /etc/nginx/sites-available/example.org
 server {

        listen   443;
        server_name example.org;

        root /usr/share/nginx/www;
        index index.html index.htm;

        ssl on;
        ssl_certificate /etc/nginx/ssl/example.org/server.crt;
        ssl_certificate_key /etc/nginx/ssl/example.org/server.key;
}

ステップ6—仮想ホストをアクティブ化する

最後のステップは、sites-availableディレクトリとsites-enabledディレクトリの間にシンボリックリンクを作成してホストをアクティブ化することです。

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
sudo ln -s /etc/nginx/sites-available/example.org /etc/nginx/sites-enabled/example.org

すべての仮想ホストを配置したら、nginxを再起動します。

sudo service nginx restart

これで、それぞれ独自のドメイン名とSSL証明書を持つ両方のサイトにアクセスできるようになります。

ドメインのみを入力することで、署名されたSSL証明書がある場合とない場合の両方でサイトを表示できます(例: example.comまたはexample.org)またはhttpsプレフィックスが付いたドメイン( https://example.comまたはhttps:// example .org )。

EtelSverdlov著