Files
cybercore-signer/docs/a1-a3-certificates.md
T

2.5 KiB

Certificados Digitais A1, A3 e PKCS#11

O CyberCore Signer oferece suporte abrangente aos formatos e repositórios de certificados digitais padrão ICP-Brasil utilizados no Brasil.


1. Certificados Digitais A1 (Software / PKCS#12)

Os certificados A1 são arquivos com extensão .pfx ou .p12 protegidos por senha.

Fluxo de Uso

  1. O usuário seleciona o arquivo via diálogo nativo (FileChooser) na interface ou importa via tela de Dashboard.
  2. É solicitada a senha em um diálogo seguro (A1PasswordDialog), mantida em char[] temporário e sobrescrita com zeros logo após a leitura da chave.
  3. O provedor Pkcs12CertificateProvider instancia um KeyStore.getInstance("PKCS12") e extrai os metadados do certificado X.509 (subject, issuer, validade, algoritmo, tamanho da chave).
  4. Durante a assinatura, a chave privada em memória gera a assinatura digital via Signature.getInstance("SHA256withRSA").

2. Certificados Digitais A3 no Windows (Windows Certificate Store)

No Windows 10/11, a maioria dos drivers de tokens USB e Smart Cards (ex: SafeSign, SafeNet Authentication Client, Serpro, Certisign) registra seus certificados diretamente no repositório de certificados do usuário (Windows-MY).

Vantagens do Provider WindowsCertificateStoreProvider

  • Acessa certificados físicos via CryptoAPI (CAPI) e Cryptography Next Generation (CNG) através do provedor JDK SunMSCAPI.
  • A chave privada permanece dentro do chip criptográfico do token.
  • Quando o token exige autenticação por PIN, a janela nativa do próprio driver do fabricante é invocada com segurança pelo sistema operacional Windows.

3. Hardware PKCS#11 Direto (Tokens USB e Smartcards)

Para ambientes onde se deseja acesso direto ao middleware ou no Linux:

  • Pkcs11CertificateProvider pesquisa bibliotecas DLL / SO padrão:
    • eps2003csp11.dll (SafeNet / eToken)
    • aetpkss1.dll (SafeSign AET)
    • acospkcs11.dll (ACOS / G&D)
    • opensc-pkcs11.dll / opensc-pkcs11.so (OpenSC)
  • Utiliza o provider SunPKCS11 do JDK (jdk.crypto.cryptoki).

4. Monitoramento Dinâmico de Hardware (SmartCardWatcher)

O componente SmartCardWatcher monitora os leitores PC/SC em segundo plano:

  • Ao inserir um token: Atualiza a lista de certificados automaticamente e notifica a interface gráfica.
  • Ao remover o token: Registra evento de auditoria (AUDITORIA [TOKEN_REMOVED]), limpa o cache de PIN de sessão em PinSessionManager e força um warm reset via SmartCardSessionManager.