Upload
renata-malta
View
251
Download
1
Embed Size (px)
Citation preview
CONEXÃ O NFS-E – SISTEMÃ ISS-INTEL – UTILIZÃNDO JÃVÃ E SSL
Autor : Julio P. Leiser – House Company
Data : 17/08/2011 – 16:00
ETAPA 1 – IMPORTAR CERTIFICADO A1 DO CLIENTE COM EXTENSÃO
.PFX NO INTERNET EXPLORER
A partir menu iniciar do Windows, execute o Internet Explorer e em seguida clique no ícone no canto
superior direito com formato de engrenagem para acessar as opções de configuração do Internet
Explorer.
Após abrir o menu, selecione a opção Internet Options ou Opções da Internet conforme figura
abaixo:
Clique neste ícone
para acessar o menu
de opções do
Internet Explorer.
Clique aqui.
Em seguida seleciona a pasta Content ou Conteúdo conforme figura abaixo:
Após clicar no botão Certificates ou Certificados, será apresentada uma nova janela conforme a
figura abaixo:
Pressione este botão para ir até o painel de
configuração de certificados.
Pressione com o mouse no botão Import…
para importar o certificado A1 do cliente
com extensão .PFX
Após pressionar o botão Import... será apresentada uma janela conforme figura abaixo. Pressione
Next para continuar a importação do certificado.
Em seguida será apresentado o painel para seleção do certificado do cliente que será importado.
Pressione o botão Browse... para selecionar o certificado do cliente. Veja figura abaixo:
Clique aqui para selecionar o
certificado.
Clique aqui.
Após selecionar o certificado
desejado, pressione o botão
Open para confirmar a seleção.
Após selecionar o certificado
desejado, pressione o botão
Next para confirmar a seleção.
Pressione o botão Next para
ir para a próxima página.
Neste painel está uma das partes mais importantes para que o certificado funcione quando utilizado
na linguagem Java e também no momento da exportação do certificado final. Falaremos mais
adiante sobre este assunto.
Não se esqueça de marcar a opção Enable Strong private key protection(“Habilitar a proteção forte
de chave privada”) e a opção Mark this key as exportable(“Marcar esta chave como exportável”).
Isto lhe poupará muitas dores de cabeça e tempo em pesquisa em fóruns e também nos pedidos de
suporte.
Não esqueça
de ligar estas
opções.
Informe a senha do
Certificado do cliente
Clique aqui para
continuar.
Selecione a primeira opção antes de pressionar o botão next
Pressione o botão Finish para ir para a próxima página.
Selecione esta opção.
Clique aqui para
continuar.
Clique aqui para continuar.
Clique aqui para finalizar a
importação do certificado.
Se tudo deu certo e o certificado for
válido, o Internet Explorer deverá
apresentar uma tela similar a esta
indicando que o certificado foi
importado com sucesso.
Clique aqui para voltar para a
tela de certificados.
ETAPA 2 – EXPORTAR O CERTIFICADO A1 PARA O FORMATO QUE
SERÁ UTILIZADO NO JAVA. Selecione o certificado recém-importado conforme a figura abaixo, em seguida pressione o botão
Export...
Após pressionar o botão Export... será apresentada a tela de boas vindas. Veja figura abaixo.
Clique aqui para iniciar a
exportação do certificado.
Clique aqui para ir para a
próxima página.
CERTIFICADO DO CLIENTE
Texto sobreposto para proteger
a identidade do cliente, nesta
linha irá aparecer o nome do
cliente dono do certificado.
Este painel é uma das partes mais importante da exportação do certificado para funcionar em Java,
pois normalmente, por padrão, o IE não habilita a opção de exportação de chave primária conforme
figura abaixo.
Lembra das opções Enable Strong private key protection(“Habilitar a proteção forte de chave
privada”) e a opção Mark this key as exportable(“Marcar esta chave como exportável”) ? Sem estas
opções habilitadas a opção Yes, export the private key fica inacessível.
Em função da seleção anterior, o IE habilitará a opção que precisamos para gerar o certificado na
forma correta para utilização em Java.
Clique aqui para ir para a
próxima página.
Enfim, o que realmente interessa
para que o certificado funcione
utilizando o Java para conectar o
servidor SSL da ISS-Intel.
Clique aqui para
continuar.
Informe a senha do certificado para geração do novo PFX no padrão PKCS #12. Veja figura abaixo:
Informe o nome do arquivo para o novo certificado que será utilizado no Java. Veja figura abaixo.
Clique aqui para
continuar.
Informe a senha do certificado e a
confirmação de senha para geração
do novo certificado.
Informe o nome do
arquivo que será gerado
para o novo certificado.
Após informar o nome do arquivo pressione o botão Save. Veja figura abaixo:
Clique no botão Save
para confirmar o nome
do certificado.
Nome do certificado que será
utilizado no Java já com toda a
cadeia de certificados inclusa no
PFS.
Clique aqui para
continuar.
Pressione o botão Finish para finalizar o processo de exportação do certificado. Veja figura abaixo:
Conferir se está como
Yes.
Clique aqui para
continuar.
Clique aqui para
continuar.
Se tudo deu certo e o certificado for
válido, o Internet Explorer deverá
apresentar uma tela similar a esta
indicando que o certificado foi
importado com sucesso.
Clique aqui para
finalizar.
ETAPA 3 – EXPORTAR O CERTIFICADO DA ISS-INTEL PARA UM
ARQUIVO TIPO DER COM A EXTENSÃO .CER.
Para completar a cadeia de certificados necessário para conexão Java, você deverá exportar o
certificado da ISS-Inter para uma aquivo DER e posteriormente criar um KeyStore incluindo este
certificado como Trust. Veja figura abaixo:
Após pressionar o botão Export... será apresentada a tela de boas vindas. Veja figura abaixo.
Clique aqui para iniciar o processo de
exportação do certificado.
Selecione o certificado da ISS-Intel para
exportar no formato DER
Clique aqui par ir para a
próxima página.
Selecione a opção DER encoded binary X.509 (.CER). Veja figura abaixo:
Informe o nome do arquivo para geração do certificado da ISS-Intel no formato DER. Veja figura
abaixo:
Selecione esta opção.
Clique aqui para continuar
Informe o nome do arquivo para
geração do trust certificate da
ISSIntel no formato DER.
Clique aqui para continuar
Clique aqui para continuar
Clique aqui para finalizar a
exportação do certificado.
ETAPA 4 – CRIAR O KEY STORE JAVA
Para fazer o vínculo entre o certificado da ISS-Intel e o certificado do cliente, é necessário criar o
Keystore Java e incluir o certificado da ISS-Intel como trust e o certificado do cliente como private
key.
Para realizar esta tarefa utilize um aplicativo chamado KeyStore Explorer, você pode fazer o
download em http://www.lazgosoftware.com/kse/downloads.html.
Instale o aplicativo e em seguida execute o mesmo a partir o atalho que a instalação irá criar na área
de desktop. Veja figura abaixo:
Se tudo deu certo e o certificado for
válido, o Internet Explorer deverá
apresentar uma tela similar a esta
indicando que o certificado foi
importado com sucesso.
Clique aqui para
finalizar.
Execute o KeyStore
Explorer.
Após executar o KeyStore Explorer, será apresentada a seguinte tela conforme figura abaixo:
INCLUÍNDO O CERTIFICADO TRUST DA ISS-INTEL.
Após pressionar o botão ok será apresentada a seguinte tela conforme figura abaixo:
Clique nesta opção
para criar um novo
KeyStore.
Selecione esta
opção.
Clique no botão ok
para continuar.
Clique neste botão
para importar o trust
certificado ISS-Intel.
Selecione o certificado
Trust.
Pressione o botão
Import.
A mensagem acima indica que não foi possível estabelecer um caminho de confiança para o
certificado. As informações do certificado só serão exibidas após confirmação do usuário
pressionando o botão OK.
O painel acima mostra um resumo dos dados de identidade do certificado ISS-Intel. Pressione OK
para continuar.
Pressione o botão OK,
para aceitar o certificado.
Pressione o botão OK,
para aceitar o certificado.
Pressione o botão SIM, para
aceitar e confiar no
certificado.
Após a confirmação a tela do Keystore Explorer deverá ficar conforme a figura abaixo.
Após pressionar o botão gravar, será solicitada as senhas do certificado, utilize a mesma senha que
foi utilizada para geração do .PFX na etapa 2 deste tutorial para simplificar o uso. Veja figura abaixo:
Informe o apelido do
certificado ou confirme o
apelido sugerido.
Pressione o botão Ok para
confirmar.
Pressione o botão Ok para
confirmar.
Pressione o botão gravar
para gerar o Keystore java.
Informe a senha para
gerar o keystore.
Pressionar o botão OK para
confirmar a senha.
Informe o nome do arquivo onde
será armazenado o Keystore
Java.
Pressione o botão
Salvar para gravar o
keystore.
INCLUINDO O CERTIFICADO KEY PAIR TYPE DO CLIENTE
Após pressionar o botão Ok será apresentado a seguinte tela conforme figura abaixo:
Selecione a opção PKCS #12 para incluir o certificado do cliente gerado na etapa 2 deste tutorial.
Clique neste botão
para importar
certificado do cliente.
Selecione esta opção.
Pressione o botão OK
para continuar.
Informe a senha do certificado
que será importado.
Pressione o botão Browse para
selecionar o certificado.
Selecione o certificado gerado na
etapa 2 deste tutorial.
Clique aqui para confirmar
o certificado.
Após pressionar o botão OK deverá ser apresentado no Keystore Explorer as seguintes informações
conforme figura abaixo:
Pressione o botão Import para
importar o certificado do cliente
para o Keystore.
Informe o apelido do
certificado ou confirme o
apelido sugerido.
Pressione o botão Ok para
confirmar.
Informe a senha para
gerar o Key Pair.
Pressionar o botão OK para
confirmar a senha.
Pressione o botão OK para
continuar.
Apelido do cliente
Após verificar o Keystore acima pressione o botão gravar para salvar o Keystore gerado.
ETAPA 5 – TESTANDO O KEYSTORE E O CERTIFICADO PKCS #12 NO
WEB SERVICES DA ISSINTEL PARA VALIDAÇÃO DO CERTIFICADO. Abaixo segue classe Java para validar o certificado na ISS-Intel, o endereço de verificação varia de
prefeitura para prefeitura.
package com.hcinf.soap;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.security.Security;
public class ClienteHTTPSVerify {
public static void main(String[] args ){
// Habilita os logs do java para verificação de certificado via protoco HTTPs.
System.setProperty("com.sun.xml.ws.transport.http.client.HttpTransportPipe.dump",
"true");
System.setProperty("com.sun.xml.ws.transport.http.HttpAdapter.dump", "true");
System.setProperty("javax.net.debug", "ssl");
final String pathCertificado = "D:\\HCINF\\Certificados-A1\\CLIENTE_JAVA.pfx";
final String keyStore
= "D:\\HCINF\\Certificados-A1\\CLIENTE_ISSINTEL.keystore";
String senhaCertificadoPFX = "senha";
String senhaCertificadoKeyStore = "senha";
// Endereço do servidor webservices para verificação do certificado no município.
String endpoint
= "https://boaesperanca-mg.treino-issintel.com.br/webservices/abrasf/certify";
System.setProperty("java.protocol.handler.pkgs",
"com.sun.net.ssl.internal.www.protocol");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
// Indica o certificado tipo KeyStore - PKCS12 - arquivo .PFX do cliente.
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", pathCertificado);
System.setProperty("javax.net.ssl.keyStorePassword", senhaCertificadoPFX );
// Indica Trust KeyStore arquivo .keystore com o certificado ISSIntel e o
// certificado do cliente.
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", keyStore);
System.setProperty("javax.net.ssl.trustStorePassword", senhaCertificadoKeyStore );
try{
// Aceita a negociação com o servidor.
O Keystore deverá ficar no
seguinte formato.
identidade do cliente
System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");
URL url = new URL(endpoint);
// Conecta com o servidor
URLConnection conn = url.openConnection();
conn.setAllowUserInteraction(true);
conn.setDefaultAllowUserInteraction(true);
InputStream inputstream = conn.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputstream);
BufferedReader bufferedreader = new BufferedReader(inputStreamReader);
String string = null;
// Lê a resposta do servidor para checar se o certificado passou pelo teste.
while ( (string = bufferedreader.readLine() ) != null )
System.out.println("Received "+string);
}
catch(Throwable err){ err.printStackTrace();
}
}
}
Ao executar a classe Java acima o servidor da ISS-Intel deverá retornar o seguinte resultado
em SOAP, conforme exemplo abaixo.
%% Cached client session: [Session-1, SSL_RSA_WITH_RC4_128_MD5]
main, WRITE: TLSv1 Application Data, length = 219
main, READ: TLSv1 Application Data, length = 2886
Received <validated>true</validated><raw_cert>-----BEGIN CERTIFICATE-----
Received MIIGNTCCBR2gAwIBAgIIBNkl/vQokZ8wDQYJKoZIhvcNAQEFBQAwTDELMAkGA1UE
Received BhMCQlIxEzARBgNVBAoTCklDUC1CcmFzaWwxKDAmBgNVBAMTH1NFUkFTQSBDZXJ0
Received aWZpY2Fkb3JhIERpZ2l0YWwgdjEwHhcNMTAxMTMwMTcxMjQ2WhcNMTExMTMwMTcx
Received MjQ2WjCB8TELMAkGA1UEBhMCQlIxEzARBgNVBAoTCklDUC1CcmFzaWwxFDASBgNV
Received BAsTCyhFTSBCUkFOQ08pMRgwFgYDVQQLEw8wMDAwMDEwMDE1MTUwMzIxFDASBgNV
Received BAsTCyhFTSBCUkFOQ08pMRQwEgYDVQQLEwsoRU0gQlJBTkNPKTEUMBIGA1UECxML
Received KEVNIEJSQU5DTykxFDASBgNVBAsTCyhFTSBCUkFOQ08pMRQwEgYDVQQLEwsoRU0g
Received QlJBTkNPKTEvMC0GA1UEAxMmU0lTUE9OVE8gU0lTVEVNQVMgSU5URUxJR0VOVEVT
Received IExUREEtTUUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMD3w88temL0DkDe
Received Dh44pF31qd5q0bwI7HA+2SJCijR/VlcIuIrGipZw6xsFmP01eA9Q0yyFzEOWJhBn
Received RJXOKNsGcxQlVoWkB2djdY228KDzBUQgetURDelCe5TlObrZxHWtXUQqCVCH6WNd
Received X68YuAL/xdXE1jqYEO1JWFLPic7pAgMBAAGjggL3MIIC8zAOBgNVHQ8BAf8EBAMC
Received BeAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMB8GA1UdIwQYMBaAFLdg
Received qFv5sqauAO1069VKyZZoZvVcMIG6BgNVHREEgbIwga+BGkZJTkFOQ0VJUk9AU0lT
Received UE9OVE8uQ09NLkJSoD4GBWBMAQMEoDUTMzI4MDQxOTY0MDUzMjMwMTc4MTMwMDAw
Received MDAwMDAwMDAwMDBNIDQuNTE5LjcxMFNTUCBNR6AdBgVgTAEDAqAUExJKQUNLU09O
Received IFRVTElPIFJFSVOgGQYFYEwBAwOgEBMOMDA0NTU0NTgwMDAxMzWgFwYFYEwBAweg
Received DhMMMDAwMDAwMDAwMDAwMFcGA1UdIARQME4wTAYGYEwBAgEGMEIwQAYIKwYBBQUH
Received AgEWNGh0dHA6Ly93d3cuY2VydGlmaWNhZG9kaWdpdGFsLmNvbS5ici9yZXBvc2l0
Received b3Jpby9kcGMwgfAGA1UdHwSB6DCB5TBJoEegRYZDaHR0cDovL3d3dy5jZXJ0aWZp
Received Y2Fkb2RpZ2l0YWwuY29tLmJyL3JlcG9zaXRvcmlvL2xjci9zZXJhc2FjZHYxLmNy
Received bDBDoEGgP4Y9aHR0cDovL2xjci5jZXJ0aWZpY2Fkb3MuY29tLmJyL3JlcG9zaXRv
Received cmlvL2xjci9zZXJhc2FjZHYxLmNybDBToFGgT4ZNaHR0cDovL3JlcG9zaXRvcmlv
Received LmljcGJyYXNpbC5nb3YuYnIvbGNyL1NlcmFzYS9yZXBvc2l0b3Jpby9sY3Ivc2Vy
Received YXNhY2R2MS5jcmwwgZcGCCsGAQUFBwEBBIGKMIGHMEcGCCsGAQUFBzAChjtodHRw
Received Oi8vd3d3LmNlcnRpZmljYWRvZGlnaXRhbC5jb20uYnIvY2FkZWlhcy9zZXJhc2Fj
Received ZHYxLnA3YjA8BggrBgEFBQcwAYYwaHR0cDovL29jc3AuY2VydGlmaWNhZG9kaWdp
Received dGFsLmNvbS5ici9zZXJhc2FjZHYxMA0GCSqGSIb3DQEBBQUAA4IBAQBNof4mJgs4
Received GyrXeehRrVzXTi6FhPyFtnuna5grYYG7SZIQKcQGlXvqNvOdOG2uJ+I2/vapY7jq
Received r4eDi5S7j8FGLmkPvMOAlEuK3+5Df+jxAGylI/8K39gKtcq709Xv1HQt8997pCvO
Received II1at3C3SciyyjcUvP8x/xo/ux4bV372aYdvxyY7iYVxTA8HnIF6GQTqLzZvoQwW
Received xc+d1LP2TJj10R74yM4zSJG9sqBVKDTIKq8j1YkLZRwHYQAzTcpj+WGAMAghJDaY
Received s9iWIlKF/nQbYnX9vCxYt7Vq88AIknS1nFI9LdLlezyJUd64po8POpHDC+wxnxl6
Received o57Gl3ws5Gzg
Received -----END CERTIFICATE-----
Received </raw_cert>