Pular para o conteúdo principal

Certificados de teste

Se você não tiver um certificado ICP-Brasil para testar nossos produtos, você pode utilizar um dos certificados para testes da ICP de testes da Lacuna Software.

aviso

A ICP de testes da Lacuna Software nunca deve ser aceita em ambiente de produção!


Baixar certificados para testes


Todos os arquivos no zip acima estão em formato PKCS #12 (arquivos .pfx) com senha 1234. Os seguintes certificados estão presentes:

  • Alan Mathison Turing
  • Ferdinand Georg Frobenius
  • Pierre de Fermat
  • Wayne Enterprises, Inc
    • Email: test@wayneenterprises.com
    • Mimetiza certificado ICP-Brasil de pessoa jurídica com CNPJ 34.785.515/0001-66
    • Representante legal: Bruce Wayne, CPF 478.911.786-31

Se você precisar de um certificado diferente com dados específicos, você mesmo pode emitir um certificado de testes com os dados que quiser.

Lembre-se de sempre remover a confiança na ICP de testes da Lacuna Software ao levar a sua aplicação para produção. Ainda melhor, recomendamos o emprego de alguma técnica de compilação condicional de modo que a ICP de testes seja aceita apenas quando o código estiver executando em modo debug.

O que os arquivos contêm​

  • Cada arquivo contém só o certificado final e a chave privada dele, sem a cadeia. Importar um arquivo não instala a raiz nem a AC intermediária de testes.

  • Os certificados são emitidos pela Lacuna CA Test v7, que é emitida pela Lacuna Root Test v3. Para confiar na ICP de testes, confie nessa raiz:

    • Subject: C=BR, O=ICP-Brasil, OU=Lacuna Software - LS, CN=Lacuna Root Test v3, válida de 16/12/2024 a 16/12/2074.
    • Impressão digital SHA-256: BE:1E:84:17:7B:80:F1:88:9A:65:F1:10:10:A8:FB:85:49:5B:E7:0F:FC:3D:83:F5:C6:D6:3A:92:BE:DC:C0:18.
    • Download: lacuna-root-test-v3.cer. A AC intermediária é a lacuna-ca-test-v7.cer.
  • Os certificados valem até janeiro de 2075, com os usos de chave Digital Signature, Non Repudiation e Key Encipherment, e os usos estendidos autenticação de cliente TLS e proteção de e-mail.

  • Os arquivos usam a criptografia antiga do PKCS #12 (3DES para a chave, RC2 de 40 bits para o certificado, MAC com SHA-1). O OpenSSL 3 os recusa com o erro unsupported ... RC2-40-CBC, a menos que você passe -legacy:

    openssl pkcs12 -legacy -in "Pierre de Fermat.pfx" -passin pass:1234 -nokeys

Confiando na ICP de testes em cada produto​

Cada produto decide à sua maneira em quais raízes confia, e você precisa configurar cada um para confiar na ICP de testes. As seções abaixo mostram como, e o que fazem os projetos de exemplo:

ProdutoComo confiar na ICP de testesO que os exemplos fazem
Web PKIInstale o certificado no repositório do usuário; a confiança vem do Rest PKI ou dos trustArbitrators de uma assinatura local.NET: adiciona uma raiz de testes antiga, que não aceita mais estes certificados
Rest PKIContexto de segurança 803517ad-3bbc-4169-b085-60053a8f6dbf.NET: builds de debug; demais linguagens: trustLacunaTestRoot
Rest PKI CoreO mesmo contexto de segurança, por requisição ou como padrão da organização.NET: builds de debug; Java: trustLacunaTestRoot
PKI SDKTrustedRoots com a Lacuna Root Test v3 num LinkedTrustArbitrator.NET: builds de debug
PKI ExpresstrustLacunaTestRoot no operadortrustLacunaTestRoot na configuração
SignerAdicione a raiz ao TrustArbitrator da instância (on-premises)Assinam no sandbox com um certificado de teste
TrustBridgeCertificates:Validation:UseLacunaTestPki no Servidor e em cada estação de trabalhoNenhum exemplo publicado

Web PKI​

O Web PKI lista os certificados do repositório de certificados do sistema operacional e dos dispositivos criptográficos conectados, então um certificado de teste precisa estar instalado para que o Web PKI o liste.

Windows. Importe o arquivo .pfx para o repositório Pessoal do usuário atual. Dê um duplo clique no arquivo e siga o Assistente para Importação de Certificados (local do repositório Usuário Atual, senha 1234), ou rode no PowerShell:

Import-PfxCertificate -FilePath ".\Pierre de Fermat.pfx" -CertStoreLocation Cert:\CurrentUser\My -Password (ConvertTo-SecureString 1234 -AsPlainText -Force)

Depois disso, o certmgr.msc mostra o certificado na pasta Pessoal, com a indicação de que você tem a chave privada correspondente. Veja Primeiros passos.

TODO(docs): como instalar os arquivos PKCS #12 de teste para que o Web PKI os liste no Linux e no macOS. Nenhuma fonte diz qual repositório o Web PKI lê nesses sistemas.

Confiança. Instalar o certificado não faz uma assinatura confiar nele:

  • Com o Rest PKI ou o Rest PKI Core, quem decide é o contexto de segurança da operação: veja Configurando o Rest PKI e Rest PKI Core.
  • Numa assinatura feita só com o Web PKI, como a signPdf(), adicione a Lacuna Root Test v3 aos trustArbitrators como árbitro trustedRoot, com a raiz codificada em Base64, só em desenvolvimento. O exemplo em ASP.NET MVC faz isso em Views/PadesSignatureWeb/Index.cshtml, mas o _lacunaTestRoot dele (em Views/Shared/_Layout.cshtml) é uma raiz antiga, a Lacuna Root Test v1, que expirou em janeiro de 2025 e não é a raiz destes certificados: use a Lacuna Root Test v3.
trustArbitrators: [
pki.standardTrustArbitrators.pkiBrazil,
// Lacuna Software Test Root (development only!)
{ type: 'trustedRoot', trustedRoot: lacunaTestRootBase64 }
]

Configurando o Rest PKI​

O ID do contexto de segurança que contém a ICP de testes da Lacuna Software é:

Lacuna Test PKI security context ID (for development purposes only!!!):
803517ad-3bbc-4169-b085-60053a8f6dbf

Passe-o como o contexto de segurança da operação. Por exemplo, para iniciar uma assinatura PAdES (PDF) em PHP:

// Trust Lacuna Test PKI (for development purposes only!!!)
$signatureStarter->setSecurityContext("803517ad-3bbc-4169-b085-60053a8f6dbf");

Ou em Java:

// Trust Lacuna Test PKI (for development purposes only!!!)
signatureStarter.setSecurityContext(new SecurityContext("803517ad-3bbc-4169-b085-60053a8f6dbf"));

Nos projetos do PkiSuiteSamples você não altera o exemplo: todas as páginas obtêm o contexto de segurança de um auxiliar Util, que devolve o contexto da ICP de testes da Lacuna quando a chave do projeto está ligada.

LinguagemExemplo (PAdES com o Rest PKI)Chave
PHPphp/plain/public/pades-signature-rest/index.php, pelo Util::getSecurityContextId()"trustLacunaTestRoot" => true em php/plain/config.php (true por padrão)
Javajava/springmvc/.../controller/PadesSignatureRestController.java, pelo Util.getSecurityContext()trustLacunaTestRoot em application.yml (false) e application-dev.yml (true)
.NETdotnet/mvc/PkiSuiteAspNetMvcSample/Controllers/PadesSignatureRestController.cs, pelo Util.GetSecurityContextId()Build de debug: StandardSecurityContexts.LacunaTest sob #if DEBUG, PkiBrazil nos demais
Node.jstrustLacunaTestRoot em nodejs/expressmvc/config/*.js
PythonTRUST_LACUNA_TEST_ROOT em python/flask/sample/config.py e python/django/sample/config.py

O exemplo em .NET avisa que uma instalação on-premises do Rest PKI pode não ter esse contexto de segurança; se a sua não tiver, entre em contato com o suporte ao desenvolvedor.

A partir daí, os certificados da nossa ICP de testes passam a ser aceitos.

Rest PKI Core​

Toda instância do Rest PKI Core tem o contexto de segurança padrão Lacuna Test PKI (for development purposes only!), com o mesmo ID, 803517ad-3bbc-4169-b085-60053a8f6dbf (StandardSecurityContexts.LacunaTest no cliente .NET). A instância o cria ao iniciar, então as instâncias on-premises também o têm. Ele confia na ICP-Brasil, no repositório de certificados confiáveis do Windows e na Lacuna Root Test v3.

Use-o de uma de duas formas:

  • Por requisição: passe o ID como SecurityContextId ao criar uma sessão de assinatura (CreateSignatureSessionRequest.SecurityContextId) ou preparar uma assinatura (PrepareSignatureOptions.SecurityContextId, securityContextId no POST api/signature).
  • Para toda a organização: no dashboard, escolha-o em Configurações > Configurações gerais > Contexto de segurança padrão, o contexto de segurança usado quando a requisição não informa um. Só usuários com o papel Admin ou Manager na organização veem Configurações.

Quando a requisição não informa um contexto de segurança, o Rest PKI Core usa o padrão da organização, ou então a configuração General:DefaultSecurityContext da instância, cujo padrão é a ICP-Brasil (PKI Brazil). Por isso, por padrão, os certificados de teste não são aceitos.

Nos exemplos, o projeto em ASP.NET MVC passa StandardSecurityContexts.LacunaTest em builds de debug e PkiBrazil nos demais; o projeto em Java passa SecurityContext.lacunaTest só quando trustLacunaTestRoot é true no application.yml, que vem com false.

Não há sandbox público: os exemplos e o site de demonstração usam uma organização de avaliação no core.pki.rest, cuja chave de API a Lacuna troca todo mês. Pegue a chave atual no repositório de exemplos, em vez de copiá-la para o seu código.

TODO(docs): como um desenvolvedor obtém uma chave de avaliação própria para o core.pki.rest.

PKI SDK​

O PKI SDK não tem contexto de segurança: as raízes em que ele confia vêm de um ITrustArbitrator. Para confiar na ICP de testes, adicione a Lacuna Root Test v3 como TrustedRoots a um LinkedTrustArbitrator, só em builds de debug. Os exemplos fazem isso no Util.GetTrustArbitrator():

var trustArbitrator = new LinkedTrustArbitrator(TrustArbitrators.PkiBrazil, TrustArbitrators.Windows);
#if DEBUG
// For development purposes, we also trust in Lacuna Software's test certificates.
// lacunaRootBytes: Lacuna Root Test v3 (the samples embed it in Base64)
var lacunaRoot = PKCertificate.Decode(lacunaRootBytes);
trustArbitrator.Add(new TrustedRoots(lacunaRoot));
#endif

Depois, use esse árbitro onde uma validação ou uma política de assinatura precisar de um:

  • PAdES: passe-o para a política, por exemplo PadesPoliciesForGeneration.GetPadesBasic(trustArbitrator) e PadesPoliciesForValidation.GetPadesBasic(trustArbitrator).

  • Políticas da ICP-Brasil vêm com o próprio árbitro de confiança, que confia só nas raízes da ICP-Brasil, então recusam um certificado de teste mesmo que o resto da sua aplicação use o seu árbitro. Substitua-o, só em builds de debug:

    • CAdES, como CadesPoliciesForGeneration.GetPkiBrazilAdrBasica(): policy.ClearTrustArbitrator() e depois policy.AddTrustArbitrator(trustArbitrator).
    • XML, como BrazilXmlPolicySpec.GetNFePadraoNacional(): policy.ClearTrustArbitrators() e depois policy.AddTrustArbitrator(trustArbitrator).

Veja Validando certificados para TrustedRoots e LinkedTrustArbitrator.

PKI Express​

Ligue trustLacunaTestRoot no operador (trust_lacuna_test_root em Python e Ruby). Veja "Confiando em certificados que não sejam da ICP-Brasil" para Node.js, Java, PHP, Python e Ruby, e Quais certificados são confiáveis.

Signer​

  • Por padrão, uma instância do Signer aceita só certificados ICP-Brasil. Uma instância on-premises só aceita a ICP de testes da Lacuna depois que você adiciona a Lacuna Root Test v3 à seção TrustArbitrator dela e, quando os tipos de assinatura estão habilitados, a SignatureTypes:Simple:TrustArbitrator e SignatureTypes:Qualified:TrustArbitrator. As assinaturas avançadas usam o TrustArbitrator do contexto de segurança delas, que o administrador da instância define na área de administração. Veja TrustArbitrator.
  • O cenário de assinatura pública dos exemplos do Signer (.NET e Node.js) assina no sandbox do Signer, https://signer-lac.azurewebsites.net, onde os clientes desenvolvem e testam as integrações (para ter uma organização e uma chave de API nele, entre em contato com o suporte), com um certificado de teste da Lacuna emitido pela Lacuna CA Test v7 para o CPF 56072386105: o arquivo nodejs/samples/56072386105.pfx, senha 1234. O identifier do participante precisa ser igual ao CPF do certificado.
  • Para assinar em nuvem pelo widget de assinatura embutida, o exemplo online usa um certificado de teste do BirdID (CPF 026.102.470-10) no ambiente de testes do BirdID, pareado lendo um QR code no aplicativo BirdID. Veja Assinatura embutida.

TODO(docs): se o sandbox confia na ICP de testes da Lacuna (os exemplos indicam que sim, mas nenhuma página registra uma execução bem-sucedida) e quais certificados de teste o Dropsigner (www.dropsigner.com) aceita.

TrustBridge​

  • Um Servidor TrustBridge só confia na ICP de testes da Lacuna com Certificates:Validation:UseLacunaTestPki definida como true (padrão false); uma estação de trabalho faz o mesmo pela própria configuração de mesmo nome. Somente para desenvolvimento: com ela ligada, o Servidor registra Critical na inicialização e mostra um banner de aviso em todas as páginas administrativas. Veja As fontes de âncoras no Servidor e na estação de trabalho, e Certificados e credenciais de teste na referência rápida do TrustBridge.

TODO(docs): se cadastrar a Lacuna Root Test v3 na tela Autoridades Certificadoras Confiáveis do TrustBridge funciona em vez de UseLacunaTestPki.

Ver em Markdown