商用認証局からSSL証明書をインストールする方法

提供:Dev Guides
移動先:案内検索

序章

このチュートリアルでは、信頼できる商用の認証局(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.comwww.example.comなどの追加のサブドメインは含まれていないことに注意してください
  • ワイルドカード:ドメインとそのサブドメインのいずれかに使用されます。 たとえば、*.example.comのワイルドカード証明書は、www.example.comおよびstore.example.comにも使用できます。
  • 複数ドメイン:SANまたはUC証明書と呼ばれるこれらは、[サブジェクト代替名]フィールドに追加される複数のドメインおよびサブドメインで使用できます。 たとえば、単一のマルチドメイン証明書をexample.comwww.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.comexample.comのSAN

CSRと秘密鍵を生成する

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

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

cd ~

example.com.keyという秘密鍵とexample.com.csrというCSRを生成するには、次のコマンドを実行します(example.comをドメイン名に置き換えます)。

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

この時点で、証明書リクエストに含まれる数行の情報の入力を求められます。 最も重要な部分は、共通名フィールドです。これは、証明書を使用する名前と一致する必要があります。たとえば、example.comwww.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ファイルが生成されます。 .keyファイルは秘密鍵であり、安全に保管する必要があります。 .csrファイルは、SSL証明書を要求するためにCAに送信するファイルです。

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

cat example.com.csr

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

例CA1:Namecheap経由のRapidSSL

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

注:ドメインのwwwサブドメインに対してRapidSSLから単一ドメイン証明書をリクエストする場合(例: 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

defaultサーバーブロックファイルにSSLを追加する場合は、ファイルを開いて編集します。

sudo vi default

listenディレクティブを見つけて変更し、次のように変更します。

    listen 443 ssl;

次に、server_nameディレクティブを見つけ、その値が証明書の一般名と一致することを確認します。 また、ssl_certificateおよびssl_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を探してみてください。