web-dev-qa-db-ja.com

nginxでSSL証明書を設定するときにルート証明書を提供する必要がありますか

QualysのSSLテストでは、ルート証明書は追加のダウンロードであり、安全に削除できることを常に警告しています。

ただし、ComodoのWebサイトから、nginxに証明書をインストールするためのガイドは

NGINX Needed for this task: * PEM encoded certificates (Root, Intermediate(s) and 
Domain/Device) COMBINE (CONCATENATE) MULTIPLE CERTIFICATES INTO ONE FILE 

あなたが知っている、彼らはCAであり、本物の答えです。だから、私はどちらを信頼すべきですか?

更新:他のCAからもアドバイスを集めています

ルート証明書の追加を提案します

ルート証明書は必要ないことを提案します

とても混乱しますか?

4
Ryan

QualysSSLテストとComodoの両方が正しいです。 Comodoは、サーバー側のコードの観点からは正しいです。 Nginxは、使用する証明書を信頼する必要があります。

一方、Qualys SSLテストは、ネットワークプロトコルの観点からは正しいものです。 SSLネゴシエーション中に、サーバーは独自のSSL証明書とルート証明書を除くすべての中間CA証明書を送信する必要があります。 RFC5246§7.4.2 からの参照:

certificate_listこれは証明書のシーケンス(チェーン)です。送信者の証明書は、リストの最初に来る必要があります。次の各証明書は、その前の証明書を直接証明する必要があります。証明書の検証ではルートキーを個別に配布する必要があるため、ルート認証局を指定する自己署名証明書は、どのような場合でも検証するためにリモートエンドがすでに所有している必要があるという前提で、チェーンから省略できます。

13
Crypt32

証明書チェーンの検証のポイントは、ローカルで信頼された(ルート)証明書があり、そこからピアから送信された証明書への信頼を延期することです。したがって、サーバーは、ローカルルート証明書からリーフ証明書に信頼チェーンを構築するために必要なリーフ証明書と中間証明書のみを送信する必要があります。つまり、ルート証明書を送信するべきではありませんが、送信しない場合、通常は無視されます。

また、証明書を正しい順序で追加する必要があります。つまり、最初にリーフ証明書、次にチェーン証明書を正しい署名順序で追加します。一部のサーバーまたはクライアントは間違った順序を回避する可能性がありますが、それを当てにするべきではありません。

2
Steffen Ullrich