Srs,
Boa tarde a todos!
Tenho uma aplicação web rodando com jboss.
Essa aplicação gera um arquivo .PDF através de dados do banco de dados.
Atualmente utilizo do iText para gerar o pdf e para assinar o PDF utilizando certificado tipo A1 (arquivo).
Preciso agora assinar esse documento PDF utilizando certificado A3 (cartao).
Para isso, fiz um applet que comunica com o leitor smartcard para ter acesso ao cartão com o certificado, o que funcionou corretamente.
O problema é que a chave privada, ao contrário do certificado, não pode ser extraída do cartão. E eu preciso de encaminhar essa chave privada para a aplicação web assinar o pdf que foi gerado.
Idéia que tive para contornar o problema (gambiarra): gerei o pdf no servidor, encaminhei para o pc do cliente via string em base64, decodifiquei o pdf, acessei o smartcard e utilizei o certificado e a chave privada para assinar o pdf (via applet), reencaminhei o pdf assinado via string em base64 para o servidor. Nossa que pulo o gato… mas funcionou. Só que pra isso criei outro problema: o cliente precisa ter o iText no classpath. Ou seja, não resolvi o problema.
Alguém já conseguiu resolver esse problema ou já desenvolveu uma aplicação java web que precise utilizar o cartao do cliente para assinar documentos do lado do servidor?
Lembrando que preciso assinar os documentos do lado do servidor, pois do lado do cliente eu consigo tranquilamente.