21
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.

Tutorial Conexao NFSe Java SSL

Embed Size (px)

Citation preview

Page 1: Tutorial Conexao NFSe Java SSL

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.

Page 2: Tutorial Conexao NFSe Java SSL

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

Page 3: Tutorial Conexao NFSe Java SSL

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.

Page 4: Tutorial Conexao NFSe Java SSL

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.

Page 5: Tutorial Conexao NFSe Java SSL

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.

Page 6: Tutorial Conexao NFSe Java SSL

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.

Page 7: Tutorial Conexao NFSe Java SSL

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.

Page 8: Tutorial Conexao NFSe Java SSL

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.

Page 9: Tutorial Conexao NFSe Java SSL

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.

Page 10: Tutorial Conexao NFSe Java SSL

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.

Page 11: Tutorial Conexao NFSe Java SSL

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.

Page 12: Tutorial Conexao NFSe Java SSL

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

Page 13: Tutorial Conexao NFSe Java SSL

Clique aqui para continuar

Clique aqui para finalizar a

exportação do certificado.

Page 14: Tutorial Conexao NFSe Java SSL

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.

Page 15: Tutorial Conexao NFSe Java SSL

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.

Page 16: Tutorial Conexao NFSe Java SSL

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.

Page 17: Tutorial Conexao NFSe Java SSL

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.

Page 18: Tutorial Conexao NFSe Java SSL

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.

Page 19: Tutorial Conexao NFSe Java SSL

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

Page 20: Tutorial Conexao NFSe Java SSL

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

Page 21: Tutorial Conexao NFSe Java SSL

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>