前書き

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

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

  • GoDaddy

  • RapidSSL(Namecheap経由)

また、選択した他のCAを使用することもできます。

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

前提条件

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

お金

商用CAから発行されたSSL証明書を購入する必要があります。 最適な無料の代替手段は、https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-14-04 [Let’s Encrypt]から発行された証明書です。 Let’s Encryptは、ほとんどのウェブブラウザで信頼されている無料のSSL / TLS証明書を発行する新しい認証局です。

登録ドメイン名

SSL証明書を取得する前に、証明書を使用する登録済みドメイン名を所有または制御する必要があります。 登録済みのドメイン名をまだお持ちでない場合は、多数のドメイン名レジストラーのいずれかに登録できます(例: Namecheap、GoDaddyなど)。

ドメイン検証権

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

組織検証(OV)または拡張検証(EV)SSL証明書の発行を希望する場合は、とりわけ、ウェブサイトの所有者の法的身元を証明する書類をCAに提供する必要があります。

Webサーバー

前述のポイントに加えて、SSL証明書をインストールするWebサーバーが必要になります。 これは、SSL証明書が発行されるドメイン名で到達可能なサーバーです。 通常、これはApache HTTP、Nginx、HAProxy、またはVarnishサーバーになります。 登録済みのドメイン名を介してアクセス可能なWebサーバーのセットアップにヘルプが必要な場合は、次の手順を実行します。

  1. 選択したWebサーバーをセットアップします。 たとえば、https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-14-04 [LEMP(Nginx)]またはhttps://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-14-04[LAMP(Apache)]サーバー–必ず登録済みドメインの名前を使用するようにWebサーバーソフトウェアを構成する

  2. 適切なネームサーバーを使用するようにドメインを構成します。 WebサーバーがDigitalOceanでホストされている場合、このガイドはセットアップに役立ちます。https://www.digitalocean.com/community/tutorials/how-to-point-to-digitalocean-nameservers-from-common-domain-レジストラ[Common Domain RegistrarsからDigitalOceanのネームサーバーを指す方法]

  3. WebサーバーのDNSレコードをネームサーバーに追加します。 DigitalOceanのネームサーバーを使用している場合は、このガイドに従って適切なレコードを追加する方法を学習してください:https://www.digitalocean.com/community/tutorials/how-to-set-up-a-host-name-with-digitalocean [DigitalOceanでホスト名を設定する方法]

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

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

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

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

遭遇するほとんどの商用CAは、共通ルートCAプログラムのメンバーであり、99%のブラウザーと互換性があると言われますが、証明書を購入する前に確認することは害になりません。 たとえば、AppleはiOS8の信頼できるSSLルート証明書のリストをhttp://support.apple.com/en-us/HT5012 [こちら]で提供しています。

証明書の種類

必要な証明書タイプを提供するCAを必ず選択してください。 多くのCAは、これらの証明書の種類のバリエーションを、多くの場合紛らわしい名前と価格体系の下で提供しています。 各タイプの簡単な説明を次に示します。

  • 単一ドメイン:単一ドメインに使用されます。 + example.com +。 「+ www.example.com +」などの追加のサブドメインは含まれないことに注意してください

  • ワイルドカード:ドメインとそのサブドメインのいずれかに使用されます。 たとえば、「+ *。example.com 」のワイルドカード証明書は、「 www.example.com 」および「 store.example.com +」にも使用できます

  • 複数ドメイン:SANまたはUC証明書として知られるこれらは、サブジェクトの別名フィールドに追加される複数のドメインおよびサブドメインで使用できます。 たとえば、単一のマルチドメイン証明書を「+ example.com 」、「 www.example.com 」、および「 example.net +」で使用できます

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

  • ドメイン検証(DV):要求元が問題のドメインを所有または制御していることをCAが検証した後、DV証明書が発行されます

  • 組織検証(OV):OV証明書は、発行CAが要求者の法的IDを検証した後にのみ発行できます

  • 拡張検証(EV):EV証明書は、厳密なガイドラインに従って、発行元CAが要求者の法的IDを検証した後にのみ発行できます。 このタイプの証明書の目的は、サイトの訪問者に組織のIDの正当性をさらに保証することです。 EV証明書は単一または複数のドメインにすることができますが、ワイルドカードは使用できません

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

追加機能

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

CSRと秘密キーを生成する

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

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

cd ~

`+ example.com.key `と呼ばれる秘密鍵と ` example.com.csr `と呼ばれるCSRを生成するには、このコマンドを実行します( ` example.com +`をドメインの名前に置き換えます):

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

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

例えば:

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

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

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

cat .csr

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

例CA 1:Namecheap経由のRapidSSL

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

注:ドメインの「+ www 」サブドメインに対してRapidSSLから単一のドメイン証明書をリクエストする場合(例: ` www.example.com `)、彼らはあなたのベースドメインのSANで証明書を発行します。 たとえば、証明書リクエストが「 www.example.com 」に対するものである場合、結果の証明書は「 www.example.com 」と「 example.com +」の両方で機能します。

証明書の選択と購入

NamecheapのSSL証明書ページhttps://www.namecheap.com/security/ssl-certificates.aspxにアクセスします。

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

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

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

証明書をリクエスト

選択した証明書の代金を支払った後、「Hi」セクションの下の「SSL証明書の管理」リンクに移動します。

image:https://assets.digitalocean.com/articles/ssl/namecheap-ssl-menu.png [Namecheap:SSL]

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

image:https://assets.digitalocean.com/articles/ssl/namecheap-sslmanagement.png [Namecheap:SSL Management]

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

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

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

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

ドメインの検証

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

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

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

それらをコピーして、秘密鍵とCSRを生成したのと同じ場所のサーバーに保存します。 ドメイン名と「+ .crt 」拡張子を使用して証明書に名前を付けます。 「 example.com.crt 」、中間証明書に「 intermediate.crt +」という名前を付けます。

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

例CA 2:GoDaddy

GoDaddyは一般的なCAであり、すべての基本的な証明書タイプがあります。 単一のドメイン証明書を取得するプロセスを順を追って説明しますが、別の種類の証明書が必要な場合は変更できます。

証明書の選択と購入

GoDaddyのSSL証明書ページhttps://www.godaddy.com/ssl/ssl-certificates.aspxにアクセスします。

下にスクロールして、* Get Started *ボタンをクリックします。

image:https://assets.digitalocean.com/articles/ssl/godaddy-getstarted.png [Go Daddy:はじめに]

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

image:https://assets.digitalocean.com/articles/ssl/godaddy-certtype.png [GoDaddy:証明書の種類]

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

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

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

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

登録および支払いプロセスを完了します。

証明書をリクエスト

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

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

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

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

[同意します]チェックボックスをオンにして、[証明書をリクエスト]ボタンをクリックします。

ドメインの検証

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

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

ドメインを制御していることをGoDaddyに確認したら、電子メール(GoDaddyで登録したもの)でSSL証明書が発行されたことを示すメッセージを確認します。 それを開いて、証明書のダウンロードリンクをクリックします(または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関連の行をいくつか追加することが含まれます。

このセクションでは、Ubuntu 14.04での基本的なNginxおよびApache HTTP構成について説明します。

次のことを想定します。

  • 秘密鍵、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の中間証明書を含む単一の「チェーン」証明書ファイルを作成する必要があります。

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

cd ~

証明書ファイルの名前が `+ example.com.crt `であると仮定して、このコマンドを使用して ` example.com.chained.crt +`という名前の結合ファイルを作成します(強調表示された部分を独自のドメインに置き換えます)。

cat .crt intermediate.crt > .chained.crt

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

cd /etc/nginx/sites-enabled

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

sudo vi default

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

   listen 443 ssl;

次に、 `+ server_name `ディレクティブを見つけ、その値が証明書の共通名と一致することを確認します。 また、 ` ssl_certificate `と ` ssl_certificate_key +`ディレクティブを追加して、証明書と秘密鍵ファイルのパスを指定します(強調表示された部分を実際のファイルのパスに置き換えます):

   server_name ;
   ssl_certificate ;
   ssl_certificate_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 ;
   rewrite ^/(.*) https:///$1 permanent;
}

その後、保存して終了します。

Nginxを再起動して新しい構成をロードし、HTTPSでTLS / SSLを有効にします!

sudo service nginx restart

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

アパッチ

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

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

SSLEngine on
SSLCertificateFile
SSLCertificateKeyFile

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

SSLCACertificateFile

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

SSLCertificateChainFile

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

<VirtualHost *:80>
  ServerName
  Redirect permanent / https:///
</VirtualHost>

保存して終了。

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

sudo a2enmod ssl

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

sudo service apache2 restart

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

結論

これで、信頼されたSSL証明書を追加してWebサーバーを保護する方法についての良いアイデアを得ることができます。 あなたが満足しているCAを探してください!