web-dev-qa-db-ja.com

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を面白くして、それが役に立つならニスも塗っています。

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

dir/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についても同じです。

誰かがこれについて私を助けてくれますか?

5

同じリスニングポートで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
5
Shane Madden