Múltiplos certificados SSL com Stunnel

5

Adquiri dois certificados PositiveSS (separadamente), um para manager.domain.com e outro para domain.com. Originalmente, eu só precisava de manager.domain.com usando SSL, mas precisava usar o SSL em domain.com. Tudo funciona bem com o único certificado SSL para domain.manager.com, mas quando eu adiciono os dados do 2º certificado ao arquivo .pem, domain.com tenta verificar usando o certificado do domain.com e ele não funciona. Como posso ter dois certificados ssl usando a mesma instancia de stunnel? Eu estou divertindo o nginx e também verniz se isso for útil.

Aqui está o arquivo de configuração do stunnel e o formato do meu arquivo pem. Nota - isto funcionará bem para domain.manager.com (que é o primeiro certificado).

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

[https]
accept  = 443
connect = 80

E o formato para o all.pem. O primeiro certificado é para manager.domain.com (que funciona) e o segundo é para domain.com, que não funciona. (A chave privada foi gerada com manager.domain.com):

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

Eu também tentei separar os certs e colocá-los em um CApath

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

[https]
accept  = 443
connect = 80

Eu uso os comandos

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

para criar os arquivos para colocar no diretório / etc / stunnel / certs /. Mas o stunnel apresenta o seguinte erro ao tentar reiniciar:

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

Os arquivos que me foram dados para manager.domain.com são

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

e o mesmo para domain.com.

Alguém por favor pode me ajudar nisso?

    
por Errol Fitzgerald 19.10.2012 / 16:05

1 resposta

5

Você precisa usar o TLS SNI para poder apresentar dois certificados diferentes na mesma porta de atendimento. Esteja ciente de que alguns clientes, principalmente a maioria dos navegadores que executam com o Windows XP, não suportam SNI.

Veja a opção sni na documentação. Divida seus certificados em arquivos diferentes (a mesma chave privada é usada para os dois certificados públicos):

[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
    
por 20.10.2012 / 21:37