Certificado Digital A3


#1

Bom dia a todos do Fórum.

Estou implementando o AdempiereLBR e me deparei até agora com um único problema , o certificado A3 ( com leitora ).
Como não é possível exportar a chave , não consigo configurar a NFe.

Já existe alguma implementação para o Certificado Digital A3 ?

Caso não exista estou disposto a desenvolver esta funcionalidade.

Marcelo Felipe Dompieri
ATMicro Informática


#2

Também estou com a mesma dúvida, tenho o certificado dentro do cartão como gerar esse arquivos .PFX ou o .JKS?


#3

Edilson,

O Certificado A3 não permite ser exportado , a assinatura é feita direto no smartcard.

Marcelo Felipe


#4

Desculpe, mas tem como gerar sim, a resposta esta disponivel a partir da página 11 do manual do Ricardo sobre NF-e!


#5

Edilson,

Realmente vc. tem razão , porém só é possivel exportar o certificado digital , sem a private key. Segundo o ICP-Brasil isso garante a segurança da Certificação ( Válido para Tokens e Smartcard ).

Se não estou enganado para assinar a NFe precisamos tb da Private Key.

Marcelo


#6

Olá Senhores,

Estou testando aqui para assinar os documentos via A3. O problema é que isto não está na prioridade mais alta agora e eu estou sem tempo :frowning:

Se algum desenvolvedor quiser testar, o caminho é o seguinte:

Release RC-110

Cadastrar na lista de certificados o PCKS11 com Value = P11
No cadastro do certificado digital, no Alias = Nome certificado, geralmente: Smartcard e no anexo vai a DLL do driver.

Eu não fiz o teste ainda porque estou usando MacOS e o caminho é um pouco mais longo.

Caso não dê certo meus próximos passos seriam incluir na classe AssinaturaDigital:112 o seguinte:

enabledMechanisms = { CKM_RSA_PKCS CKM_RSA_PKCS_KEY_PAIR_GEN CKM_MD5 CKM_SHA1_RSA_PKCS CKM_RSA_X_509 }

Depois subir o adempiere com a opção:

-Djava.security.debug=sunpkcs11,pkcs11

Isto foi o que eu coletei na internet para fazer meus testes. Se alguém quiser colaborar ficarei agradecido.

Att.


#7

Bom pessoal, o certificado A3 pra assinar a nota funciona tranquilamente, dps caso alguem realmente tenha interesse em continuar podemos sentar e desenvolver. Entretanto, em experiencias passadas, o grande problema consiste em estar usando o certificado para autenticar a conexao.
O JDK6 ( da ultima versao q utilizei, acho q release 14) tinha um bug que ele nao conseguia autenticar conexao SSL usando certificado do tipo A3 (esta até na lista de bugs para correcao). O que o pessoal de SP fez foi desenvolver um provider (que nao eh opensource) para conseguir autenticar a conexao. Visto que o certificado A3 vc nao exporta a privatekey.

Se alguem quiser testar com alguma nova versao do java. Abaixo segue o codigo que utilizei na época pra testar conexao com a sefaz, basta substituir as informacoes do server e da porta.

[code]import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.Socket;

import javax.net.ssl.SSLSocketFactory;

public class SunMSCAPITest {

// Website to access
public static final String TARGET_HTTPS_SERVER = "localhost";
public static final int TARGET_HTTPS_PORT = 8443;

public static void main(String[] args) throws Exception {
	
	System.setProperty("javax.net.ssl.keyStoreProvider","SunMSCAPI");
	System.setProperty("javax.net.ssl.keyStoreType","Windows-MY");
	System.setProperty("javax.net.ssl.trustStoreProvider","SunMSCAPI");
	System.setProperty("javax.net.ssl.trustStoreType","Windows-ROOT");

	Socket socket = SSLSocketFactory.getDefault().createSocket(TARGET_HTTPS_SERVER,
			TARGET_HTTPS_PORT);
	
	try {
		Writer out = new OutputStreamWriter(socket.getOutputStream(),
				"UTF-8");
		out.write("Host: " + TARGET_HTTPS_SERVER + ":" + TARGET_HTTPS_PORT
				+ "\r\n");

		out.flush();
		BufferedReader in = new BufferedReader(new InputStreamReader(socket
				.getInputStream(), "UTF-8"));
		String line = null;
		while ((line = in.readLine()) != null) {
			System.out.println(line);
		}
	} finally {
		socket.close();
	}
}

}[/code]

Att.
Fernando


#8

Ok Fernando,

Tenho interesse em implementá-lo. Vou voltar a mexer com isso em breve.

Marcelo


#9

E ai pessoal, como está o desenvolvimento para o certificado A3?
Quem está cuidando disso, posso ajudar a desenvolver…


#10

Olá Marcelo,

Eu comecei, mas acabei deixando o desenvolvimento parado por enquanto. Eu vou atualizar meu branch no LBR este final de semana com o código funcionando para o trunk do LBR, então se você quiser ajudar seria ótimo.

Att.


#11

Desculpa não ter respondido antes, você já viu algo fim de semana que passou?
Se não podemos ver agora, durante a semana, posso lhe ajudar programando, fiz alguns testes aqui fora do adempiere, só para ver como funcionava, acho que não vai ser difícil…


#12

Olá, o código está no branch:

adempierelbr.svn.sourceforge.ne … alexsander

Att.


#13

Bom dia, Ricardo!!

O trunk do adempierelbr já possui suporte para certificado A3?? Caso a resposta seja negativa, existe previsão para isso??

Atte.
Michel Silvestre.