- Para adquirir um certificado SSL é necessário gerar uma requisição da assinatura do certificado (CSR - Certificate Signing Request) que é um arquivo criptografado que contém a chave pública, nome, localidade e URL (endereço Web) de sua organização. Na criação de um CSR deverá ser informado um arquivo inexistente em um caminho válido, este arquivo é o Keystore e o CSR é o inicio do Keystore. Para gerar o CSR utilize a ferramenta Keytool do SDK localizada em C:\Program Files\Java\jdk1.5.0_02\bin
Exemplo:
Comando
keytool -genkey -alias certificado -keyalg RSA -keystore C:\Certificado\Keystore\definaonome.kdb
Preenchimento dos dados
What is your first and last name? This is the Common Name Field - The Fully Qualified Domain Name MUST be entered here
[Unknown]: www.dominio.com.br
What is the name of your organizational unit?
[Global Sign]: Razão da Empresa
What is the name of your organization?
[Global Sign]: Razão da Empresa
What is the name of your City or Locality?
[London]: Cidade
What is the name of your State or Province?
[London]: Estado
What is the two-letter country code for this unit?
[GB]: País
Notas
-
Lembrando que o caminho para o Keystore C:\Certificado\Keystore é válido e o arquivo definaonome.kdb não existe e será gerado com o CSR após a execução do comando.
-
Fazer imediatamente um backup do arquivo C:\Certificado\Keystore\definaonome.kdb, pois o certificado será gerado para apenas essa chave plública e no caso de perda do arquivo ocassionando uma nova geração.
-
Na criação do Keystore é solicitado a criação de uma senha, a mesma será utilizada durante todo o processo de implatação do certificado, portando guarde a senha para uma futura consulta.
-
No comando é utilizado o parâmetro -alias certificado, quando receber o certificado da certificadora, o certificado deverá ser importado para o alias certificado.
- A requisição foi gerada dentro do keystore informado, agora é o hora de gerar o arquivo CSR com os dados da requisição que está no keystore. O arquivo será utilizado para efetuar o pedido do certificado juntamente com a certificadora. Algumas certificadoras possibilitam a inclução direta do arquivo na solicitação on-line do certificado e outras disponibilizam um campo para ser incluído o conteúdo do arquivo csr gerado, o conteúdo completo desde -----BEGIN NEW CERTIFICATE REQUEST----- até -----END NEW CERTIFICATE REQUEST-----
Exemplo:
Comando
keytool -certreq -keyalg RSA -alias certificado -file C:\Certificado\Keystore\definaonome.csr -keystore C:\Certificado\Keystore\nomedefinidonocomando1.kdb
Notas
-
No comando é utilizado o parâmetro -alias certificado, este alias obviamente tem que ser o mesmo alias utilizado no comando do passo 1.
-
O caminho para o .csr C:\Certificado\Keystore é válido e o arquivo definaonome.csr não existe e será gerado com após a execução do comando.
-
A senha solicitada na execução do comando a senha do keystore que foi cadastrada no comando do passo 1.
-
Efetuar o pedido online do certificado juntamente com a certificadora seguindo as instruções do próprio site.
-
Todo certificado SSL segue uma estrutura, uma sequência, que se resume em gerado para e gerado por. Exemplo, o certificado gerado para www.dominio.com.br foi gerado por Certificadora Intermediario e o certificado gerado para Certificadora Intermediario foi gerado por Certificadora Root, portanto para o funcionamento do seu certificado é necessário instalar (importar para o keystore) todos os certificados que fazem parte da estrutura, também conhecidos como raizes do certificado. Obviamente que cada certificadora segue uma estrutura diferente. Para você identificar a estrutura correta do seu certificado (.cer - formato texto) abra o seu certificado (dois cliques), na aba detalhes (mostrar tudo), localize o campo assunto (subject); neste campo estão as informações gerado para, localize o campo emissor (Issuer); neste campo estão as informações gerado por; sendo assim até chegar ao certificado root da certificadora. Enquanto você aguarda da certificadora a validação do seu CSR e a geração do seu certificado podemos ir instalando (importando) as raizes do certificado.
Exemplo:
Comandos
keytool -import -keystore C:\Certificado\Keystore\nomedefinidonocomando1.kdb -alias Root -trustcacerts -file C:\Certificado\Certificadora\root.cer
keytool -import -keystore C:\Certificado\Keystore\nomedefinidonocomando1.kdb -alias Primary -trustcacerts -file C:\Certificado\Certificadora\intermediario.cer
Notas
-
Sempre começar pelo root, e depois ir seguindo a sequência.
-
Os certificados raízes estão disponíveis no site das certificadoras.
-
Os certificados raízes deverão ser importados para o keystore gerado no comando do passo 1.
-
A senha solicitada na execução do comando a senha do keystore que foi cadastrada no comando do passo 1.
-
Cada certificado raiz é importado para um alias diferente.
- O seu certificado pode ser enviado de diversas formas pela certificadora, algumas enviam o arquivo .cer .pem .crt e outras encaminham no corpo do e-mail. Para os casos dos arquivos é só salvar o arquivo e instalar (importar), para os casos que o certificado está no corpo do e-mail basta copiar o conteúdo desde -----BEGIN CERTIFICATE----- até -----END CERTIFICATE----- e através do notepad salvar um arquivo com este conteúdo no formato .cer .crt .pem. Com o certificado em mãos é hora de instalar (importar) para o mesmo keystore gerado no comando do passo 1 e para o mesmo alias utilizado no comando do passo 1.
Exemplo:
Comando
keytool -import -trustcacerts -keystore C:\Certificado\Keystore\nomedefinidonocomando1.kdb -alias certificado -file C:\Certificado\Certificadora\meucertificado.cer
Notas
-
A senha solicitada na execução do comando a senha do keystore que foi cadastrada no comando do passo 1.
-
No comando é utilizado o parâmetro -alias certificado, o certificado deverá ser importado para o alias utilizado na criação do CSR no comando do passo 1.
- É interessante visualizar os certificados instalados (importados) no keystore, para conferir o sucesso da instalação.
Exemplo:
Comando
keytool -list -keystore C:\Certificado\Keystore\nomedefinidonocomando1.kdb -v > C:\Certificado\list.txt
Keystore type: jks
Keystore provider: SUN
Your keystore contains 3 entries
Alias name: client
Creation date: 12/07/2007
Entry type: keyEntry
Certificate chain length: 3
Alias name: root
Creation date: 12/07/2007
Entry type: trustedCertEntry
Alias name: primary
Creation date: 12/07/2007
Entry type: trustedCertEntry
Notas
-
O caminho de saída do comando é válido e o arquivo list.txt não existe e será gerado após a execução do comando.
-
A senha solicitada na execução do comando a senha do keystore que foi cadastrada no comando do passo 1.
- Após a devida instalação (importação) do certificado e suas raízes para o keystore é hora de configurar o keystore no Tomcat e habilitar o conector SSL.
Exemplo:
Configuração
Editar o arquivo C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf\server.xml
Excluir o trecho abaixo
<!-- 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=“8443” protocol=“HTTP/1.1” SSLEnabled=“true”
maxThreads=“150” scheme=“https” secure=“true”
clientAuth=“false” sslProtocol=“TLS” />
–>
Incluir o trecho abaixo
<!-- Define a blocking Java SSL Coyote HTTP/1.1 Connector on port 443 -->
<Connector protocol=“org.apache.coyote.http11.Http11Protocol”
port=“443” minSpareThreads=“5” maxSpareThreads=“75”
enableLookups=“true” disableUploadTimeout=“true”
acceptCount=“100” maxThreads=“200”
scheme=“https” secure=“true” SSLEnabled=“true”
keystoreFile=“C:\Certificado\Keystore\nomedefinidonocomando1.kdb” keystorePass=“senhadokeystore”
clientAuth=“false” sslProtocol=“TLS”/>
Alterar tudo que for 8443 para 443, ctrl + h
Salvar e iniciar o servico do tomcat
Notas
-
keystoreFile=“C:\Certificado\Keystore\nomedefinidonocomando1.kdb” é o caminho do keystore gerado no comando do passo 1.
-
keystorePass=“senhadokeystore” é a senha do keystore que foi cadastrada no comando do passo 1.
-
O Tomcat disponibiliza uma documentação em http://localhost/docs/ssl-howto.html ou http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html, fique atento as instruções pois há uma pegadinha ou um erro na documentação. Na documentação o exemplo é:
<-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->
<!–
<Connector
port=“8443” minSpareThreads=“5” maxSpareThreads=“75”
enableLookups=“true” disableUploadTimeout=“true”
acceptCount=“100” maxThreads=“200”
scheme=“https” secure=“true” SSLEnabled=“true”
SSLCertificateFile="/usr/local/ssl/server.crt"
SSLCertificateKeyFile="/usr/local/ssl/server.pem"
clientAuth=“false” sslProtocol=“TLS”/>
–>
Mas existem duas coisas que não estão claras
1ª
<-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->
A inclusão dessa linha no server.xml não irá funcionar, pois a mesma está comentada de maneira incorreta o certo é:
<!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->
2ª
<!–
<Connector
clientAuth="false" sslProtocol="TLS"/>
–>
A criação do conector está comentada, ou seja não irá funcionar.