HTTP/SSL Tomcat 6.0.10

9 respostas
R

Boa tarde,

Desculpem o tópico, mas mesmo lendo o excelente tutorial de mark_domi (http://www.guj.com.br/posts/list/29710.java), não consegui rodar SSL no meu Tomcat.

Estou tentando, até agora sem sucesso, configurar SSL em meu Tomcat. A versão dele que estou usando é: 6.0.10.

Tenho que configurar minhas aplicações para “Single Sign-on”, para isto, preciso rodá-las em conexões seguras.

O que fiz até agora?

  • Criei um certificado de segurança, através do comando:

keytool -genkey -alias nomeDoCertificado -keyalg DSA -keypass SenhaDaChave -storepass SenhaDoStore -keystore C:/java/certificado.jks -dname “cn=empresa, ou=area, o=grupoDeTrabalho, l=Cidade, S=Estado, c=Pais” -validity 365


  • Configurei o arquivo “server.xml” que ficou desta maneira:


Qual problema está ocorrendo?

  • Quando tento acessar: “https://localhost:8443”, meu navegador fica alguns minutos tentando carregar, mas o que ele retorna é aquela velha mensagem: “Servidor não encontrado. A página não pode ser exibida.”.

Alguem pode me ajudar com isso?

9 Respostas

T

As chaves da chave (keyPass) e do keystore (storePass) são diferentes; você precisa especificar as duas no server.xml.

Veja a documentação do Tomcat para ver quais são os nomes corretos desses atributos (acho melhor você deixar a chave da chave e do keystore iguais para não ter problemas).

P

Olá!!! Tente assim…

execute: keytool -genkey -alias tomcat -keyalg RSA -keystore c:/key.jks

O que estiver em negrito vc deve responder e o que estiver entre <> vc deve alterar.

Enter keystore password: changeit
Re-enter new password: changeit

What is your first and last name?
[Unknown]:

What is the name of your organizational unit?
[Unknown]: <você escolhe ex: BRS>

What is the name of your organization?
[Unknown]: <você escolhe ex: BRSYSTEM>

What is the name of your City or Locality?
[Unknown]: <você escolhe ex: IBITINGA>

What is the name of your State or Province?
[Unknown]: <você escolhe ex: SP>

What is the two-letter country code for this unit?
[Unknown]: BR

ao final confirme as informações com y e confirme a senha changeit.

agora vamos a configuração do server.xml:
Você deve procurar essa linha:

<!--
    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" 
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" />
    -->

e alterar para:

<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true" 
               maxThreads="150" scheme="https" secure="true"
	       keystoreFile="c:\key.jks" keystorePass="changeit"
               clientAuth="false" sslProtocol="TLS" />

Obs: a senha deve ser changeit

Esse é o server.xml do meu servidor:

<!-- Note:  A "Server" is not itself a "Container", so you may not
     define subcomponents such as "Valves" at this level.
     Documentation at /docs/config/server.html
 -->
<Server port="8005" shutdown="SHUTDOWN">

  <!--APR library loader. Documentation at /docs/apr.html -->
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->
  <Listener className="org.apache.catalina.core.JasperListener" />
  <!-- JMX Support for the Tomcat server. Documentation at /docs/non-existent.html -->
  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />

  <!-- Global JNDI resources
       Documentation at /docs/jndi-resources-howto.html
  -->
  <GlobalNamingResources>
    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users
    -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>

  <!-- A "Service" is a collection of one or more "Connectors" that share
       a single "Container" Note:  A "Service" is not itself a "Container", 
       so you may not define subcomponents such as "Valves" at this level.
       Documentation at /docs/config/service.html
   -->
  <Service name="Catalina">

    <!-- A "Connector" represents an endpoint by which requests are received
         and responses are returned. Documentation at :
         Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
         Java AJP  Connector: /docs/config/ajp.html
         APR (HTTP/AJP) Connector: /docs/apr.html
         Define a non-SSL HTTP/1.1 Connector on port 8080
    -->
    <Connector port="80" protocol="HTTP/1.1" 
               maxThreads="150" connectionTimeout="20000" 
               redirectPort="8443" />

    <!-- Define a SSL HTTP/1.1 Connector on port 8443
         This connector uses the JSSE configuration, when using APR, the 
         connector should be using the OpenSSL style configuration
         described in the APR documentation -->

    <Connector port="443" protocol="HTTP/1.1" SSLEnabled="true" 
               maxThreads="150" scheme="https" secure="true"
	       keystoreFile="c:\key.jks" keystorePass="changeit" 
               clientAuth="false" sslProtocol="TLS" />


    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />


    <!-- An Engine represents the entry point (within Catalina) that processes
         every request.  The Engine implementation for Tomcat stand alone
         analyzes the HTTP headers included with the request, and passes them
         on to the appropriate Host (virtual host).
         Documentation at /docs/config/engine.html -->

    <!-- You should set jvmRoute to support load-balancing via AJP ie :
    <Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">         
    --> 
    <Engine name="Catalina" defaultHost="localhost">

      <!--For clustering, please take a look at documentation at:
          /docs/cluster-howto.html  (simple how to)
          /docs/config/cluster.html (reference documentation) -->
      <!--
      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
      -->        

      <!-- The request dumper valve dumps useful debugging information about
           the request and response data received and sent by Tomcat.
           Documentation at: /docs/config/valve.html -->
      <!--
      <Valve className="org.apache.catalina.valves.RequestDumperValve"/>
      -->

      <!-- This Realm uses the UserDatabase configured in the global JNDI
           resources under the key "UserDatabase".  Any edits
           that are performed against this UserDatabase are immediately
           available for use by the Realm.  -->
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase"/>

      <!-- Define the default virtual host
           Note: XML Schema validation will not work with Xerces 2.2.
       -->
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  
               prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
        -->

      </Host>
    </Engine>
  </Service>
</Server>

Para testar acesse https://localhost

R

Funcionou!

Muito obrigado thingol e muito obrigado plic_ploc, fiz como você explicou e ficou tudo certo!

Obrigado por tudo!

S

Cara um otimo passa a passo.

estava lendo a documentação no site da apache e naum tava conseguindo nada.

Vlw

D

Até que enfim funcionou, ótimo passo a passo.

Valeu.

G

em qual diretorio eu digito esses comandos?
obrigado

Kleber-rr

Olá pessoal, td bem??

Estou interessado em estudar sobre os certificados SSL para aplicações Web usando o java e o tomcat6. Achei interessante o material, mas estou com dúvidas no framework. Quais frameworks eu posso utilizar para desenvolver uma aplicação web com SSL? Eu sou iniciante em java, e estou utilizando atualmente o JSF1 + hibernate + facelets + PostgreSQL. Posso implementar o SSL utilizando este framework?? Quais alterações devo fazer?

Agradeço a todos.

Kleber-rr

plic_ploc:

Cara, sei que o post é bem antigo, mas realmente preciso de ajuda…

Conferindo as alteraçoes do colega dono do post, nao consigo utilizar a porta 443 no tomcat. quando eu mudo a porta no arquivo server.xml, e mando rodar novamente o tomcat, ele me diz que a porta já está sendo utilizada…

O que eu posso fazer?? já tentei liberar a porta, e dá o mesmo erro…

Agradeço a ajuda.

CoringadoBatman

Muitooo Bom! Obrigaduu

Criado 16 de março de 2007
Ultima resposta 17 de jan. de 2012
Respostas 9
Participantes 8