Por que o Apache está retornando um certificado errado?

1

Eu tenho o site foo.es com um certificado curinga SSL em execução desde há 2 anos. Agora quero instalar outro certificado para "**. Foo.com *" no mesmo servidor. Eu copiei os novos arquivos foo_com.crt e foo_com.key para o novo servidor e adicionei uma nova entrada ao ssl.conf :

<VirtualHost foo.com:443>
ServerAdmin [email protected]
DocumentRoot /var/www/foo.com/
Servername foo.com
ServerAlias www.foo.com

ErrorLog /usr/local/apache/logs/error_log
TransferLog /usr/local/apache/logs/access_log

SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM
SSLCertificateFile /etc/httpd/ssl.crt/foo_com.crt
SSLCertificateKeyFile /etc/httpd/ssl.key/foo_com.key
SSLCertificateChainFile /etc/httpd/ca/sub.class2.server.ca.pem
SSLCACertificateFile /etc/httpd/ca/ca.pem

SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
CustomLog /usr/local/apache/logs/ssl_request_log \
      "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>

Com isso, esperava acessar link sem nenhum problema. Em vez disso, o navegador avisa com um código de erro ssl_error_bad_cert_domain . Quando vi o certificado, descobri que o nome comum do certificado é **. Foo.es *, ou seja, o primeiro certificado (observe que ainda tenho esse certificado instalado, preciso dos dois).

O log de erros do Apache diz apenas isto:

[Wed Jan 23 22:53:56 2013] [warn] RSA server certificate CommonName (CN) '*.foo.com' does NOT match server name!?
[Wed Jan 23 22:53:56 2013] [warn] RSA server certificate CommonName (CN) '*.foo.com' does NOT match server name!?
[Wed Jan 23 22:53:56 2013] [warn] RSA server certificate CommonName (CN) '*.foo.com' does NOT match server name!?
[Wed Jan 23 22:53:56 2013] [warn] RSA server certificate wildcard CommonName (CN) '*.foo.com' does NOT match server name!?
[Wed Jan 23 22:53:56 2013] [warn] RSA server certificate CommonName (CN) '*.foo.com' does NOT match server name!?
[Wed Jan 23 22:53:56 2013] [warn] RSA server certificate CommonName (CN) '*.foo.com' does NOT match server name!?
[Wed Jan 23 22:53:56 2013] [warn] RSA server certificate CommonName (CN) '*.foo.com' does NOT match server name!?
[Wed Jan 23 22:53:56 2013] [warn] RSA server certificate wildcard CommonName (CN) '*.foo.com' does NOT match server name!?

O que está acontecendo? Por que o navegador obtém o certificado foo.es, mas o log do Apache relata um problema com o foo.com cert?

Em execução: Apache / 2.0.59 (Unix) mod_ssl / 2.0.59 OpenSSL / 0.9.8g em uma distribuição do Gentoo

    
por Ivan 23.01.2013 / 23:36

1 resposta

3

O Apache não suporta o SNI até a versão 2.2.12 . Antes disso, o Apache simplesmente servia o primeiro certificado. Depois de descriptografar o pedido, ele ainda corresponderá ao vhost correto.

Se você tiver apenas um endereço IP, será necessário atualizar o Apache. (Mesmo se você tiver mais de um endereço IP, o Apache percorreu um longo caminho desde a versão 2.0.59. Você realmente deve atualizar a menos que precise da versão anterior.)

Alguns navegadores e sistemas operacionais também não suportam SNI. Se o seu site tiver visitantes usando um dos navegadores que não suportam o SNI, você terá que procurar um segundo endereço IP.

    
por 23.01.2013 / 23:48