Stunnel を使用した複数の SSL 証明書

Stunnel を使用した複数の SSL 証明書

私は 2 つの PositiveSSL 証明書を (別々に) 購入しました。1 つは manager.domain.com 用、もう 1 つは domain.com 用です。当初は SSL を使用するには manager.domain.com のみが必要でしたが、その後、domain.com でも SSL を使用する必要がありました。domain.manager.com の 1 つの SSL 証明書ではすべて正常に動作しますが、2 番目の証明書データを .pem ファイルに追加すると、domain.com は domain.com の証明書を使用して検証しようとしますが、動作しません。同じ stunnel インスタンスを使用して 2 つの SSL 証明書を持つにはどうすればよいですか? 役に立つ場合は、nginx と varnish も試しています。

以下は、stunnel 構成ファイルと、pem ファイルの形式です。注: これは、domain.manager.com (最初の証明書) では正常に機能します。

cert = /etc/ssl/all.pem
debug = 5
output = /var/log/stunnel4/stunnel.log

[https]
accept  = 443
connect = 80

all.pem の形式は次のとおりです。最初の証明書は manager.domain.com 用 (機能します)、2 番目は domain.com 用 (機能しません) です。(秘密キーは manager.domain.com で生成されました)。

-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkahkiG9w0BAQEFAASCBKkwggSl444AAoIBAQDz/pbylQ5Ci6ji
END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIFCjCCA/gdfwIBAgIRAL9QPhnM0h2smePkZ8ToSBMwDdfgKoZIhvcNAQEFBQAw
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFCjCCA/gdfwIBAgIRAL9QPhnM0h2smePkZ8ToSBMwDdfgKoZIhvcNAQEFBQAw
-----END CERTIFICATE-----

証明書を分離してCApathに入れることも試しました

CApath = /etc/stunnel/certs/
debug = 5
output = /var/log/stunnel4/stunnel.log

[https]
accept  = 443
connect = 80

私はコマンドを使用します

openssl x509 -hash -noout -in domain.pem
openssl x509 -hash -noout -in manager.domain.pem

/etc/stunnel/certs/ ディレクトリに配置するファイルを作成します。しかし、stunnel を再起動しようとすると次のエラーが発生します。

Restarting SSL tunnels: No limit detected for the number of clients
signal_pipe: FD=3 allocated (non-blocking mode)
signal_pipe: FD=4 allocated (non-blocking mode)
stunnel 4.42 on i686-pc-linux-gnu platform
Compiled with OpenSSL 1.0.0e 6 Sep 2011
Running  with OpenSSL 1.0.1 14 Mar 2012
Update OpenSSL shared libraries or rebuild stunnel
Threading:PTHREAD SSL:ENGINE Auth:LIBWRAP Sockets:POLL,IPv6
Reading configuration from file /etc/stunnel/https.conf
PRNG seeded successfully
Line 8: End of section https: SSL server needs a certificate
str_stats: 53 block(s), 3974 byte(s)
[Failed: /etc/stunnel/https.conf]
You should check that you have specified the pid= in you configuration file

manager.domain.comに提供されたファイルは

Root CA Certificate - AddTrustExternalCARoot.crt
Intermediate CA Certificate - PositiveSSLCA2.crt
Your PositiveSSL Certificate - manager_domain_com.crt

domain.com についても同様です。

誰かこの件について助けてくれませんか?

答え1

同じリスニング ポートで 2 つの異なる証明書を提示できるようにするには、TLS SNI を使用する必要があります。一部のクライアント、特に Windows XP で実行されているほとんどのブラウザーは SNI をサポートしていないことに注意してください。

sniドキュメントのオプションを参照してください。証明書を別のファイルに分割します (両方の公開証明書に同じ秘密鍵が使用されます)。

[https]
cert = /etc/ssl/domain.com.pem
accept  = 443
connect = 80

[domain]
sni = https:domain.com
sni = https:www.domain.com
cert = /etc/ssl/domain.com.pem
connect = 80

[manager]
sni = https:manager.domain.com
cert = /etc/ssl/manager.domain.com.pem
connect = 80

関連情報