Configuração SSL, Tomcat com Apache e mod_jk

1

Eu estou olhando para configurar o SSL com o tomcat 6 e servidor web apache, usando o conector tomcat mod_jk. Eu sou muito novo para isso, por favor, tenha paciência comigo.

Eu tenho certificado SSL comprado e configurado no tomcat usando o arquivo keystore. Está funcionando perfeitamente se o acesso tomcat diretamente via https. Agora eu preciso do apache na frente do tomcat, minha pergunta é, eu preciso fornecer certificado tanto no tomcat quanto no apache ou apenas no tomcat? O apache não deveria passar o pedido para o tomcat (usando JkExtractSSL) e permitir que ele lide com a autenticação SSL (verificação de certificado)?

Se os caminhos do certificado precisarem ser configurados no apache e no tomcat, então eu tenho os arquivos cert.p7b e certreq.csr, que certamente não são compatíveis com o apache, por favor, como eu posso fazer isso?

Eu tenho a seguinte configuração até agora:

link

    LoadModule ssl_module modules/mod_ssl.so
    LoadModule jk_module modules/mod_jk.so
    JkWorkersFile /usr/local/apache2/conf/workers.properties
    JkShmFile     logs/mod_jk.shm
    JkLogFile logs/mod_jk.log
    JkLogLevel info
    JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
    JkMount  /mywebapp/* worker1
    JkExtractSSL On
    JkHTTPSIndicator HTTPS
    JkSESSIONIndicator SSL_SESSION_ID
    JkCIPHERIndicator SSL_CIPHER
    JkCERTSIndicator SSL_CLIENT_CERT

    <VirtualHost _default_:80>

       DocumentRoot "/var/lib/tomcat6/webapps/mywebapp"

       Alias /mywebap "/var/lib/tomcat6/webapps/mywebapp"
       <Directory "/var/lib/tomcat6/webapps/mywebapp">
         Options Indexes FollowSymLinks
         AllowOverride NONE
         Order allow,deny
         Allow from all
       </Directory>

      <Location "/mywebapp/WEB-INF/">
         AllowOverride None
         Deny from all
      </Location>

    </VirtualHost>
    Include conf/extra/httpd-ssl.conf

link

    <VirtualHost _default_:443>

       DocumentRoot "/var/lib/tomcat6/webapps/mywebapp"

        SSLEngine on
        SSLCipherSuite ALL:!ADH:!EXP56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
        SSLOptions +StdEnvVars +ExportCertData

        Alias /mywebapp "/var/lib/tomcat6/webapps/mywebapp"
        <Directory "/var/lib/tomcat6/webapps/mywebapp">
           Options Indexes FollowSymLinks
           AllowOverride None
           Order allow,deny
           Allow from all
        </Directory>

        JkMount /mywebapp/* worker1

        <Location "/mywebapp/WEB-INF/">
           AllowOverride None
           Deny from all
        </Location>
     </VirtualHost>

Importante mencionar aqui que não há SSLCertificateFile e SSLCertificateKeyFile configurados em httpd-ssl.conf, como não tenho certeza, se necessário no servidor web tomcat e apache. Eu já configurei no tomcat usando o arquivo keystore.

    
por wazzz 17.08.2012 / 15:19

2 respostas

2

SSL é usado para comunicações criptografadas entre um cliente e sua Web serviço. Se você está colocando o Apache na frente do Tomcat, então você precisa para configurar o Apache com o certificado SSL ... e você não precisa dele de todo para o Tomcat, porque o Apache está lidando com todo o cliente comunicação.

If certificate paths need to be configured in both apache and tomcat, then i have cert.p7b and certreq.csr files, which are surely not apache compatible, can you please tell how can i do that?

O arquivo .csr é sua solicitação de certificado e não é importante.

This pergunta tem links que ajudarão você a converter seu arquivo .p7b em um Certificado PEM-codificado para uso com o Apache.

Você também pode exportar o certificado codificado por PEM do seu keystore usando o comando -exportcert :

keytool -exportcert -alias <alias> | openssl x509 -inform der

A diretiva JkExtractSSL diz ao Apache para passar algumas mensagens relacionadas a SSL informações para o Tomcat. De acordo com este documento , que inclui as seguintes variáveis de ambiente:

  • SSL_CIPHER
  • SSL_CIPHER_USEKEYSIZE
  • SSL_SESSION_ID
  • SSL_CLIENT_CERT_CHAIN_ n
por 17.08.2012 / 17:58
0

bem, parece que não posso comentar sobre seus post larsks, então estou postando isso como uma resposta. Obrigado pela sua resposta. Isso me ajudou a esclarecer algumas coisas. Então, com base na sua resposta, eu gerei o arquivo .cer do comando keytool -exportcert como você sugeriu. No entanto, agora quando eu começo o apache, recebo o seguinte erro:

  Error: "[error] mod_ssl: Init: Private key not found (OpenSSL library error follows [error] OpenSSL: error:0D084069:asn1 encoding routines:d2i_ASN1_SET:bad tag [error] OpenSSL:

Eu fiz um pouco de google e descobri que "o Apache não consegue ler a chave privada protegida por senha". A chave não deve ser exportada junto com o certificado? aparentemente não. Então, como faço o apache ler a chave privada e onde encontro a chave privada?

    
por 18.08.2012 / 02:20