Tomcat + https

Configurando o TOMCAT para acessar um site via HTTPS (SSL) sem utilizar o APACHE como Servidor WEB

Para gerar um certificado se utiliza o comando abaixo(se você está utilizando JAVA 1.3 no site da SUN procure por JSSE)

No arquivo do SERVER.XML do TOMCAT descomente o trecho abaixo:

E adicione os parâmetros:

Ficando assim:

Usando desta forma, sempre aparecerá uma mensagem avisando que este certificado não é seguro, mas você conseguirá trabalhar sem problemas.

Caso queria que esta mensagem desapareça alternativa é o OPENSSL.

Instale o OPENSSL

Execute os comandos abaixo:

Ao final destes passos você terá um arquivo chamado certificado.p12

Você sabe pra que todos estes comandos???

Quando você descobrir não precisa me contar não.

Acerte o servidor.xml do tomcat para

presta atenção, tem um parâmetro novo no Connector Port:

Agora se voce quer que um determinado modulo do seu Site seja acessado apenas via HTTPS adicione o trecho abaixo no web.xml da sua aplicação

fui

O material é seu, ou é de outra fonte ?
Se for de outra fonte, vc pode por favor citá-lo pra galera ?

Obrigado, e parabéns ! :slight_smile:

Fui eu mesmo que escrevi depois de muita luta… 1 dia e 1/2 tentando fazer isso ai. e discobrir que não existe material em portugues, e o tutorial que tem no site do tomcat tem umas gafes…

Abraço

Olá mark_domi

Tentei usar o exmplo mas sem sucesso. :frowning:
O que me acontece é que depois de seguir todos os passos até à parte do conector acontece-me o mesmo que acontecia quando usei o que estava no site do tomcat sobre como configurar o ssl.
Quando faço https://localhost:8443 a página fica a tentar abrir durante algum tempo e depois dá erro a dizer que nao pode apresentar a página.

Já ando à imenso tempo de volta disto e nao consigo colocar a funcionar de maneira nenhuma.

Obrigado a quem puder ajudar.
Luís Matos

Eu tb vou precisar colocar uma das minhas aplicações pra rodar em HTTPS logo, e naum entendi quase nada :oops:

Qd tiver tudo pronto aki eu tento esse tutorial, valeu :smiley:

ta dando isso aqui…

INFO: Starting Coyote HTTP/1.1 on http-8080 14/06/2006 17:00:07 org.apache.coyote.http11.Http11Protocol start SEVERE: Error starting endpoint java.io.IOException: Cannot recover key at org.apache.tomcat.util.net.jsse.JSSE14SocketFactory.init(JSSE14SocketFactory.java:127) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket(JSSESocketFactory.java:88) at org.apache.tomcat.util.net.PoolTcpEndpoint.initEndpoint(PoolTcpEndpoint.java:259) at org.apache.tomcat.util.net.PoolTcpEndpoint.startEndpoint(PoolTcpEndpoint.java:281) at org.apache.coyote.http11.Http11Protocol.start(Http11Protocol.java:171) at org.apache.coyote.tomcat5.CoyoteConnector.start(CoyoteConnector.java:1527) at org.apache.catalina.core.StandardService.start(StandardService.java:489) at org.apache.catalina.core.StandardServer.start(StandardServer.java:2313) at org.apache.catalina.startup.Catalina.start(Catalina.java:556) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425) 14/06/2006 17:00:07 org.apache.catalina.startup.Catalina start SEVERE: Catalina.start: LifecycleException: Protocol handler start failed: java.io.IOException: Cannot recover key at org.apache.coyote.tomcat5.CoyoteConnector.start(CoyoteConnector.java:1529) at org.apache.catalina.core.StandardService.start(StandardService.java:489) at org.apache.catalina.core.StandardServer.start(StandardServer.java:2313) at org.apache.catalina.startup.Catalina.start(Catalina.java:556) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425) 14/06/2006 17:00:07 org.apache.catalina.startup.Catalina start INFO: Server startup in 7531 ms

alguem sabe oq pode ser?

Muito bom!
Da uma enfeitada e transforma num artigo :slight_smile:

eu instalei o openssl e rodei os comandos q vc colocou… percebi que haviam uns espaços nos diretórios, a correção está aqui:

Boa noite,
Estou desenvolvendo uma aplicação JFS com Eclipse, JDK 1.5 e TOMCAT 5.5. Gostaria de rodá-la sob SSL, porém ao executar minha aplicação https://localhost:8443/gerenciador/index.jsf, depois de alguns segundos é retornado página não encontrada. Sem o módo de seguraça a aplicação roda sem problemas. Segui e revisei todos os passos sugeridos aqui, no how-to do próprio site do TOMCAT e chequei também as variáveis de ambiente. Nos logs do TOMCAT não consta nenhum erro. Alguma sugestão de algo que eu possa verificar?

Gerei um certificado com a keytool, seguindo todos os passos, mas nao deu certo o eskema, apareceu uma msg no browser avisando que o certificado era invalido ou corrompido e nao fungou… :frowning:

Essa configuração não funciona , quando tento acessar https://localhost:8443/
página não é carregada, logo a conexão é perdida.Não estou desmerecendo
quem o escreveu ,na minha opinião, o artigo é muito bom porém não está funcionando ou está faltando algum parâmetro na configuração …

Comigo funcionou perfeitamente. Estava precisando muito configurar o https no Tomcat e esse post foi uma mão na roda.

Muito obrigado.

Abraço.

mark_domi, nesse seu exemplo, depois q vc faz o loguin, a sua aplicação continua usando o protocolo https?
Pq no meu caso eu queria q depois do login voltasse ao http. nao teria uma configuração pra fazer as requisições de um determinado contexto serem acessadas por http? ou seja fazer o caminho inverso https --> http.

grato!

Pessoal,

mesmo após instalar o openssl,ainda está sendo apresentada a mensagem de certificado inválido,como mostro em anexo.
Há alguma configuração que precise ser feita além das mostradas no texto?

Atenciosamente,
Rafael Roque
ITIL Foundations Certified
Sun Certified Enterprise Architect for Java 2 Enterprise Edition(I)
Sun Certified Web Component Developer for Java 2 Enterprise Edition
Sun Certified Programmer for Java 2 Platform Edition


Sobre o Errro java.io.IOException: Cannot recover key

Do site: http://www.ponton-consulting.de/ponton/content/e17/e800/e879/index_en.html

Em resumo, o problema eh que o password para a ssl key tem que ser identico ao passoword para o keystore.
EXEMPLO:
keytool -genkey -alias certif -keyalg DSA -keypass 123456 -store pass 123456 -keystore C:/cert.jks -dname “cn=NNN, ou=MM, o=WW, l=XX, S=YY, c=ZZ” -validity 365

Perceba que ambos sao 123456…

Pra quem ta com preguica de ir ao site… ta ae:
What’s going wrong?

This has to do with the password used for the SSL private key.
There is a restriction in the Tomcat server that the password for
the SSL key must be identical to the password for the keystore.
(This restriction is currently not mentioned in the Installation
and Configuration Guide.)

You can fix this by changing the password of your SSL key using
the ‘keytool’ command line tool. At the command prompt change
to the keystore directory (by default this is the Ponton X/P installation
directory) and type the following:

keytool -keypasswd -alias tomcat -keystore ssl-keystore

[quote=raf4ever]Pessoal,

mesmo após instalar o openssl,ainda está sendo apresentada a mensagem de certificado inválido,como mostro em anexo.
Há alguma configuração que precise ser feita além das mostradas no texto?

[/quote]

Isso quer dizer que você está usando um certificado que não foi emitido por uma autoridade certificadora que está instalada como “confiável” no browser (como a Verisign, Certisign, etc.) Esse erro é esperado mas é incômodo; só lhe lembra que você tem de solicitar um certificado para seu site, comprá-lo e instalá-lo (no Tomcat, solicitar um certificado e instalar é meio complicado porque você tem de fazer tudo com o keytool. No caso do Sun Java Application Server, WebSphere etc., por exemplo, isso já tem uma interface via browser para fazer essa solicitação e instalação. ).

Pessoal, para quem não conseguiu acertar a configuração, isso vai depender da versão do tomcat e da classe utilizada para comunicação https, para funcionar na versão do tomcat que estou usando foi necessário os seguintes ajustes:

    protocol="org.apache.coyote.http11.Http11NioProtocol" conforme fonte : (http://www.nabble.com/SSL-SetAllPropertiesRule-warning-and-error-td15432321.html)

e

keystoreFile="c:\java\certificado.bin" troquei pelo caminho absoluto já que estou usando Windows :-( no Linux :-) pode-se usar o caminho relativo.

Segue a tag Connector configurada aqui no meu ambiente:

Espero ter ajudado,

Bom dia Pessoal…

Primeiramente, um excelente post. salvou meu dia :smiley:

Porém não consegui fazer com que o certificado seja aceito automaticamente no browser do usuário, sempre ocorre a msg que o certificado não é seguro…

mesmo seguindo os passos com o OPENSSL… e colocando a mesma senha e tals…

Obs: Segundo o post. para não ocorrer a msg de certificado invalido, o certificado deve ser gerado com o OPENSSL e não o Keytool colocando a mesma senha e tals… não entendi essa ultima resposta…

Fiz o certificado gerando o p12 configurei o server.xml e nada…

Alguém pode dar um help???

Grato.
Rafael

[quote=rafael.mendes]Bom dia Pessoal…

Primeiramente, um excelente post. salvou meu dia :smiley:

Porém não consegui fazer com que o certificado seja aceito automaticamente no browser do usuário, sempre ocorre a msg que o certificado não é seguro…

mesmo seguindo os passos com o OPENSSL… e colocando a mesma senha e tals…

Obs: Segundo o post. para não ocorrer a msg de certificado invalido, o certificado deve ser gerado com o OPENSSL e não o Keytool colocando a mesma senha e tals… não entendi essa ultima resposta…

Fiz o certificado gerando o p12 configurei o server.xml e nada…

Alguém pode dar um help???

Grato.
Rafael[/quote]

Hehe, estou com a mesma duvida do cara aí.

[quote=Sorriso][quote=rafael.mendes]Bom dia Pessoal…

Primeiramente, um excelente post. salvou meu dia :smiley:

Porém não consegui fazer com que o certificado seja aceito automaticamente no browser do usuário, sempre ocorre a msg que o certificado não é seguro…

mesmo seguindo os passos com o OPENSSL… e colocando a mesma senha e tals…

Obs: Segundo o post. para não ocorrer a msg de certificado invalido, o certificado deve ser gerado com o OPENSSL e não o Keytool colocando a mesma senha e tals… não entendi essa ultima resposta…

Fiz o certificado gerando o p12 configurei o server.xml e nada…

Alguém pode dar um help???

Grato.
Rafael[/quote]

Hehe, estou com a mesma duvida do cara aí.[/quote]

Pessoal o nosso colega thingol explica um pouco mais acima o porque isso ocorre. Na verdade a chave deve ser emitida por uma certificadora conhecida como: verisign, certisign. Daí sim você importa utilizando a ferramenta keytool.