序章

このチュートリアルでは、信頼できる商用の認証局(CA)からSSL証明書を取得してインストールする方法を説明します。 SSL証明書を使用すると、Webサーバーはトラフィックを暗号化でき、訪問者に対してサーバーIDを検証するメカニズムも提供されます。 自己署名証明書よりも信頼できるCAから購入したSSL証明書を使用する主な利点は、サイトの訪問者に、サイトのIDを確認できないという恐ろしい警告が表示されないことです。

このチュートリアルでは、次の信頼できる認証局からSSL証明書を取得する方法について説明します。

  • GoDaddy
  • RapidSSL(Namecheap経由)

他の任意のCAを使用することもできます。

SSL証明書を取得したら、NginxおよびApacheHTTPWebサーバーにSSL証明書をインストールする方法を説明します。

前提条件

商用CAからSSL証明書を取得する前に、確認する必要のあるいくつかの前提条件があります。 このセクションでは、ほとんどのCAからSSL証明書を発行するために必要なものについて説明します。

お金

商用CAから発行されたSSL証明書を購入する必要があります。 最良の無料の代替手段は、 Let’sEncryptから発行された証明書です。 Let’s Encryptは、ほとんどのWebブラウザで信頼されている無料のSSL/TLS証明書を発行する新しい認証局です。

登録ドメイン名

SSL証明書を取得する前に、証明書を使用する登録済みドメイン名を所有または管理する必要があります。 まだドメイン名を登録していない場合は、そこにある多くのドメイン名レジストラの1つに登録できます(例: Namecheap、GoDaddyなど)。

ドメイン検証権

基本的なドメイン検証プロセスでは、ドメインのWHOISレコードにあるメールアドレスの1つ、またはドメイン自体の「管理者タイプ」のメールアドレスにアクセスできる必要があります。 SSL証明書を発行する認証局は通常、ドメインのWHOISレコードのアドレスの1つ、またはドメイン自体の一般的な管理者の電子メールアドレスに検証電子メールを送信することにより、ドメイン制御を検証します。 一部のCAは、DNSベースまたはHTTPベースの検証など、このガイドの範囲外の代替ドメイン検証方法を提供します。

組織検証(OV)または拡張検証(EV)SSL証明書の発行を希望する場合は、特にWebサイトの所有者の法人格を確立するための書類をCAに提供する必要があります。

Webサーバー

前述のポイントに加えて、SSL証明書をインストールするためのWebサーバーが必要になります。 これは、SSL証明書が発行されるドメイン名で到達可能なサーバーです。 通常、これはApache HTTP、Nginx、HAProxy、またはVarnishサーバーになります。 登録済みのドメイン名からアクセスできるWebサーバーの設定についてサポートが必要な場合は、次の手順に従ってください。

  1. 選択したWebサーバーをセットアップします。 たとえば、 LEMP(Nginx)または LAMP(Apache)サーバー-登録したドメインの名前を使用するようにWebサーバーソフトウェアを構成してください
  2. 適切なネームサーバーを使用するようにドメインを構成します。 WebサーバーがDigitalOceanでホストされている場合、このガイドはセットアップに役立ちます。共通ドメインレジストラからDigitalOceanのネームサーバーをポイントする方法
  3. WebサーバーのDNSレコードをネームサーバーに追加します。 DigitalOceanのネームサーバーを使用している場合は、このガイドに従って、適切なレコードを追加する方法を学習してください。DigitalOceanでホスト名を設定する方法

認証局を選択してください

使用する認証局がわからない場合は、考慮すべき重要な要素がいくつかあります。 概要レベルで最も重要なことは、選択したCAが、必要な機能を快適な価格で提供することです。 このセクションでは、価格ではなく、ほとんどのSSL証明書の購入者が知っておくべき機能に焦点を当てます。

ルート証明書プログラムのメンバーシップ

最も重要な点は、選択するCAが、最も一般的に使用されるオペレーティングシステムとWebブラウザのルート証明書プログラムのメンバーであるということです。 これは「信頼できる」CAであり、そのルート証明書は一般的なブラウザやその他のソフトウェアによって信頼されています。 WebサイトのSSL証明書が信頼できる「CA」によって署名されている場合、そのIDは、CAを信頼するソフトウェアによって有効であると見なされます。これは、暗号化機能も提供しますが、ID検証の警告が伴う自己署名SSL証明書とは対照的です。これは、ほとんどのWebサイト訪問者に不快感を与えます。

遭遇するほとんどの商用CAは、一般的なルートCAプログラムのメンバーであり、99 % o fブラウザーと互換性があると表示されますが、証明書を購入する前に確認しても問題ありません。 たとえば、AppleはiOS8ここの信頼できるSSLルート証明書のリストを提供しています。

証明書の種類

必要な証明書タイプを提供するCAを選択していることを確認してください。 多くのCAは、さまざまな、しばしば紛らわしい名前と価格設定構造の下で、これらの証明書タイプのバリエーションを提供しています。 各タイプの簡単な説明は次のとおりです。

  • 単一ドメイン:単一ドメインに使用されます。例: example.com. 次のような追加のサブドメインに注意してください www.example.com、含まれていません
  • ワイルドカード:ドメインとそのサブドメインのいずれかに使用されます。 たとえば、次のワイルドカード証明書 *.example.com にも使用できます www.example.comstore.example.com
  • 複数ドメイン:SANまたはUC証明書と呼ばれるこれらは、[サブジェクト代替名]フィールドに追加される複数のドメインおよびサブドメインで使用できます。 たとえば、単一のマルチドメイン証明書を次のように使用できます。 example.com, www.example.com、 と example.net

前述の証明書タイプに加えて、CAが提供するさまざまなレベルの検証があります。 ここでそれらをカバーします:

  • ドメイン検証(DV):DV証明書は、CAが要求者が問題のドメインを所有または管理していることを検証した後に発行されます
  • 組織検証(OV):OV証明書は、発行元のCAが要求者の法人格を検証した後にのみ発行できます。
  • Extended Validation(EV):EV証明書は、発行元のCAが、厳密な一連のガイドラインに従って、特に要求者の法人格を検証した後にのみ発行できます。 このタイプの証明書の目的は、サイトの訪問者に組織のIDの正当性をさらに保証することです。 EV証明書は単一または複数のドメインにすることができますが、ワイルドカードにすることはできません

このガイドでは、GoDaddyおよびRapidSSLから単一ドメインまたはワイルドカードSSL証明書を取得する方法を説明しますが、他のタイプの証明書の取得は非常に似ています。

追加機能

多くのCAは、SSL証明書を発行する他のベンダーと差別化するために、さまざまな「ボーナス」機能を提供しています。 これらの機能のいくつかはあなたにお金を節約することになる可能性があるので、購入する前にあなたのニーズを提供物と慎重に比較検討することが重要です。 注意すべき機能の例には、無料の証明書の再発行や、次の目的で機能する単一のドメイン価格の証明書が含まれます。 www. およびドメインのベース名、例: www.example.com のSANで example.com

CSRと秘密鍵を生成する

すべての前提条件を整理し、取得する証明書の種類がわかったら、証明書署名要求(CSR)と秘密鍵を生成します。

WebサーバーとしてApacheHTTPまたはNginxを使用することを計画している場合は、 openssl Webサーバー上に秘密鍵とCSRを生成します。 このチュートリアルでは、関連するすべてのファイルをホームディレクトリに保持しますが、サーバー上の安全な場所に自由に保存してください。

cd ~

と呼ばれる秘密鍵を生成するには example.com.key、およびと呼ばれるCSR example.com.csr、このコマンドを実行します( example.com ドメインの名前で):

openssl req -newkey rsa:2048 -nodes -keyout example.com.key -out example.com.csr

この時点で、証明書リクエストに含まれる数行の情報の入力を求められます。 最も重要な部分は、共通名フィールドです。これは、証明書を使用する名前と一致する必要があります。たとえば、 example.com, www.example.com、または(ワイルドカード証明書要求の場合) *.example.com. OVまたはEV証明書の取得を計画している場合は、他のすべてのフィールドが組織またはビジネスの詳細を正確に反映していることを確認してください。

例えば:

Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:New York
Locality Name (eg, city) []:New York
Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:example.com
Email Address []:[email protected]

これにより、 .key.csr ファイル。 The .key ファイルは秘密鍵であり、安全に保管する必要があります。 The .csr ファイルは、SSL証明書を要求するためにCAに送信するものです。

証明書リクエストをCAに送信するときは、CSRをコピーして貼り付ける必要があります。 CSRの内容を印刷するには、次のコマンドを使用します(ファイル名を独自のものに置き換えます)。

cat example.com.csr

これで、CAから証明書を購入する準備が整いました。 Namecheapを介したGoDaddyとRapidSSLの2つの例を示しますが、他のベンダーから証明書を取得してください。

例CA1:Namecheap経由のRapidSSL

Namecheapは、さまざまなCAからSSL証明書を購入する方法を提供します。 RapidSSLから単一ドメイン証明書を取得するプロセスについて説明しますが、別の種類の証明書が必要な場合は、逸脱することができます。

注:RapidSSLに単一のドメイン証明書を要求する場合 www ドメインのサブドメイン(例: www.example.com)、ベースドメインのSANで証明書を発行します。 たとえば、証明書のリクエストが www.example.com、結果の証明書は両方で機能します www.example.comexample.com.

証明書を選択して購入する

NamecheapのSSL証明書ページに移動します:https://www.namecheap.com/security/ssl-certificates.aspx

ここで、検証レベル、証明書の種類(「保護されたドメイン」)、またはCA(「ブランド」)の選択を開始できます。

この例では、[ドメイン検証]ボックスの製品の比較ボタンをクリックします。 次に、「RapidSSL」を見つけて、カートに追加ボタンをクリックします。

この時点で、Namecheapに登録またはログインする必要があります。 次に、支払いプロセスを終了します。

証明書を要求する

選択した証明書の支払い後、[こんにちはユーザー名]セクションのSSL証明書の管理リンクに移動します。

ここに、Namecheapを通じて購入したすべてのSSL証明書のリストが表示されます。 使用する証明書の[今すぐアクティブ化]リンクをクリックします。

次に、Webサーバーのソフトウェアを選択します。 これにより、Namecheapが提供する証明書の形式が決まります。 一般的に選択されるオプションは、「Apache + MOD SSL」、「nginx」、または「Tomcat」です。

CSRをボックスに貼り付けて、次へボタンをクリックします。

これで、プロセスの「承認者の選択」ステップが表示されます。これにより、検証リクエストのメールがドメインのWHOISレコードのアドレス、または取得しているドメインの管理者タイプのアドレスに送信されます。の証明書。 検証メールの送信先のアドレスを選択します。

「管理連絡先情報」を提供します。 注文送信ボタンをクリックします。

ドメインを検証する

この時点で、「承認者」アドレスに電子メールが送信されます。 電子メールを開き、証明書の要求を承認します。

証明書をダウンロードする

証明書を承認すると、証明書は技術担当者に電子メールで送信されます。 ドメインに対して発行された証明書とCAの中間証明書は、電子メールの下部にあります。

それらをコピーして、秘密鍵とCSRを生成したのと同じ場所にあるサーバーに保存します。 ドメイン名と証明書に名前を付けます .crt 拡張、例えば example.com.crt、および中間証明書に名前を付けます intermediate.crt.

これで、証明書をWebサーバーにインストールする準備が整いました。

例CA2:GoDaddy

GoDaddyは人気のあるCAであり、すべての基本的な証明書タイプがあります。 単一のドメイン証明書を取得するプロセスについて説明しますが、別の種類の証明書が必要な場合は、逸脱することができます。

証明書を選択して購入する

GoDaddyのSSL証明書ページに移動します:https://www.godaddy.com/ssl/ssl-certificates.aspx

下にスクロールして、はじめにボタンをクリックします。

ドロップダウンメニューから、必要なSSL証明書の種類(シングルドメイン、マルチドメイン(UCC)、またはワイルドカード)を選択します。

次に、プランタイプ(ドメイン、組織、または拡張検証)を選択します。

次に、用語(有効期間)を選択します。

次に、カートに追加ボタンをクリックします。

現在の注文を確認し、チェックアウトに進むボタンをクリックします。

登録と支払いのプロセスを完了します。

証明書を要求する

注文が完了したら、SSL証明書*ボタンをクリックします(または右上隅にあるマイアカウント> SSL証明書の管理をクリックします)。

購入したSSL証明書を見つけて、セットアップボタンをクリックします。 以前にSSL証明書にGoDaddyを使用したことがない場合は、「SSL証明書」製品をセットアップし、最近の証明書の注文を製品に関連付けるように求められます(緑色のセットアップボタンをクリックして、ブラウザを更新する数分前)。

「SSL証明書」製品がGoDaddyアカウントに追加されると、「新しい証明書」と「起動」ボタンが表示されます。 新しい証明書の横にある起動ボタンをクリックします。

ボックスに貼り付けてCSRを提供します。 デフォルトでは、SHA-2アルゴリズムが使用されます。

同意するチェックボックスをオンにして、証明書の要求ボタンをクリックします。

ドメインを検証する

次に、ドメインを制御していることを確認し、GoDaddyにいくつかのドキュメントを提供する必要があります。 GoDaddyは、ドメインの所有権確認メールをドメインのWHOISレコードにあるアドレスに送信します。 送信された電子メールの指示に従い、証明書の発行を承認します。

証明書をダウンロード

ドメインを管理していることをGoDaddyに確認した後、SSL証明書が発行されたことを示すメッセージがないかメール(GoDaddyに登録したもの)を確認します。 それを開き、証明書のダウンロードリンクをたどります(または、GoDaddyコントロールパネルのSSL証明書の横にある起動ボタンをクリックします)。

次に、ダウンロードボタンをクリックします。

サーバータイプドロップダウンメニューから使用しているサーバーソフトウェアを選択します。ApacheHTTPまたはNginxを使用している場合は、[Apache]を選択し、Zipファイルのダウンロードボタンをクリックします。

ZIPアーカイブを抽出します。 2つ含まれている必要があります .crt ファイル; SSL証明書(ランダムな名前が必要)とGoDaddy中間証明書バンドル(gd_bundle-g2-1.crt). 2つのWebサーバーの両方をコピーします。 証明書の名前をドメイン名に変更します。 .crt 拡張、例えば example.com.crt、および中間証明書バンドルの名前を次のように変更します intermediate.crt.

これで、証明書をWebサーバーにインストールする準備が整いました。

Webサーバーに証明書をインストールする

選択したCAから証明書を取得したら、それをWebサーバーにインストールする必要があります。 これには、Webサーバーソフトウェア構成にSSL関連の行をいくつか追加することが含まれます。

このセクションでは、Ubuntu14.04での基本的なNginxおよびApacheHTTP構成について説明します。

次のことを想定します。

  • 秘密鍵、SSL証明書、および該当する場合はCAの中間証明書は、次のホームディレクトリにあります。 /home/sammy
  • 秘密鍵はと呼ばれます example.com.key
  • SSL証明書が呼び出されます example.com.crt
  • CA中間証明書は、というファイルにあります intermediate.crt
  • ファイアウォールを有効にしている場合は、ポート443(HTTPS)が許可されていることを確認してください

注:実際の環境では、これらのファイルは、Webサーバーマスタープロセスを実行するユーザーのみが(通常は)どこかに保存する必要があります。 root)にアクセスできます。 秘密鍵は安全に保管する必要があります。

Nginx

Ubuntu 14.04のNginxで証明書を使用する場合は、このセクションに従ってください。

Nginxでは、CAに中間証明書が含まれている場合は、証明書とCAの中間証明書を含む単一の「チェーン」証明書ファイルを作成する必要があります。

秘密鍵、証明書、およびCA中間証明書を含むディレクトリに移動します( intermediate.crt ファイル)。 例では、それらがホームディレクトリにあると想定します。

cd ~

証明書ファイルが呼び出されたと仮定します example.com.crt、このコマンドを使用して、と呼ばれる結合ファイルを作成します example.com.chained.crt (強調表示された部分を独自のドメインに置き換えます):

cat example.com.crt intermediate.crt > example.com.chained.crt

次に、Nginxサーバーブロック構成ディレクトリに移動します。 にあると仮定して /etc/nginx/sites-enabled、次のコマンドを使用して変更します。

cd /etc/nginx/sites-enabled

SSLを追加したい場合 default サーバーブロックファイル、編集のためにファイルを開きます:

sudo vi default

検索して変更する listen ディレクティブを変更し、次のように変更します。

    listen 443 ssl;

次に、 server_name ディレクティブ、およびその値が証明書の一般名と一致することを確認してください。 また、を追加します ssl_certificatessl_certificate_key 証明書と秘密鍵ファイルのパスを指定するディレクティブ(強調表示された部分をファイルの実際のパスに置き換えます):

    server_name example.com;
    ssl_certificate /home/sammy/example.com.chained.crt;
    ssl_certificate_key /home/sammy/example.com.key;

最も安全なSSLプロトコルと暗号のみを許可するには、ファイルに次の行を追加します。

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

HTTPトラフィックをHTTPSにリダイレクトする場合は、ファイルの先頭にこの追加のサーバーブロックを追加できます(強調表示された部分を独自の情報に置き換えます)。

server {
    listen 80;
    server_name example.com;
    rewrite ^/(.*) https://example.com/$1 permanent;
}

次に、保存して終了します。

次に、Nginxを再起動して新しい構成を読み込み、HTTPS経由でTLS/SSLを有効にします。

sudo service nginx restart

HTTPS経由でサイトにアクセスしてテストします。例: https://example.com.

Apache

Ubuntu 14.04のApacheで証明書を使用する場合は、このセクションに従ってください。

構成ファイルをコピーしてバックアップを作成します。 サーバーがデフォルトの仮想ホスト構成ファイルで実行されていると仮定すると、 /etc/apache2/sites-available/000-default.conf、次のコマンドを使用してコピーを作成します。

cd /etc/apache2/sites-available
cp 000-default.conf 000-default.conf.orig

次に、編集のためにファイルを開きます。

sudo vi 000-default.conf

を見つける <VirtualHost *:80> Webサーバーがポートでリッスンするように入力して変更します 443:

<VirtualHost *:443>

次に、 ServerName ディレクティブ、まだ存在しない場合(ここでドメイン名に置き換えてください):

ServerName example.com

次に、次の行を追加して、証明書とキーパスを指定します(ここで実際のパスに置き換えてください)。

SSLEngine on
SSLCertificateFile /home/sammy/example.com.crt
SSLCertificateKeyFile /home/sammy/example.com.key

Apache 2.4.8以降を使用している場合は、次の行を追加してCA中間バンドルを指定します(パスを置き換えます)。

SSLCACertificateFile /home/sammy/intermediate.crt

古いバージョンのApacheを使用している場合は、次の行でCA中間バンドルを指定します(パスを置き換えます)。

SSLCertificateChainFile /home/sammy/intermediate.crt

この時点で、サーバーはHTTPSのみ(ポート443)でリッスンするように構成されているため、HTTP(ポート80)への要求は処理されません。 HTTPリクエストをHTTPSにリダイレクトするには、ファイルの先頭に以下を追加します(両方の場所で名前を置き換えます)。

<VirtualHost *:80>
   ServerName example.com
   Redirect permanent / https://example.com/
</VirtualHost>

保存して終了。

次のコマンドを実行して、ApacheSSLモジュールを有効にします。

sudo a2enmod ssl

次に、Apacheを再起動して新しい構成をロードし、HTTPS経由でTLS/SSLを有効にします。

sudo service apache2 restart

HTTPS経由でサイトにアクセスしてテストします。例: https://example.com. また、HTTP経由で接続してみることもできます。 http://example.com リダイレクトが正しく機能していることを確認します。

結論

これで、信頼できるSSL証明書を追加してWebサーバーを保護する方法を理解できたはずです。 満足しているCAを探してみてください。