SSL + https + certificado = Duvidas

3 respostas
M

Estou tentando fazer com que minha aplicação rode totalmente em https, pra isso pesquisei bastante e o material que mais me ajudou foi esse:

http://www.guj.com.br/java/29710-tomcat–https

mas estou com algumas duvidas.

1: eu consegui configurar o tomcat para acesso via https, quando entro no endereco https://localhost:8443 ele abre o gerenciador do tomcat normalmente em https, mas como faço para a minha aplicação funcionar em https? considerando que estou usando o somente o netbeans para desenvolvimento, sem uso de nenhum framework (não sei se faz diferença rsrs). Gostaria de fazer minha aplicação rodar totalmente em https, ou seja, não permitir o acesso comum.

2: existe algum modo de redirecionar para o https, onde ao digitar o endereço http ele automaticamente mude para https?

3: o certificado usado para a a segurança SSL é gerado com o keytool do java e configurado no tomcat, mas e seu adquirir um certificado real, da certsign por exemplo, eu posso usá-lo no lugar do certificado do java? se sim como se faz isso? e a respeito da validade do certificado, quando ele expira a troca do certificado é feita manualmente ou existe alguma outra forma de fazer?

4: não sei se estou falando besteira, mas levando em conta o principio da certificação digital onde uma AC master possuis varias outras ACs, é possivel criar sub-certificados a partir do meu certificado inicial?

bom é isso rsrs, desculpem as muitas perguntas mas achei que se separasse em varios tópicos seria pior
minhas reais necessidades são mais na 1 e 2, se alguem puder me responder ajudaria muito

muito obrigado galera

3 Respostas

E
  1. Você vai pagar uma nota preta por esse certificado, portanto a própria Certisign/Verisign lhe dá a orientação de como proceder. (Normalmente, em produção, o pessoal não costuma usar o próprio Tomcat que não aguenta o tranco, mas usa alguma outra coisa na frente do Tomcat, como o Apache ou o nginx. E é nesses servidores onde o certificado tem de ser solicitado e instalado. )
    O processo de atualização do certificado é sempre manual (dependendo do web server que você for usar, talvez seja possível fazer um script, mas normalmente é manual.)
  2. Você, ao comprar um certificado de web server, não pode usá-lo para gerar outros “subcertificados”, já que o campo “Key Usage” não menciona “CA”.
    O que você poderia fazer é comprar um certificado com “wildcard”, tal como o presente em alguns web sites (por exemplo, “*.exemplo.com” serve para todos os subsites de “exemplo.com”. Entretanto,
    a) São poucas as autoridades certificadoras que vendem tais certificados, e
    b) Os browsers estão progressivamente deixando de suportar tais certificados genéricos.
M

cara, muito obrigado pelas respostas, esclareceram boas dúvidas que eu já tinha a um tempo, só pra ficar claro a respeito dos subcertificados, eles não seriam para prover acesso a outras páginas da aplicação, e sim para uso de criptografia, onde o idéia seria criar um certificado (a partir do master) para cada usuário, podendo ele guardar seus dados criptografados no sistema com seu certificado, mas para o que estou fazendo essa não seria a melhor solução, então vou mudar a linha de pensamento rsrs

só pra confirmar, esse Apache que vc citou é o APACHE HTTP né? ele não vem junto com o TomCat quando baixamos “somente” o tomcat, ou quando é instalado com o netbeans certo?

vlwww

fico no aguardo das outras dúvidas

M

não tem mais ninguem? oh e agora quem poderá me ajudar? rsrs

bom, pesquisando um pouco mais vi que (como o etanglement falou) o certificado é configurado somente no seu servidor e não na aplicação, então uma aplicação comum que vc faz (criando um novo projeto no netbeans por exemplo) se vc colocar pra rodar no tomcat (colocar na pasta webapps) ele acessa via http://localhost:8080/Aplicacao e também acessa seguramente por meio do https://localhost:8443/Aplicacao funcionando normal para os dois modos

porém eu quero que a aplicação funciona “somente” em https, forçando ela a funcionar em https, pra isso de acordo com o primeiro link que coloquei, teria que alterar o web.xml, ficando assim

<security-constraint>
    <web-resource-collection>
        <web-resource-name>SENHA</web-resource-name>
            <description>Acesso  via HTTPS</description>
            <url-pattern>/login/*</url-pattern>
            <http-method>POST</http-method>
            <http-method>GET</http-method>
        </web-resource-collection>
    <user-data-constraint>
        <description>Usar SSL</description>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

mas desse modo ele só força a pagina de login a usar https, então alterei para:

<security-constraint>
      <web-resource-collection>
         <web-resource-name>AllPages</web-resource-name>
           <url-pattern>/*</url-pattern>
           <http-method>POST</http-method>
           <http-method>GET</http-method>
      </web-resource-collection>
      <user-data-constraint>
        <description>Usar SSL</description>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
      </user-data-constraint>
    <security-constraint>

massss, mesmo assim se coloco a aplicação pra rodar no tomcat, ele acesso tanto com o https como com o http, onde que eu queria que funcionasse somente com https.
As duas formas de consguir isso são:

  1. forçando o acesso via https, que deveria ser pelo codigo acima que não está surgindo efeito
  2. redirecionando para https sempre que acessar por http, como já perguntei

estou fazendo algo errado? alguem sabe como resolver isso?

Dúvida adiconal: muitas pessoas colocam o acesso seguro somente no login, e não no resto das páginas, pq fazem isso, tem algum problema de sobrecarregar o servidor, deixar mais lento ou ocorrer falhas se a aplicação trabahar inteira em https?

vlw

Criado 9 de agosto de 2011
Ultima resposta 10 de ago. de 2011
Respostas 3
Participantes 2