Habilitar SSL no Tomcat 7

Ola pessoal, tenho que colocar SSL no tomcat e estou me baseando por este post http://www.guj.com.br/posts/list/64549.java mas, mesmo fazendo o procedimento da URL, toda vez que acesso minha aplicação ele acessa de forma normal na :8080\sistema, minha dúvida não é com relação aos truststore e a cadeia de crtificados que preciso gerar, mas em como habilitar o SSL para quando eu acessar a URL me peça um certificado e me bloqueie a entrada no site, abraços e agredeço a quem souber me ajudar.

a modificação que fiz no server.xml foi a seguinte:

<Connector executor="tomcatThreadPool"
               port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />

    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" />
    -->
    <!-- Define a blocking Java SSL Coyote HTTP/1.1 Connector on port 443 -->
<Connector protocol="org.apache.coyote.http11.Http11Protocol"
port="8443" minSpareThreads="5" maxSpareThreads="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="C:\App\csr.kdb" keystorePass="xxxxxx"
clientAuth="false" sslProtocol="TLS"/>

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

Você quer fazer autenticação via certificado?

Ola comandante Garcia, tudo bem ?

sim, a resposta é sim, quero que quem for usar meu sistema web precise ter um certificado instalado no browser, porem não estou sabendo configurar, e aproveitando queria lhe perguntar se o open ssl é melhor para nivel de produção ? sem mais, obrigado.

Isso que você postou no primeiro post é na verdade quando você quer acessar um site em modo seguro, ou seja, o transporte de dados entre o servidor e a tua máquina será criptografada usando um certificado.

Já o que você quer é autenticar um usuário através de um certificado, e são coisas diferentes. Então você tem que pesquisar sobre “JAAS certificate authentication”.

Se você usa um appserver como Glassfish é super simples configurar isso. No tomcat eu não sei se nativamente há suporte a isso, já que ele é um servlet container apenas. Há o Spring Security, que possui suporte a autenticação via certificado.

[quote=garcia-jj]Isso que você postou no primeiro post é na verdade quando você quer acessar um site em modo seguro, ou seja, o transporte de dados entre o servidor e a tua máquina será criptografada usando um certificado.

Já o que você quer é autenticar um usuário através de um certificado, e são coisas diferentes. Então você tem que pesquisar sobre “JAAS certificate authentication”.

Se você usa um appserver como Glassfish é super simples configurar isso. No tomcat eu não sei se nativamente há suporte a isso, já que ele é um servlet container apenas. Há o Spring Security, que possui suporte a autenticação via certificado.

[/quote]

Garcia,
eu não quero fazer login dele na aplicação com o certificado, eu quero que ao acessar o endereço(URL) meusite.com.br o browser peça o certificado dizendo que é uma conexão segura (SSL), é a mesma coisa quando você tentar pegar um WSDL da receita, se você não tem um certificado instalado no browser, você não acessa a página, é isso vlw até então.

Certo. Então você pode fazer isso aqui no seu web.xml, que força o uso de HTTPS. Todas as requisições via HTTP são redirecionadas para o HTTPS.

<security-constraint> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>

[quote=garcia-jj]Certo. Então você pode fazer isso aqui no seu web.xml, que força o uso de HTTPS. Todas as requisições via HTTP são redirecionadas para o HTTPS.

<security-constraint> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>[/quote]

vlw Garcia, Obrigado man.