100ノードを超える非常に大規模なクラスターを構築しています。さまざまなタイプがありますが、Elasticsearchノードを例として使用します。 TLSを使用してノード間のメッシュ接続を暗号化しています。小さなクラスターではこれはうまくいきましたが、大きなクラスターの証明書を生成するときにこの問題に遭遇しました:
https://support.venafi.com/hc/en-us/articles/215914307-Error-MS-CA-error-0xc80005e2-while-enrolling
基本的に、SANリストの最大サイズは、エンコード用に2/nameの4096バイトであり、my SANリストは、エンコードのオーバーヘッドがなくても、すでに4566バイトです。 。
したがって、私の質問は、SANリストを2つの証明書(同じCAによって署名された)に分割した場合、2つの証明書をアプリケーションで使用できる1つのファイルに連結する方法はありますか。単一の証明書ファイルを指定する必要がありますか?cat cert{1,2}.crt > combined.crt
と同じくらい簡単ですか?
複数の証明書を1つのエンティティに結合して、検証のためにクライアントに提供する方法はありません。クライアントが一致するものを選択することを期待して、TLSハンドシェイク内でクライアントに複数のリーフ証明書を送信することもできません。
多くの名前を処理する一般的な方法は、代わりに多くの証明書を用意し、SNIを使用して期待される証明書を提供することです。これは、クライアントがTLSハンドシェイクClientHello内のserver_name
拡張内に予期されるドメインを送信し、サーバーがこの拡張をチェックして、要求された名前と一致する証明書を提供することを意味します。もちろん、これにはクライアントとサーバーの両方によるサポートが必要です。 HTTPSを使用すると、これはクライアントとサーバーの両方で一般的にサポートされますが、他のTLSベースのプロトコルではこれが異なる場合があります。