Apache / Mongrel / Rails que atende a dois certificados SSL?

1

É possível que o Apache (2.0) forneça dois certificados SSL quando o Mongrel e o Rails estão envolvidos?

Aqui está a situação ... Eu tenho um servidor com dois sites: foo.com e bar.com. Ambos possuem certificados SSL autoassinados (da GoDaddy) e ambos possuem seu próprio endereço IP. Aqui estão as configurações de configuração relevantes do Apache:

<VirtualHost 192.168.100.17:443>
    ServerName secure.foo.com
    DocumentRoot /var/www/client/foo/current
    ProxyPass / http://127.0.0.1:3002/
    ProxyPassReverse / http://127.0.0.1:3002/
    ProxyPreserveHost on
    RequestHeader set X_FORWARDED_PROTO 'https'
    SSLEngine on
    SSLCertificateFile /etc/httpd/conf/ssl.crt/secure.foo.com.crt
    SSLCertificateKeyFile /etc/httpd/conf/ssl.key/secure.foo.com.key
    SSLCertificateChainFile /etc/httpd/conf/ssl.crt/gd_intermediate_bundle.crt
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
    ErrorLog /var/www/client/foo/current/log/ssl_error_log
    TransferLog /var/www/client/foo/current/log/ssl_access_log
    LogLevel warn
    <Files ~ "\.(cgi|shtml|phtml|php3?)$">
            SSLOptions +StdEnvVars
    </Files>
    <Directory "/var/www/cgi-bin">
            SSLOptions +StdEnvVars
    </Directory>
    RewriteEngine On
    SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
    CustomLog logs/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
<VirtualHost 192.168.100.16:443>
    ServerName secure.bar.com
    DocumentRoot /var/www/sites/bar/secure
    ProxyPass / http://127.0.0.1:3003/
    ProxyPassReverse / http://127.0.0.1:3003/
    ProxyPreserveHost on
    RequestHeader set X_FORWARDED_PROTO 'https'
    SSLEngine on
    SSLCertificateFile /etc/httpd/conf/ssl.crt/secure.bar.com.crt
    SSLCertificateKeyFile /etc/httpd/conf/ssl.key/secure.bar.com.key
    SSLCertificateChainFile /etc/httpd/conf/ssl.crt/gd_intermediate_bundle.crt
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
    ErrorLog /var/log/httpd/bar.com/ssl_error_log
    TransferLog /var/log/httpd/bar.com/ssl_access_log
    LogLevel warn
    <Files ~ "\.(cgi|shtml|phtml|php3?)$">
            SSLOptions +StdEnvVars
    </Files>
    <Directory "/var/www/cgi-bin">
            SSLOptions +StdEnvVars
    </Directory>
    SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
    CustomLog logs/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>

Se eu for a uma página em secure.foo.com que deve ser segura (por exemplo, link ), recebo um aviso que o certificado é para secure.BAR.com. Mas se eu ver o certificado é para secure.FOO.com.

Isso está acontecendo apenas no Firefox. Nenhum aviso no MSIE.

Minha teoria é que o Apache está oferecendo o certificado correto (para secure.foo.com), mas de alguma forma o certificado para secure.bar.com também é enviado. (Eu estou supondo que o MSIE não lança um erro porque simplesmente ignora o segundo.)

Eu gostaria de culpar a situação do Mongrel, mas o Mongrel não "faz" SSL. Eu também gostaria de culpá-lo no Rails, mas tudo que o Rails faz é verificar se uma página deve ser criptografada e se não for, apenas redirecione-a para uma conexão segura.

Alguém viu algo assim antes? Alguma idéia de qual seria o problema?

ATUALIZAÇÃO: Comentar as linhas a seguir na configuração do Apache desativa o site, é claro, mas resulta em um "handshake" SSL correto:

ProxyPass / http://127.0.0.1:3002/
ProxyPassReverse / http://127.0.0.1:3002/
ProxyPreserveHost on
    
por ddb 31.01.2011 / 19:18

1 resposta

1

Isso é embaraçoso ...

O problema estava sendo causado por um link favicon mal formado nas páginas. Estávamos vinculando ao link quando deveria ser https: // secure .foo.com /images/favicon.ico.

Pelo que entendi, o problema não estava afetando o MSIE, porque o MSIE ignora os links do favicon via SSL.

    
por 31.01.2011 / 22:03