Certificação Digital
De Wiki.Softwell
Certificado Digital é um documento eletrônico que contém informações da identidade de uma pessoa ou de uma instituição. Existem duas maneiras para se obter um Certificado Digital. Solicitando a uma Autoridade Certificadora (Certificate Authority ou CA) ou gerando por conta própria através de ferramentas adequadas como, por exemplo, a ferramenta gratuita OpenSSL.
A ferramenta OpenSSL pode ser baixada no site http://www.openssl.org juntamente com sua documentação. É com ela que iremos demonstrar como gerar seu próprio Certificado Digital.
Tabela de conteúdo |
Criando sua própria Autoridade Certificadora
Antes de iniciar o processo de criação das chaves crie uma pasta para armazenar as mesmas, como por exemplo "C:\Certificado".
Gerando a Chave Privada e o Certificado para sua própria CA
Abra o prompt de comando do Windows e execute o seguinte comando:
C:\OpenSSL\bin>openssl req -new -newkey rsa:1024 -nodes -out C:\Certificado\CA.csr -keyout C:\Certificado\CA.key
Após este procedimento, você deverá informar os dados solicitados na tela.
Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
.......++++++
.............++++++
writing new private key to 'C:\Certificado\CA.key'
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
Country Name (2 letter code) [AU]:BR
State or Province Name (full name) [Some-State]:Bahia
Locality Name (eg, city) []:Salvador
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Softwell Solutions
Organizational Unit Name (eg, section) []:Softwell Solutions
Common Name (eg, YOUR name) []:localhost
Email Address []:admin@softwell.com.br
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:123456
An optional company name []:Softwell Solutions
Os três últimos campos não são obrigatórios, entretanto é importante definir o campo Common Name como sendo o endereço correto do servidor.
Gerando o arquivo com as informações da Chave Privada e do Certificado
As informações da chave privada e do certificado serão armazendas em um arquivo de extenção ".pem".
Para gerar o arquivo execute o seguinte comando:
C:\OpenSSL\bin>openssl x509 -trustout -signkey "C:\Certificado\CA.key" -days 1825 -req -in "C:\Certificado\CA.csr" -out "C:\Certificado\CA.pem"
Após este procedimento aparecerá na tela as informações que foram cadastradas na chave privada.
Loading 'screen' into random state - done
Signature ok
subject=/C=BR/ST=Bahia/L=Salvador/O=Softwell Solutions/OU=Softwell Solutions/CN=localhost/emailAddress=admin@softwell.com.br
Getting Private key
Gerando os Certificados
Para a criação do certificado do servidor é utilizada a ferramenta keytool que vem instalada na versão do J2SE. A keytool armazena as chaves e os certificados em um local chamado keystore. O keystore é normalmente implementado na forma de arquivos, protegendo as chaves privadas com passwords.
A keytool fica na pasta bin do diretório do j2sdk.
Certificado do Servidor
Para a criação do certificado do servidor é utilizado o comando abaixo:
C:\Arquivos de programas\Java\jdk1.5.0_12\bin>keytool -genkey -alias softwell -keyalg RSA -keystore "C:\Certificado\softwell.keystore"
Após este procedimento, você deverá informar os dados solicitados na tela.
Enter keystore password: 123456
What is your first and last name?
[Unknown]: admin
What is the name of your organizational unit?
[Unknown]: Softwell Solutions
What is the name of your organization?
[Unknown]: Softwell Solutions
What is the name of your City or Locality?
[Unknown]: Salvador
What is the name of your State or Province?
[Unknown]: Bahia
What is the two-letter country code for this unit?
[Unknown]: BR
Is CN=admin, OU=Softwell Solutions, O= Softwell Solutions, L=Salvador, ST=Bahia, C=BR correct?
[no]:yes
Enter key password for <tomcat>
(RETURN if same as keystore password): 123456
O comando acima gera um certificado referenciado pelo alias "softwell" e que será armazenado em um arquivo chamado "softwell.keystore".
O certificado foi gerado utilizando o algoritmo RSA e foi solicitada uma senha para o armazenamento da chave no keystore.
O algoritmo RSA é utilizado preferencialmente, por ser considerado um algoritmo seguro e por ser compatível com a maioria dos servidores de componentes.
Gerado o arquivo keystore o próximo passo a realizar é editar o arquivo de configuração do servidor Tomcat.
Abra o arquivo de configuração do servidor "server.xml" que se encontra na pasta conf do diretório onde o Tomcat está instalado.
Inclua o código da Listagem 2.1 no arquivo. Defina uma porta para o conector SSL, por padrão é utilizada a 8443, e informe o caminho onde o arquivo keystore se encontra.
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" keystoreFile="C:\Certificado\softwell.keystore" keystorePass="123456" truststoreFile="C:\Certificado\softwell.keystore" truststorePass="123456" clientAuth="true" sslProtocol="TLS" />
Certificado do Cliente
Para a criação do certificado do cliente execute o comando abaixo:
C:\OpenSSL\bin>openssl req -new -newkey rsa:1024 -nodes -out C:\Certificado\CLIENTE.req -keyout C:\Certificado\CLIENTE.key
Após este procedimento, você deverá informar os dados solicitados na tela.
Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
...............++++++
.....................................++++++
writing new private key to 'C:\Certificado\CLIENTE.key'
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
Country Name (2 letter code) [AU]:BR
State or Province Name (full name) [Some-State]:Bahia
Locality Name (eg, city) []:Salvador
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:JOAO DA SILVA
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:123456
An optional company name []:
Assinando os Certificados
Importando a chave privada para o Certificado do Servidor
Execute o comando abaixo para importar as informações da chave privada para o arquivo keystore do servidor.
C:\Arquivos de programas\Java\jdk1.5.0_12\bin>keytool -import -keystore C:\Certificado\softwell.keystore -file C:\Certificado\CA.pem -alias myautoCA
Após este procedimento, você deverá informar a senha e confirmar os dados apresentados.
Enter keystore password:123456
Owner: EMAILADDRESS=admin@softwell.com.br, CN=localhost, OU=Softwell Solutions, O=Softwell Solutions, L=Salvador, ST=Bahia, C=BR
Issuer: EMAILADDRESS=admin@softwell.com.br, CN=localhost, OU=Softwell Solutions, O=Softwell Solutions, L=Salvador, ST=Bahia, C=BR
Serial number: e4d11b87e3619e81
Valid from: Wed Aug 13 14:12:31 BRT 2008 until: Mon Aug 12 14:12:31 BRT 2013
Certificate fingerprints:
MD5: F1:35:6F:42:1E:48:CA:0C:7D:C5:78:77:76:74:52:8C
SHA1: 2B:9D:D4:E4:C9:92:79:54:62:33:BA:4D:B4:52:15:4B:C2:E5:DB:26
Trust this certificate? [no]: yes
Certificate was added to keystore
Assinando o Certificado do Cliente
Próximo passo é assinar o certificado do cliente através da CA (Autoridade Certificadora) criada. Para tal procedimento execute o seguinte comando:
C:\OpenSSL\bin> openssl x509 -req -in C:\Certificado\CLIENTE.req -CA C:\Certificado\CA.pem -CAkey C:\Certificado\CA.key -CAcreateserial -out C:\Certificado\CLIENTE.pem
Após este procedimento, você deverá informar os dados solicitados na tela.
Loading 'screen' into random state - done
Signature ok
subject=/C=BR/ST=Bahia/L=Salvador/O=Internet Widgits Pty Ltd/CN=JOAO DA SILVA
Getting CA Private Key
Gerando o arquivo ".p12"
O arquivo "CLIENTE.p12" contém o as informações do certificado digital gerado e da chave privada do servidor.
Para gerar o arquivo execute o seguinte comando:
C:\OpenSSL\bin>openssl pkcs12 -export -in "C:\Certificado\CLIENTE.pem" -inkey "C:\Certificado\CLIENTE.key" -out "C:\Certificado\CLIENTE.p12"
O certificado está pronto e já pode ser utilizado.
