Você está na página 1de 21

CONEXO NFS-E SISTEM ISS-INTEL UTILIZNDO JV E SSL

Autor : Julio P. Leiser House Company Data : 17/08/2011 16:00

ETAPA 1 IMPORTAR CERTIFICADO A1 DO CLIENTE COM EXTENSO .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 opes de configurao do Internet Explorer.

Clique neste cone para acessar o menu de opes do Internet Explorer.

Aps abrir o menu, selecione a opo Internet Options ou Opes da Internet conforme figura abaixo:

Clique aqui.

Em seguida seleciona a pasta Content ou Contedo conforme figura abaixo:

Pressione este boto para ir at o painel de configurao de certificados.

Aps clicar no boto Certificates ou Certificados, ser apresentada uma nova janela conforme a figura abaixo:

Pressione com o mouse no boto Import para importar o certificado A1 do cliente com extenso .PFX

Aps pressionar o boto Import... ser apresentada uma janela conforme figura abaixo. Pressione Next para continuar a importao do certificado.

Aps selecionar o certificado desejado, pressione o boto Next para confirmar a seleo.

Em seguida ser apresentado o painel para seleo do certificado do cliente que ser importado. Pressione o boto Browse... para selecionar o certificado do cliente. Veja figura abaixo:
Clique aqui para selecionar o certificado.

Clique aqui.

Aps selecionar o certificado desejado, pressione o boto Open para confirmar a seleo.

Pressione o boto Next para ir para a prxima pgina.

Neste painel est uma das partes mais importantes para que o certificado funcione quando utilizado na linguagem Java e tambm no momento da exportao do certificado final. Falaremos mais adiante sobre este assunto. No se esquea de marcar a opo Enable Strong private key protection(Habilitar a proteo forte de chave privada) e a opo Mark this key as exportable(Marcar esta chave como exportvel). Isto lhe poupar muitas dores de cabea e tempo em pesquisa em fruns e tambm nos pedidos de suporte.

Informe a senha do Certificado do cliente

No esquea de ligar estas opes.

Clique aqui para continuar.

Selecione a primeira opo antes de pressionar o boto next

Selecione esta opo.

Clique aqui para continuar.

Pressione o boto Finish para ir para a prxima pgina.

Clique aqui para continuar.

Clique aqui para finalizar a importao do certificado.

Se tudo deu certo e o certificado for vlido, 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 recm-importado conforme a figura abaixo, em seguida pressione o boto Export...
Texto sobreposto para proteger a identidade do cliente, nesta linha ir aparecer o nome do cliente dono do certificado.

CERTIFICADO DO CLIENTE

Clique aqui para iniciar a exportao do certificado.

Aps pressionar o boto Export... ser apresentada a tela de boas vindas. Veja figura abaixo.

Clique aqui para ir para a prxima pgina.

Este painel uma das partes mais importante da exportao do certificado para funcionar em Java, pois normalmente, por padro, o IE no habilita a opo de exportao de chave primria conforme figura abaixo. Lembra das opes Enable Strong private key protection(Habilitar a proteo forte de chave privada) e a opo Mark this key as exportable(Marcar esta chave como exportvel) ? Sem estas opes habilitadas a opo Yes, export the private key fica inacessvel.

Clique aqui para ir para a prxima pgina.

Em funo da seleo anterior, o IE habilitar a opo que precisamos para gerar o certificado na forma correta para utilizao em Java.

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 gerao do novo PFX no padro PKCS #12. Veja figura abaixo:

Informe a senha do certificado e a confirmao de senha para gerao do novo certificado.

Clique aqui para continuar.

Informe o nome do arquivo para o novo certificado que ser utilizado no Java. Veja figura abaixo.

Informe o nome do arquivo que ser gerado para o novo certificado.

Aps informar o nome do arquivo pressione o boto Save. Veja figura abaixo:

Nome do certificado que ser utilizado no Java j com toda a cadeia de certificados inclusa no PFS.

Clique no boto Save para confirmar o nome do certificado.

Clique aqui para continuar.

Pressione o boto Finish para finalizar o processo de exportao do certificado. Veja figura abaixo:

Conferir se est como Yes.

Clique aqui para continuar.

Se tudo deu certo e o certificado for vlido, o Internet Explorer dever apresentar uma tela similar a esta indicando que o certificado foi importado com sucesso.

Clique aqui para continuar.

Clique aqui para finalizar.

ETAPA 3 EXPORTAR O CERTIFICADO DA ISS-INTEL PARA UM ARQUIVO TIPO DER COM A EXTENSO .CER.
Para completar a cadeia de certificados necessrio para conexo 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:

Selecione o certificado da ISS-Intel para exportar no formato DER

Clique aqui para iniciar o processo de exportao do certificado.

Aps pressionar o boto Export... ser apresentada a tela de boas vindas. Veja figura abaixo.

Clique aqui par ir para a prxima pgina.

Selecione a opo DER encoded binary X.509 (.CER). Veja figura abaixo:

Selecione esta opo.

Clique aqui para continuar

Informe o nome do arquivo para gerao do certificado da ISS-Intel no formato DER. Veja figura abaixo:

Informe o nome do arquivo para gerao do trust certificate da ISSIntel no formato DER.

Clique aqui para continuar

Clique aqui para continuar

Clique aqui para finalizar a exportao do certificado.

Se tudo deu certo e o certificado for vlido, o Internet Explorer dever apresentar uma tela similar a esta indicando que o certificado foi importado com sucesso.

Clique aqui para finalizar.

ETAPA 4 CRIAR O KEY STORE JAVA


Para fazer o vnculo entre o certificado da ISS-Intel e o certificado do cliente, necessrio 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 instalao ir criar na rea de desktop. Veja figura abaixo:

Execute o KeyStore Explorer.

Aps executar o KeyStore Explorer, ser apresentada a seguinte tela conforme figura abaixo:

Clique nesta opo para criar um novo KeyStore.

Selecione esta opo.

Clique no boto ok para continuar.

INCLUNDO O CERTIFICADO TRUST DA ISS-INTEL.


Aps pressionar o boto ok ser apresentada a seguinte tela conforme figura abaixo:

Clique neste boto para importar o trust certificado ISS-Intel.

Selecione o certificado Trust.

Pressione o boto Import.

Pressione o boto OK, para aceitar o certificado.

A mensagem acima indica que no foi possvel estabelecer um caminho de confiana para o certificado. As informaes do certificado s sero exibidas aps confirmao do usurio pressionando o boto OK.

Pressione o boto OK, para aceitar o certificado.

O painel acima mostra um resumo dos dados de identidade do certificado ISS-Intel. Pressione OK para continuar.
Pressione o boto SIM, para aceitar e confiar no certificado.

Informe o apelido do certificado ou confirme o apelido sugerido.

Pressione o boto Ok para confirmar.

Aps a confirmao a tela do Keystore Explorer dever ficar conforme a figura abaixo.
Pressione o boto gravar para gerar o Keystore java. Pressione o boto Ok para confirmar.

Aps pressionar o boto gravar, ser solicitada as senhas do certificado, utilize a mesma senha que foi utilizada para gerao do .PFX na etapa 2 deste tutorial para simplificar o uso. Veja figura abaixo:

Informe a senha para gerar o keystore.

Pressionar o boto OK para confirmar a senha.

Informe o nome do arquivo onde ser armazenado o Keystore Java.

Pressione o boto Salvar para gravar o keystore.

INCLUINDO O CERTIFICADO KEY PAIR TYPE DO CLIENTE


Aps pressionar o boto Ok ser apresentado a seguinte tela conforme figura abaixo:

Clique neste boto para importar certificado do cliente.

Selecione a opo PKCS #12 para incluir o certificado do cliente gerado na etapa 2 deste tutorial.

Selecione esta opo. Pressione o boto OK para continuar.

Pressione o boto Browse para selecionar o certificado.

Informe a senha do certificado que ser importado.

Selecione o certificado gerado na etapa 2 deste tutorial.

Clique aqui para confirmar o certificado.

Pressione o boto Import para importar o certificado do cliente para o Keystore.

Informe o apelido do certificado ou confirme o apelido sugerido.

Apelido do cliente

Pressione o boto Ok para confirmar.

Informe a senha para gerar o Key Pair.

Pressionar o boto OK para confirmar a senha.

Pressione o boto OK para continuar.

Aps pressionar o boto OK dever ser apresentado no Keystore Explorer as seguintes informaes conforme figura abaixo:

identidade do cliente

O Keystore dever ficar no seguinte formato.

Aps verificar o Keystore acima pressione o boto gravar para salvar o Keystore gerado.

ETAPA 5 TESTANDO O KEYSTORE E O CERTIFICADO PKCS #12 NO WEB SERVICES DA ISSINTEL PARA VALIDAO DO CERTIFICADO.
Abaixo segue classe Java para validar o certificado na ISS-Intel, o endereo de verificao varia de prefeitura para prefeitura.
package com.hcinf.soap; import import import import import import java.io.BufferedReader; java.io.InputStream; java.io.InputStreamReader; java.net.URL; java.net.URLConnection; java.security.Security;

public class ClienteHTTPSVerify { public static void main(String[] args ){ // Habilita os logs do java para verificao 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 String senhaCertificadoKeyStore = "senha"; = "senha";

// Endereo do servidor webservices para verificao do certificado no municpio. 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 negociao com o servidor.

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>