序章

SSL暗号化で保護されるWebトラフィックをますます増やすことは、適切な証明書を取得するためのソリューションを必要とするサービスとユースケースの数が増えることを意味します。 パブリックWebサイト、イントラネットトラフィック、またはWebアプリのステージングサーバーのいずれであっても、データを保護し、ユーザーの最新のセキュリティ期待に応えるための証明書が必要になります。

SSL接続の主な利点は、プライバシーデータ整合性を中心に展開されます。 暗号化によって盗聴が防止されるため、接続はプライベートです。 データの整合性は、正しいサーバーに接続していることを暗号で確認し(詐欺師ではない)、転送中に個々のメッセージが改ざんされていないことを確認することで保証されます。

SSL証明書を取得するにはいくつかの方法があり、予算、対象者、およびその他のいくつかの要因に応じて、商用認証局、新しい自動化された無料の認証局、自己署名証明書、および独自のプライベート認証局。 これらのオプションの比較を実行し、それぞれを使用するのが最適な場合について説明しましょう。

用語集

始める前に、SSLセキュリティについて説明するときに使用されるいくつかの一般的な用語を定義します。

トランスポート層セキュリティ(TLS)

トランスポート層セキュリティは、Secure Sockets Layer(SSL)に代わる新しいセキュリティプロトコルです。 最近の暗号化された接続はTLSを使用している可能性が高いですが、SSL名は一般的な言語で使用されており、ここで使用します。

証明書

この記事では、SSLサーバー証明書のみを参照します。 サーバー証明書は、新しいSSL接続が要求されるたびにWebサーバーによって提示されます。 これらには、証明書が発行されるホストの名前(接続しようとしているサーバーと一致する必要があります)が含まれ、認証局によって署名されて信頼を確立します。

認証局(CA)

認証局は、ドメイン所有者のSSL証明書の要求に関する詳細を確認してから、すべてがチェックアウトされた場合は、サーバー証明書を発行して署名します。 ブラウザとオペレーティングシステムは、信頼できる認証局のリストを維持しています。 サーバー証明書がこれらの信頼できるCAのいずれかによって署名されている場合、それも信頼されます。

ドメイン検証(DV)

ドメイン検証済みの証明書は、証明書に要求されたドメイン名を管理していることを証明した人に発行されます。 この証明は、多くの場合、WebサーバーまたはDNSレコードから一意のトークンを提供するという形をとります。これは、CAが証明書を発行する前にチェックします。

組織検証(OV)

組織で検証された証明書とは、認証局が公開データベースで会社名と住所も検証したことを意味します。 この情報は証明書に入れられ、通常、ユーザーが緑色の錠前アイコンをクリックしてさらに調査した場合にのみ表示されます。

拡張検証(EV)

拡張検証は、ドメインまたは組織の検証よりも徹底的です。 EV証明書は、ドメインの所有権だけでなく、証明書を要求する法人の存在と場所を確認した後に発行され、その法人が検証対象のドメインを管理していることを確認します。

DVおよびOV証明書とは異なり、EVはワイルドカード証明書として発行できません。

EV証明書は、Webブラウザでも特別に扱われます。 ブラウザは通常、緑色の錠前アイコンでDV証明書を示しますが、EV証明書には、発行された組織の名前を含む大きな緑色のバーも表示されます。 これはフィッシング攻撃を減らすことを目的としていますが、一部の調査によると、この緑色のバーがない場合、ユーザーは気付かない傾向があります。

ワイルドカード証明書

特定の完全修飾ドメイン名( app.example.com など)に対して発行される代わりに、ワイルドカード証明書はすべての範囲のサブドメイン名に対して有効です。 したがって、*。example.comに発行された証明書は、app.example.comdatabase.exampleなどのexample.comのサブドメインをカバーします。 .com。 アスタリスク文字はワイルドカードであり、任意の有効なホスト名に置き換えることができます。

証明書失効リスト(CRL)

SSL証明書には、証明書失効リストにアクセスする方法に関する情報を含めることができます。 クライアントはこのリストをダウンロードしてチェックし、証明書が取り消されていないことを確認します。 CRLは、主にOCSPレスポンダーに置き換えられました。

オンライン証明書ステータスプロトコル(OCSP)

OCSPプロトコルはCRLに代わるものであり、よりリアルタイムで必要な帯域幅が少ないという利点があります。 一般的な操作も同様です。クライアントは、OCSPレスポンダーにクエリを実行して、証明書が取り消されているかどうかを確認します。

商用認証局

商用認証局では、DV、OV、およびEV証明書を購入できます。 一部の製品では、特定の制限付きの無料のドメイン検証済み証明書を提供しています(たとえば、ワイルドカードはありません)。

  • プロセス:初期設定と更新の手動プロセス
  • コスト:およそ$ 10〜 $ 1000
  • 検証: DV、OV、およびEV
  • 信頼:ほとんどのブラウザとオペレーティングシステムでデフォルトで信頼されています
  • ワイルドカード証明書:はい
  • IPのみの証明書: publicIPアドレスの証明書を発行するものもあります
  • 有効期限: 1〜3年

ほとんどの商用認証局は、ほとんどのブラウザでデフォルトで信頼されています。 更新のプロセスは通常手動で行われるため、証明書の有効期限をメモし、時間どおりに更新するように注意する必要があります。

従来、商用CAは、ほとんどの主要なブラウザで信頼されている証明書を取得するための唯一の現実的なオプションでした。 これは、Let’sEncryptなどの新しい自動認証局によって変更されました。 それでも、商用CAはEV証明書を取得する唯一の方法であり、ほとんどのブラウザーで自動的に信頼されるワイルドカード証明書を取得する唯一の方法です。 また、自動化されたLet’s Encryptクライアントを実行できないデバイスの証明書が必要な場合にも適しています(ソフトウェアの非互換性のため、または低電力の組み込みデバイスであるため)。

商用認証局は、多くの場合、追加のサポート契約、保証、および認証のオプションを提供します。これは、一部の企業や業界にとって重要です。

暗号化しましょう

Let’s Encryptは、無料のドメイン検証済み証明書を要求および更新するための自動化されたメカニズムを提供します。 彼らは、サービスと対話して証明書を自動的に取得および更新するための標準プロトコル(ACME)を作成しました。 公式のACMEクライアントはCertbotと呼ばれますが、多くの代替クライアントが存在します。

  • プロセス:初期設定と更新は自動化されています。 公式クライアントではApacheとNginxのセットアップのみが自動化されていますが、特定のサーバーソフトウェアに関係なく、証明書をダウンロードして使用できます。
  • コスト:無料
  • 検証:DVのみ
  • デフォルト:ほとんどのブラウザとオペレーティングシステムでデフォルトで信頼されています
  • ワイルドカード証明書:いいえ( 2018年1月に予定
  • IPのみの証明書:いいえ
  • 有効期限:90日

Let’s Encryptの証明書は短命であり、自動更新を促進し、侵害された証明書が攻撃者によって悪用される可能性のある時間を短縮します。

公的にアクセス可能で、それを指す有効なドメイン名を持つサーバーがある場合は、Let’sEncryptが適切なオプションになる可能性があります。 Let’s Encryptのサーバーは、Webサーバーに接続するか、パブリックDNSレコードをフェッチして、ドメインを制御していることを確認する必要があるため、ローカルネットワークのファイアウォールの背後にあるプライベートサーバーに使用するのは少し難しい場合があります。 ただし、Let’sEncryptのDNSベースの認証チャレンジを使用することは可能です。

Let’s Encryptは、ベアIPアドレスの証明書を提供しません。

EV証明書またはワイルドカード証明書が必要な場合、Let’sEncryptはオプションではありません。 Let’s Encryptは、最大100のホスト名を持つ証明書を作成できるため、ユースケースにワイルドカードが実際に必要ない可能性があります。既存のすべてのサブドメインをカバーする証明書が必要な場合があります。

それでも、Let’s Encrypt APIのレート制限により、サブドメインが多数ある場合、またはオンザフライで作成できる動的サブドメインがある場合、Let’sEncryptは適切でない場合があります。

自己署名証明書

認証局の必要性を完全に回避して、独自の秘密鍵によって署名されたSSL証明書を使用することが可能です。 これは自己署名証明書と呼ばれ、テスト用または限られた数の技術に精通したユーザーが使用するためにWebアプリをセットアップするときに非常に一般的に推奨されます。

  • プロセス:手動の証明書作成、更新メカニズムなし
  • コスト:無料
  • 検証:DVおよびOV
  • 信頼:デフォルトではなし。 共通のCAが関与していないため、各証明書は手動で信頼できるものとしてマークする必要があります
  • ワイルドカード証明書:はい
  • IPのみの証明書:はい、任意のIP
  • 有効期限:任意

自己署名証明書は、 openssl OpenSSLライブラリに同梱されているコマンド。 チュートリアルOpenSSLEssentials:SSL証明書、秘密鍵、およびCSRの操作で、必要な正確なコマンドとOpenSSLの背景情報を見つけることができます。

自己署名証明書は信頼できるCAによって署名されていないため、証明書を信頼できるものとして手動でマークする必要があります。このプロセスは、ブラウザやオペレーティングシステムごとに異なります。 その後、証明書は通常のCA署名付き証明書と同じように機能します。

自己署名証明書は、少数のクライアントの信頼を手動で管理する必要がある場合に1回限りの使用に適しています。また、手動での作業なしに証明書を取り消したり更新したりすることはできません。 多くの場合、これは開発やテストの目的、または少数の人しか使用しない自己ホスト型Webアプリには十分です。

プライベート認証局

独自のプライベート認証局を作成し、それを使用して証明書に署名することができます。 証明書が信頼される前に、ユーザーはプライベートCAを手動でインストールして信頼する必要があります。

  • プロセス:手動による証明書の作成と更新、およびCA自体の手動セットアップ
  • コスト:無料
  • 検証:DVおよびOV
  • 信頼:デフォルトではなし。 信頼を確立するには、プライベートCA証明書をクライアントに手動で配布する必要があります
  • ワイルドカード証明書:はい
  • IPのみの証明書:はい、任意のIP
  • 有効期限:任意

自己署名証明書と同様に、OpenSSLライブラリに付属のコマンドラインツールを使用してプライベートCAを作成できますが、プロセスを簡単にするためにいくつかの代替インターフェイスが開発されています。 tinyCA はこのプロセスのグラフィカルインターフェイスであり、camanはコマンドラインプログラムです。 どちらも、CAの作成と、証明書の発行、更新、および取り消しを容易にします。

プライベートCAは、作成する証明書が複数あり、ユーザー向けにCAを手動で配布およびインストールできる場合に適したオプションです。 これにより、CAを適切にインストールできる組織または技術に精通したユーザーの小グループ内での内部使用に制限される可能性があります。 大規模なIT部門には、多くの場合、CAをユーザーに自動的に展開する手段があり、このソリューションをユーザーにとってより魅力的なものにします。

各証明書を手動で信頼できるものとしてマークする必要がある自己署名証明書とは異なり、プライベートCAをインストールする必要があるのは1回だけです。 そのCAから発行されたすべての証明書は、その信頼を継承します。

1つの欠点は、CAの実行に多少のオーバーヘッドがあり、安全な方法でセットアップおよび保守する方法をある程度知っている必要があることです。

適切な失効が使用にとって重要である場合は、証明書失効リスト用のHTTPサーバーまたはOCSPレスポンダーも維持する必要があります。

結論

SSL証明書を取得または作成するためのいくつかの異なるオプションを確認しました。 状況に最も適した方法で、SSL保護を追加すると、サービスとユーザーのデータ、プライバシー、およびセキュリティを保護するのに役立ちます。

SSLとこれまでに説明したオプションについて詳しく知りたい場合は、次のリンクが役立つ場合があります。

  • OpenSSLドキュメントでは、ライブラリとそのコマンドについて詳しく説明しています。
  • CA /ブラウザフォーラムは、認証局とブラウザベンダーが、CAの運用方法に関する要件とベストプラクティスを検討する場所です。 これには、証明書の有効期間や、非公開ドメイン名に対して証明書を発行する必要があるかどうかなどのルールが含まれます。
  • Let’s Encrypt CA には、ACMEプロトコルに関する詳細情報があります