Let’s Encrypt、商用およびプライベート認証局、自己署名SSL証明書の比較

前書き

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

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

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

用語集

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

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

Transport Layer Securityは、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.com database.example.com *などのexample.comのサブドメインをカバーします。 アスタリスク文字は_wildcard_であり、任意の有効なホスト名に置き換えることができます。

証明書失効リスト(CRL)

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

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

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

商業認証局

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

  • *プロセス:*初期セットアップと更新のための手動プロセス

  • *コスト:*約10〜1000ドル

  • 検証: DV、OV、およびEV

  • *信頼:*ほとんどのブラウザおよびオペレーティングシステムでデフォルトで信頼されています

  • *ワイルドカード証明書:*はい

  • * IPのみの証明書:一部は*パブリック IPアドレスの証明書を発行します

  • 有効期限: 1〜3年

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

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

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

暗号化しましょう

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

  • *プロセス:*初期設定と更新は自動化されています。 ApacheとNginxのセットアップのみが公式クライアントで自動化されますが、証明書は特定のサーバーソフトウェアとは無関係にダウンロードして使用できます。

  • *コスト:*無料

  • 検証: DVのみ

  • *デフォルト:*ほとんどのブラウザとオペレーティングシステムでデフォルトで信頼されています

  • *ワイルドカード証明書:*いいえ(https://letsencrypt.org/2017/07/06/wildcard-certificates-coming-jan-2018.html[2018年1月に計画])

  • * IPのみの証明書:*いいえ

  • 有効期限: 90日

証明書の暗号化の有効期間を短くして、自動更新を促し、侵害された証明書が攻撃者に悪用される可能性を減らします。

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

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

EV証明書またはワイルドカード証明書が必要な場合、Let’s Encryptは選択できません。 Let’s Encryptでは最大100個のホスト名を使用して証明書を作成できるため、ユースケースに実際にワイルドカードは必要なく、既存のすべてのサブドメインをカバーする証明書が必要な場合があります。

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

自己署名証明書

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

  • *プロセス:*手動の証明書作成、更新メカニズムなし

  • *コスト:*無料

  • 検証: DVおよびOV

  • *信頼:*デフォルトではなし。 関与する共通CAがないため、各証明書は手動で信頼済みとしてマークする必要があります

  • *ワイルドカード証明書:*はい

  • * IPのみの証明書:*はい、任意のIP

  • *有効期限:*任意

自己署名証明書は、OpenSSLライブラリに同梱されている `+ openssl +`コマンドで作成できます。 チュートリアルhttps://www.digitalocean.com/community/tutorials/openssl-essentials-working-with-ssl-certificates-private-keys-and-csrsで、正確な必要なコマンドとOpenSSLの背景を見つけることができます。 [OpenSSL Essentials:SSL証明書、秘密鍵、およびCSRの操作]。

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

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

プライベート認証局

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

  • *プロセス:*証明書の手動作成と更新、およびCA自体の手動セットアップ

  • *コスト:*無料

  • 検証: DVおよびOV

  • *信頼:*デフォルトではなし。 信頼を確立するには、プライベートCA証明書をクライアントに手動で配布する必要があります

  • *ワイルドカード証明書:*はい

  • * IPのみの証明書:*はい、任意のIP

  • *有効期限:*任意

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

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

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

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

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

結論

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

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

  • OpenSSL documentationは、ライブラリとそのコマンドの詳細を説明しています

  • CA/Browser Forumは、認証局とブラウザベンダーがCAの運用方法に関する要件とベストプラクティスを策定する場所です。 これには、証明書の有効期間や、非パブリックドメイン名に対して証明書を発行するかどうかなどのルールが含まれます

  • Let’s Encrypt CAには、ACMEプロトコルに関する詳細情報があります。

前の投稿:Ubuntu 18.04にComposerをインストールして使用する方法
次の投稿:Nagios 4をインストールし、CentOS 7でサーバーを監視する方法