我已经购买了两个 PositiveSSL 证书(分开),一个用于 manager.domain.com,另一个用于 domain.com。最初我只需要使用 SSL 的 manager.domain.com,但后来我需要在 domain.com 上使用 SSL。使用 domain.manager.com 的一个 SSL 证书一切正常,但当我将第二个证书数据添加到 .pem 文件时,domain.com 尝试使用 domain.com 的证书进行验证,但不起作用。如何使用同一个 stunnel 实例获得两个 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(可以使用),第二个证书用于 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
您需要使用 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