Autenticação de certificado de cliente Apache

1

Como posso configurar o Apache 2 (no Ubuntu 10.04) para usar a Autenticação de Certificado do Cliente, onde meu domínio (secure.somedomain.com) é protegido por um certificado SSL confiável de terceiros e os certificados do cliente são emitidos pela minha própria CA?

Quando eu tento usar o certificado SSL confiável de terceiros (/ C = US / O = GeoTrust, Inc. / CN = RapidSSL CA), recebo erros porque acho que os conflitos SSLCACertificateFile!?!?

Resultado de: $ openssl s_client -state -debug -showcerts -verify 0 -connect secure.somedomain.com

depth=1 /C=US/O=GeoTrust, Inc./CN=RapidSSL CA
verify error:num=20:unable to get local issuer certificate
verify return:0

Meu arquivo conf do apache:

<VirtualHost *:443>
    ServerAdmin [email protected]
    ServerName secure.somedomain.com

    SSLEngine On
    SSLCertificateFile /var/websites/ssl/certificate.cer
    SSLCertificateKeyFile /var/websites/ssl/key.key
    SSLCACertificateFile /var/websites/ssl/intermediate.cer

    DocumentRoot /var/websites/www
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /var/websites/www>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
            SetHandler mono
            DirectoryIndex index.html default.aspx

            SSLCACertificateFile /etc/apache2/ownca.pem
            SSLVerifyClient require
            SSLVerifyDepth 1
    </Directory>

    LogLevel warn
    ErrorLog /var/websites/logs/error_443.log
    CustomLog /var/websites/logs/access_443.log combined
    ServerSignature On

Qualquer recomendação seria muito apreciada. Eu posso encontrar muitos tutoriais sobre como usar o certificado auto-assinado, mas nenhum exemplo de raiz confiável de terceiros. Não quero um aviso de segurança para meus usuários.

Eles devem poder ir ao meu site, devem apresentar um certificado válido emitido por terceiros e solicitar um certificado do cliente que foi assinado pela minha CA.

    
por Scott McArthur 18.07.2011 / 17:05

2 respostas

0

Eu decidi começar com um servidor limpo. Os erros que eu estava encontrando foram realmente devido ao navegador ainda não ter o certificado de cliente; e, como tal, estava exibindo mensagens de erro obscuras.

<VirtualHost _default_:443>
    ServerAdmin [email protected]
    ServerName secure.somedomain.com

    SSLEngine On
    SSLCertificateFile /var/websites/ssl/certificate.crt
    SSLCertificateKeyFile /var/websites/ssl/certificate.key
    SSLCertificateChainFile /var/websites/ssl/cachain.pem

    DocumentRoot /var/websites/www
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /var/websites/www>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    SetHandler mono
            DirectoryIndex index.html index.aspx default.aspx

            SSLRequireSSL
    SSLCACertificateFile /etc/apache2/ownca.pem                
    SSLVerifyClient require
            SSLVerifyDepth 1
            SSLOptions +StrictRequire +StdEnvVars +ExportCertData
    </Directory>

    LogLevel warn
    ErrorLog /var/websites/logs/error_443.log
    CustomLog /var/websites/logs/access_443.log combined
ServerSignature On

    
por 19.07.2011 / 10:17
1

às vezes você precisa adicionar uma opção SSLCertificateChainFile no seu apache2.conf.

Por exemplo, usamos o SureServer para nossos certificados SSL. Às vezes, os navegadores que não contêm a árvore completa para o certificado SSL e precisam fornecê-la:

SSLEngine On
SSLCertificateFile ...
SSLCertificateKeyFile ...
SSLCertificateChainFile /etc/apache2/sureserverEDU.pem

Então, você provavelmente precisará adicionar sua CA de terceiros.

Se bem me lembro, o rapidSSL tem um arquivo em cadeia (RapidSSL_CA_bundle.pem)

    
por 18.07.2011 / 17:12