marcelohonsa:
Pessoal, preciso implementar um requisito de certificacão digital utilizando o modelo A3.
Gostaria de algum auxilio, para me mostrar o caminho das pedras, sobre como implementar este requisito.. Que tipo de implementação tenho que fazer para obter o certificado instalado, como realizo a validação do mesmo no servidor, etc
Alguem pode me ajudar?
Obrigado !
Simples, o tipo A3 não fica instalado, ela fica no dispositivo móvel que vem (é o mais chato para se trabalhar na programação), geralmente você usa para assinar arquivos (como a Nota Fiscal Eletrônica).
Você precisa prover um meio de acesso ao certificado, existe várias formas de se fazer isso, informando a senha previamente gravada - geralmente esse certificado tem um programa que gerencia ele (eu usei um da Alladin que depois de 15 vezes a senha informada errada invalidava completamente o certificado).
No forum tem vários exemplos de como usar esse certificado A3, dê uma pesquisada.
Basicamente você tem que setar algumas propriedades para fazer o acesso ao token onde está o certificado, exemplo:
Security.addProvider(new sun.security.pkcs11.SunPKCS11(arquivoConfigCertificado));
KeyStore ks = KeyStore.getInstance(NFe.TIPO_KEYSTORE_A3); // PKCS11
ks.load(null, senhaCertificado.toCharArray());
// para resolver: HelloRequest followed by an unexpected handshake message
System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
System.setProperty("javax.net.ssl.keyStore", "NONE");
System.setProperty("javax.net.ssl.keyStoreType", NFe.TIPO_KEYSTORE_A3);
System.setProperty("javax.net.ssl.keyStorePassword", senhaCertificado);
// Tem que saber qual o provider do token (ex: eToken-NOME_PERSONALIZADO).
System.setProperty("javax.net.ssl.keyStoreProvider", provedorCertificado);
O
arquivoConfigCertificado é o caminho para um arquivo texto que contém, por exemplo, a seguinte configuração:
name = eToken-NOME_PERSONALIZADO
library = C:/WINDOWS/system32/eToken.dll
É mais ou menos isso.