Resolução de problemas
Os modos de falha, organizados por onde são percebidos, como cada um se manifesta e onde ler a causa.
Toda resposta HTTP traz um X-Correlation-Id; informe-o e o operador encontra na hora as linhas do log
do Servidor e as linhas da Trilha de Auditoria da requisição.
O Servidor não inicia
Toda inicialização recusada gera uma linha Critical citando a causa. A tabela completa está em
Instalação do Servidor. A versão resumida:
| Sintoma | Causa |
|---|---|
Uma linha citando KeyRingProtector: | Não há protetor, o valor não está em base64, a senha está errada ou não há chave RSA. Toda implantação precisa de um. |
…the Key Ring Protector configured here opens none of them | Um protetor trocado. Restaure o antigo, ou adicione-o em RetiredCertificates. |
Certificates:Validation:License is not configured | Não há licença da PKI. Toda implantação precisa de uma desde o Servidor 1.7.0, com ou sem cofre. Uma licença vencida não impede a inicialização; veja a próxima tabela. |
This Server's database did not answer in N seconds | O banco de dados nunca respondeu na inicialização. Verifique ConnectionStrings:TrustBridge e se o banco de dados está em execução. No Azure SQL, verifique o acesso pela rede pública ou o private endpoint (erro 47073). |
…is behind the build … by N migration(s) | MigrateOnStart está desligado e há migrações pendentes. |
…has N migration(s) applied that this build does not contain | Uma imagem mais antiga sobre um schema mais novo: um rollback sem restaurar o backup de antes da atualização. Ou um banco de dados criado pelo Servidor 1.2.0 ou anterior. |
Uma linha citando ForwardedHeaders:TrustedProxies | Uma lista de proxies malformada: informada como um valor único em vez de indexada (ForwardedHeaders__TrustedProxies__0), /0, bits de host além do prefixo, um endereço IPv4 fora do decimal com pontos simples ou em forma IPv6, um endereço link-local, outra chave em ForwardedHeaders, como KnownProxies, ou a lista definida junto com ASPNETCORE_FORWARDEDHEADERS_ENABLED. A linha cita a entrada. |
Admin:CertificateSignIn:Enabled is on, but Admin:CertificateSignIn:WebPkiLicense is not set… | O Acesso com Certificado precisa da licença do Web PKI, no formato de uma linha, citando o nome de host que as pessoas digitam. |
Admin:CertificateSignIn:Required is on, which switches passwords off, but Admin:CertificateSignIn:Enabled is off… | Senhas desligadas sem acesso com certificado não deixariam nenhuma forma de entrar. Inverta uma das duas chaves. |
Workstations:ClientTimeout of … is shorter than 00:00:10… ou …longer than 00:05:00 | Fora da faixa, normalmente um erro de unidade. Escreva no formato hh:mm:ss: um 15 sozinho são quinze dias. |
Signer:ApiKey is required… | Um endereço do Signer sem chave. |
RestPkiCore:… is required when any RestPkiCore key is set, …must be an https address…, …must end in a slash… ou …must be a GUID naming a security context… | A seção RestPkiCore são as três chaves ou nenhuma, com um endpoint https terminado em barra e um GUID para o contexto de segurança. A linha cita a chave. |
Signing:StrandedAfter must be greater than twice Signing:RequestBudget plus Signing:SignerCancelBudget… | Desde o Servidor 1.18.0 o piso é mais alto. Aumente StrandedAfter acima dessa soma; os padrões já a atendem. |
Dashboard:TimeZone names '…', a Windows time zone id… ou …which is not a time zone this Server knows | Indique uma zona IANA, como America/Sao_Paulo, ou UTC. |
Database:Engine is '…', which names no engine this Server runs on… ou …but ConnectionStrings:TrustBridge is written for … | A chave do mecanismo de banco de dados e a connection string não concordam, ou a chave não indica nem SqlServer nem PostgreSql. Uma implantação escolhe o mecanismo uma única vez; veja Configuração. |
SpellThumbprintsUpperCase: … holds rows whose thumbprints differ only in case… | A migração do Servidor 1.20.0 num banco de dados SQL Server com collation que diferencia maiúsculas de minúsculas. Nada foi alterado; a linha cita a tabela e o que fazer com cada par. |
Sessions:MaxDuration abaixo de DefaultDuration, ou outra regra entre chaves | Uma configuração recusada; a linha cita as duas chaves. |
| No App Service, o container é encerrado e reiniciado em loop sem nada útil no log | Uma migração que demora mais que WEBSITES_CONTAINER_START_TIME_LIMIT (padrão de 230 s). Defina-o como 1800. |
O Servidor iniciou, mas não funciona
| Sintoma | O que é | Onde olhar |
|---|---|---|
/ responde 200, /healthz responde 503 | O banco de dados caiu depois da inicialização. O contrato falha; o cofre está fechado. | A connection string, a disponibilidade do banco de dados. |
| Toda assinatura e importação no cofre é recusada, enquanto as estações de trabalho assinam normalmente | A trava do cofre: o Servidor subiu antes do banco de dados. | O aviso VaultReadiness na inicialização. O cofre se abre no primeiro uso depois que o banco de dados responde. |
| Um banner em todas as páginas administrativas: A licença da PKI deste Servidor foi recusada: nenhum Certificado do Cofre consegue assinar, e nenhuma estação de trabalho conseguirá depois de reiniciar | A licença está vencida, corrompida ou não é uma licença, ou um sistema de arquivos somente leitura sem /tmp gravável impediu o SDK de lê-la. Nenhum Certificado do Cofre consegue assinar, e as importações são recusadas. Uma estação de trabalho deixa de conseguir assinar depois que o Workstation Service dela for reiniciado; até lá, só continua assinando se ainda tiver uma licença anterior que o SDK aceite. | A linha Critical de LacunaPkiRuntime na inicialização e a linha Error ao lado dela. Renove a licença e reinicie o Servidor; num sistema de arquivos somente leitura, monte um tmpfs sobre /tmp. |
Todo Certificado do Cofre aparece como UNTRUSTED, embora a licença esteja válida | Nenhuma âncora consegue terminar uma cadeia: UseIcpBrasil desligado sem nenhuma Autoridade Certificadora Confiável que seja raiz. | A linha Critical sobre o conjunto de âncoras, que diz que nenhuma âncora está configurada. |
As sessões de uma Aplicação Cliente respondem 422 WORKSTATION_OFFLINE desde que o PIN por transação foi ligado para ela | As máquinas dos titulares ainda estão no Workstation 1.5.0 (protocolo 5), que não consegue pedir o PIN a cada chamada. | As linhas Warning que citam cada máquina ignorada no protocolo 5. Envie e ofereça o Workstation 1.6.0, ou desligue a opção até a frota recebê-lo: veja Ordem de atualização. |
| Desde a atualização para o Servidor 1.17.0 ou posterior, as sessões não terminam mais depois do número habitual de chamadas de assinatura | Sessions:SignatureAllowance não é mais lida: a franquia agora é de cada Aplicação Cliente, e nenhuma tem uma depois da atualização. Um Warning na inicialização cita a chave. | Defina a Franquia de Assinaturas em cada Aplicação Cliente que precisa de uma e depois remova a chave. Veja Atualização para o Servidor 1.17.0 ou posterior. |
| O Painel diz Nada foi consolidado ainda, ou a faixa de situação mostra Atividade de assinatura ainda não consolidada | A Atividade de assinatura ainda não foi contada pela primeira vez: na primeira inicialização do Servidor 1.17.0 ou posterior, ela é antes preenchida retroativamente a partir de toda a Trilha de Auditoria. | Aguarde o preenchimento retroativo. Se nunca for consolidada, o Painel avisa e o log do Servidor diz por quê. |
| A faixa de situação mostra Atividade de assinatura parada em …, e o Painel a coloca no topo de O que precisa de você | A contagem do Painel parou de avançar, e todo número termina nesse momento. Uma Assinatura de teste ainda em execução a segura de propósito até terminar. | O log do Servidor: as linhas Signing Activity … e Audit retention purge is held at …. Veja Avisos que merecem um alerta. |
A Trilha de Auditoria mantém linhas mais antigas que Audit:RetentionDays | A limpeza nunca exclui o que a Atividade de assinatura ainda não contou: ela espera o primeiro preenchimento retroativo, e uma contagem atrasada. | As linhas Audit retention purge no log do Servidor. |
| Assinar documentos com o REST PKI Core é recusado: O REST PKI Core não está configurado neste Servidor (a seção RestPkiCore)… | A implantação não tem a seção RestPkiCore. | Configure RestPkiCore:Endpoint, ApiKey e SecurityContextId e reinicie; veja Configuração. |
Toda chamada de assinatura de uma aplicação que assina com o REST PKI Core responde 500 INTERNAL_ERROR | O REST PKI Core recusa a chave, a aplicação da chave não tem o papel Worker, o contexto de segurança não existe lá, ou a seção RestPkiCore foi removida depois da troca. | A linha Error que diz qual, de …Signatures.RestPkiCoreAdmission. Corrija, ou volte a aplicação para o Signer. |
Os documentos do REST PKI Core são assinados, mas toda busca falha com 502 SIGNER_ERROR, ou com 500 INTERNAL_ERROR e uma linha Error | Um documento assinado é baixado do endereço do próprio site do REST PKI Core, que não é necessariamente o endpoint configurado, e o Servidor não consegue acessá-lo. | Libere a saída do Servidor para o endereço do site da instância, além de RestPkiCore:Endpoint. |
O REST PKI Core recusa como 422 CERT_NOT_ACTIVE certificados de titulares em que este Servidor confia | Nesse caminho, a confiança também é a do contexto de segurança do REST PKI Core, que fica separado da tela Autoridades Certificadoras Confiáveis. | Um contexto de segurança personalizado que confie nas ACs dos titulares, mantido em sintonia com as Autoridades Certificadoras Confiáveis à mão. |
| Os documentos assinados com o REST PKI Core não trazem política ICP-Brasil, ou trazem marcas nas páginas | A política de assinatura e as marcas nas páginas são configurações da instância e do plano contratado do REST PKI Core, não deste Servidor. | No lado do REST PKI Core: General:UseBrazilianPdfSigningPolicies ligada e General:DefaultSignaturePolicy em Basic para AD-RB, e a política de marcação de PDF do plano em Never para não haver marcas. |
| O chip Relatório de uma máquina mostra Sem relatório | Ela roda uma versão anterior ao Workstation 1.8.0, a implantação dela desligou o relatório, ou o último relatório foi enviado por outra versão que não a que ela roda agora. | A seção Relatório da Estação de Trabalho do painel de detalhes diz qual. |
| A faixa de situação mostra N exigem atualização | Máquinas cujo protocolo o Servidor não aceita mais. No Servidor 1.15.0 e posteriores, o Workstation 1.4.x ou anterior. | A coluna Versão do serviço da tela da frota. Instale nelas a versão atual à mão ou por Política de Grupo. |
| A célula Conta no console de uma máquina mostra Precisa da Estação de Trabalho 1.10.0 | Ela roda uma versão anterior ao Workstation 1.10.0, que não informa o console. Não há nada de errado com ela. | Ofereça a ela o Workstation 1.10.0 ou posterior, que vai com o Servidor 1.20.0 ou posterior e mostra o console a partir do Servidor 1.23.0. |
| A célula Conta no console de uma máquina mostra Sem relatório | O relatório dela está desligado, ou ela não enviou nenhum desde que passou a rodar a versão atual. | A seção No console do painel diz qual. Uma máquina cuja implantação desligou o relatório nunca diz quem está no console dela. |
Toda Assinatura de teste falha na etapa de loopback (Este Servidor não conseguiu acessar ou ler o próprio contrato.), ou o log diz que POST /v1/sessions respondeu 400 sem envelope de erro | A execução não consegue acessar o próprio /v1 do Servidor: no Docker, o Servidor escuta só em HTTPS, com um certificado que não corresponde a localhost, ou o AllowedHosts não admite o host do loopback. | Adicione http://localhost:8080 ao ASPNETCORE_URLS e o host do loopback ao AllowedHosts: veja A Assinatura de teste. |
| Uma Assinatura de teste por um proxy reverso termina num 502, 504 ou 524 do proxy | O proxy parou de esperar antes de a execução terminar. | Mantenha TestSignature:MaxTimeout abaixo do timeout de leitura do proxy, ou digite um tempo limite menor. |
| Excluir uma Versão da Estação de Trabalho leva minutos no Azure SQL | Um banco de dados pequeno (Basic, 5 DTU) grava o pacote no log de transações devagar. Desde o Servidor 1.16.0, a exclusão tem dez minutos para terminar. | Aguarde; a tela informa que ela começou. |
| Uma configuração não tem efeito | Uma das sete chaves que podem ser sobrepostas foi salva na tela Configurações e usuários, e a camada do banco de dados prevalece silenciosamente. | /admin/settings; restaure os padrões implantados. |
O console administrativo em http:// nunca conclui o login | Um cookie sem Secure em um link que a plataforma converte para HTTPS. | No App Service, --https-only true. Atrás do seu próprio proxy TLS, cite-o em ForwardedHeaders:TrustedProxies e faça-o repassar o X-Forwarded-Proto. |
Atrás de um proxy, o redirecionamento do login aponta para http:// ou para o endereço do upstream | O proxy substitui o X-Forwarded-Proto por http, ou não repassa o header Host do navegador. | No nginx, proxy_set_header Host $host, e preserve o X-Forwarded-Proto da borda. |
| Toda linha de auditoria registra o endereço do proxy | O proxy não está citado, então todo chamador é o proxy. Atrás de um proxy não citado, todos os navegadores também dividem uma única cota do Acesso com Certificado, e a frota inteira uma única cota de admissão. | Docker: ForwardedHeaders:TrustedProxies. App Service: ASPNETCORE_FORWARDEDHEADERS_ENABLED=true. A linha de inicialização que começa com Forwarded headers: diz em quem o Servidor confia. |
Um Warning na inicialização: Forwarded headers: honoured from whoever connects … | Uma implantação Docker que ainda usa ASPNETCORE_FORWARDEDHEADERS_ENABLED: qualquer cliente que acesse a porta pode informar o próprio endereço. | Cite o proxy em ForwardedHeaders:TrustedProxies e remova a variável. |
As desconexões das máquinas aparecem como closed em LongPolling; o console administrativo está lento | O proxy não transporta WebSockets, então as conexões caem para long polling. | Os headers de upgrade para WebSocket no proxy. |
Linhas KeyRingProvider[48] ou XmlKeyManager[24] em um Servidor que iniciou sem erros | O banco de dados está inacessível, não o protetor. | /healthz. |
Uma linha Critical com uma linha de auditoria inteira | O banco de dados recusou uma gravação de auditoria; a linha só existe nessa entrada do log. | Guarde o fluxo de log. O console mostra um alerta. |
| Um banner de aviso em todas as páginas administrativas sobre as ACs de teste | UseLacunaTestPki está ligado. | Desligue a PKI de testes em tudo que não seja uma máquina de desenvolvimento. |
Uma Assinatura de teste que falhou na etapa de assinatura
Desde o Servidor 1.24.0, uma Assinatura de teste que falhou na etapa de assinatura segue a frase da etapa com outra escolhida pelo código do contrato, e mostra ao lado o código e a resposta do contrato. Um lote diz isso para cada documento que não foi assinado.
| Código | O que é | O que fazer |
|---|---|---|
CERT_INCOMPLETE_IDENTITY | O certificado não identifica o titular o suficiente para assinar em nome dele. | Se o que falta é um endereço de e-mail, informe um no campo Endereço de e-mail. Qualquer outro campo é do próprio certificado. |
PIN_NOT_AVAILABLE | Não foi possível usar o PIN do titular: na maioria das vezes, ele recusou ou não respondeu no Tray App, ou o token está bloqueado. | A resposta do contrato diz qual foi o caso. |
SIGN_TIMEOUT | A assinatura não terminou a tempo. A chave do titular pode já ter assinado. | A resposta do contrato diz se assinou; nesse caso, assinar de novo assina outra vez. |
TOO_MANY_PIN_ATTEMPTS | O bloqueio por CPF: PINs errados demais para esse titular recentemente, então o PIN não foi verificado. | Espere as tentativas mais antigas saírem da janela. |
INVALID_PIN | O PIN enviado com a assinatura está errado. | Digite o PIN certo. |
SESSION_EXPIRED | Outra sessão do mesmo titular substituiu esta, ou o prazo dela passou. | Execute de novo. |
WORKSTATION_OFFLINE | A máquina que guarda o certificado não está conectada, roda uma versão antiga demais para consultar o titular, ou foi removida. | A tela Estações de Trabalho. |
CERT_NOT_ACTIVE ou CERT_NOT_FOUND | O certificado está expirado, revogado ou não é confiável, ou o token dele não está na máquina; ou ele não está mais na plataforma. | O Registro de Certificados. |
CERT_DATA_UNAVAILABLE | O Servidor não guarda uma cópia do próprio certificado, que a assinatura exige: a máquina que o guarda pode rodar um Workstation Service antigo demais para enviá-la. | Atualize a máquina; ela envia a cópia ao se reconectar. |
| Nenhum código | O tempo limite acabou durante a chamada de assinatura, que espera o titular confirmar no Tray App com o PIN por transação. | Digite um tempo limite maior, e peça ao titular para confirmar no Tray App. |
| Qualquer outro código | O contrato recusou a assinatura com esse código. | Veja Erros na aplicação cliente. |
Entrada no console administrativo
| Sintoma | O que é | O que fazer |
|---|---|---|
| Nenhum certificado com CPF foi encontrado neste computador | Só certificados e-CPF são listados: um e-CNPJ ou um certificado sem CPF nunca é oferecido. Ou o token não está conectado. | Insira o token ou cartão com o e-CPF e recarregue a página. |
| Todos os certificados deste computador expiraram | Só foram encontrados e-CPFs expirados; eles aparecem em Expirados, esmaecidos, e não podem ser escolhidos. | Insira o token ou cartão com um e-CPF válido e selecione Atualizar lista. |
| A página de login abre na página do certificado | Este navegador entrou pela última vez com certificado, e a página de login lembra a forma de entrar. | Selecione Senha no alto da página. |
| Entrar com certificado só é possível em um computador | Um celular ou um tablet. | Use um navegador de desktop. |
| Para entrar com certificado, você precisa do componente Web PKI… ou …precisa ser atualizado | O Web PKI está ausente ou desatualizado neste navegador. | Siga o Instalar o Web PKI ou o Atualizar o Web PKI da página. |
| Não é possível ler certificados aqui: a licença do Web PKI deste Servidor não cobre este endereço | Admin:CertificateSignIn:WebPkiLicense não cita o nome de host que as pessoas digitam, ou não é válida. | Uma licença do Web PKI para esse nome de host e, em seguida, um reinício. |
| Esse acesso não abriu nenhuma conta | Nenhuma conta habilitada tem o CPF do certificado como CPF vinculado. | Outro Administrador define o CPF da pessoa com Definir CPF vinculado na tela de contas. Ninguém define o próprio. |
| Este Servidor não confia na autoridade que emitiu este certificado, ou uma frase dizendo que ele expirou, foi revogado ou não pôde ser verificado | Só um veredito ACTIVE permite a entrada. UNTRUSTED normalmente é a Autoridade Certificadora Confiável dos administradores removida, ou a licença da PKI do Servidor recusada (o console administrativo mostra um banner). | A tela de Autoridades Certificadoras Confiáveis conta os administradores que cada autoridade permite entrar antes de você removê-la; renove a licença. |
| Este certificado não traz um CPF válido como titular | O certificado de uma Empresa. | Entre com o e-CPF da pessoa. |
| Tentativas demais a partir deste endereço | Dez desafios por minuto por endereço. Atrás de um proxy não citado, todos os navegadores dividem essa cota. | Aguarde um minuto; cite o proxy em ForwardedHeaders:TrustedProxies. |
| As senhas estão desligadas e uma conta não tem CPF vinculado | Ela não consegue entrar de forma alguma enquanto Admin:CertificateSignIn:Required está ligado, inclusive as contas novas. | Outro Administrador define o CPF vinculado dela. Um Administrador sozinho não tem quem defina o dele, então mantenha pelo menos dois. |
| As senhas estão desligadas e ninguém consegue entrar | Tudo o que encerra todos os acessos com certificado de uma vez: a Autoridade Certificadora Confiável dos administradores removida, uma licença da PKI recusada, uma licença do Web PKI que não cita mais o nome de host, uma atualização do navegador que quebrou a extensão, ou o CPF vinculado do último Administrador limpo. | Defina Admin:CertificateSignIn:Required=false e reinicie; entre com senha e corrija a causa; depois volte a defini-lo como true e reinicie. Nada vai lembrar você de desfazer isso. |
Estações de trabalho
| Sintoma | O que é | Onde olhar |
|---|---|---|
Instalação com código de saída 1603, log cita SERVER_URL | A condição de inicialização: URL vazia ou sem esquema. | Passe SERVER_URL=https://…. |
| Instalação com código de saída 1603, log diz que uma versão mais nova está instalada | Um downgrade. | Desinstale antes; a máquina volta como uma máquina nova. |
| A instalação é revertida em Starting services | O serviço se recusou a iniciar: uma INSTALLER_KEY que não pode ser interpretada ou um valor de Registro do tipo errado. | Log de eventos Aplicativo, origem TrustBridge Workstation Service. |
| Editor: Desconhecido na solicitação de elevação, um bloqueio do SmartScreen, ou uma política que exige editor recusando o pacote | Um pacote não assinado: um build de desenvolvimento, nunca uma release. Toda versão do Workstation a partir da 1.2.1 é assinada por LACUNA SOFTWARE LTDA. | Obtenha o pacote da release com a Lacuna Software e verifique a assinatura com Get-AuthenticodeSignature. |
| Instalada, nunca aparece na fila de admissão, nada no Servidor | A URL do Servidor está errada, ou uma GPO a está sobrepondo, ou a máquina não confia na cadeia TLS. | A linha Server:Url is …, supplied by … do serviço na inicialização; HKLM\Software\Policies\TrustBridge em um PowerShell de 64 bits. |
| Nunca aparece, e o log da máquina diz que a requisição de admissão foi recusada | Uma de quatro causas: revogada, uma Installer Key em que o Servidor não confia, requisições demais do endereço dela ou fila cheia. O Servidor deliberadamente não diz qual. | As duas últimas se resolvem sozinhas. Procure uma linha revogada na tela Estações de Trabalho: a chave dela é recusada enquanto essa linha existir. |
| Uma máquina removida voltou à fila de admissão | Ela ainda está instalada e pediu de novo, então chega como uma máquina nova, com um id novo. | Admita-a se ela pertence à frota; senão, desinstale-a e deixe o pedido expirar. Uma máquina que precisa ficar de fora é revogada, não removida. |
| Uma máquina devolvida à fila fica lá indefinidamente | Uma máquina admitida uma vez e devolvida para Pendente nunca expira. | Remover na linha dela na fila de admissão. |
| Está na fila, e o Tray mostra Admissão pendente | Não é uma falha. | Admita-a em /admin/admission. |
Admitida, mas não se conecta; o log do Servidor diz …is newer than this server's supported window …; update the Server first | A estação de trabalho foi atualizada antes do Servidor, por exemplo o Workstation 1.6.0 contra um Servidor anterior à 1.15.0. Ela não recebe licença, então todo certificado dela aparece como UNTRUSTED. | Atualize o Servidor. Veja Ordem de atualização. |
Admitida, mas não se conecta; a linha da frota diz …is older than this server's supported window …; update required | A estação de trabalho é antiga demais para o Servidor: no Servidor 1.15.0 e posteriores, o Workstation 1.4.x ou anterior. | Instale a versão atual à mão ou por Política de Grupo. O Servidor não consegue atualizá-la. |
Admitida, mas não se conecta; o log do Servidor diz A workstation assertion was refused: Expired ou NotYetValid | O relógio da máquina está mais de 60 s fora. A linha traz a diferença: positiva quando a máquina está atrasada em relação ao Servidor. | A sincronização de horário da máquina. |
Conectada, mas as sessões dos titulares dela recebem WORKSTATION_OFFLINE | Para uma Aplicação Cliente com o PIN por transação ligado: a máquina roda o Workstation 1.5.0, que não consegue pedir o PIN a cada chamada. (No Servidor 1.13.0 ou 1.14.x, uma máquina na 1.4.x não recebe desafio de PIN algum.) | Ofereça a ela o Workstation 1.6.0 ou posterior. |
| Uma máquina no Workstation 1.8.0 é desconectada repetidamente por um Servidor anterior à 1.20.0 | O Relatório da Estação de Trabalho dela é maior do que o canal das estações de trabalho de um Servidor anterior aceita (32 KB), o que uma máquina com muitos tokens, middlewares ou erros pode enviar. O Workstation 1.8.1 corrigiu isso: até o Servidor aceitar um relatório numa conexão, ele mantém os relatórios abaixo de 32 KB. | Atualize o Servidor para a 1.20.0 ou posterior, que aceita até 1 MB, ou passe a máquina para o Workstation 1.8.1 ou posterior. Entregue o Workstation 1.8.0 e posteriores com o Servidor 1.20.0 ou posterior assim mesmo, o primeiro que aceita o relatório. |
Uma chamada de assinatura com PIN por transação responde PIN_NOT_AVAILABLE com no Tray at the console | A máquina não tinha um Tray App a quem perguntar: ninguém conectado ao console, um titular na Área de Trabalho Remota, nenhum Tray App em execução ali ou um anterior à 1.6.0, uma atualização sendo instalada, ou um Tray que parou de responder. | A aba Eventos da máquina diz qual, por extenso (Servidor 1.23.0), a partir do Workstation 1.9.0; o detail da linha signing.authorization-refused dela na Trilha de Auditoria também (Servidor 1.22.0). Veja Por que nenhum Tray App pôde ser consultado. O cliente não recebe nada além disso. |
A criação da sessão responde PIN_NOT_AVAILABLE, e a aba Eventos da máquina diz Não há PIN do Certificado A1 definido para o Certificado A1 na máquina. sob Pedido de PIN na criação da sessão recusado | Todo certificado que o pedido poderia oferecer naquela máquina é um Certificado A1 sem PIN do Certificado A1 definido (Workstation 1.10.0, Servidor 1.23.0). A linha pin.prompt-answered dela mostra Undeliverable com detail NO_A1_PIN. | Peça ao titular para definir um PIN do Certificado A1 para o certificado no Tray App dessa máquina. |
| A célula Conta no console de uma máquina mostra uma conta com sem Tray, ou ela aparece em Conta no console, sem Tray | Alguém está conectado ao console e nenhum Tray App roda nessa sessão, então todo pedido de PIN enviado à máquina é recusado. | Peça à pessoa na máquina para abrir o TrustBridge pelo menu Iniciar (Workstation 1.9.0 e posteriores); numa versão anterior, para fazer logoff e logon de novo. |
Depois que um pedido de PIN fechou, o ícone do Tray App sumiu, as chamadas com PIN por transação respondem PIN_NOT_AVAILABLE com no Tray at the console até o logoff, e iniciar o Tray App de novo não faz nada | Um defeito anterior ao Workstation 1.8.1: um pedido de PIN que fechava num Tray cuja janela não tinha sido aberta desde o logon encerrava o Tray, e a saída dele travava, de modo que nenhum Tray novo conseguia iniciar naquela sessão. | Faça logoff e logon de novo. Entregue o Workstation 1.8.1 ou posterior, em que um pedido que fecha não encerra mais o Tray e a saída dele não trava. |
| O Tray App do titular sumiu ou não responde | Ele foi fechado, travou, parou de responder ou foi encerrado por um reparo. | Peça ao titular para abrir o TrustBridge pelo menu Iniciar (Workstation 1.9.0 e posteriores). Ele traz para a frente a janela do Tray em execução, ou inicia um; um Tray que não responde em 5 s é encerrado e substituído, só naquela sessão do Windows, e a substituição é registrada em Error, o que chega ao Relatório da Estação de Trabalho. Antes da 1.9.0, faça logoff e logon de novo. |
| Abrir o TrustBridge pelo menu Iniciar diz O Tray App já está em execução na sua sessão do Windows, mas não está respondendo e não pôde ser fechado. | Um Tray que não responde não pôde ser encerrado, e continua em execução. | Faça logoff do Windows e logon novamente. |
| O botão Trocar de Servidor… do Tray App está desabilitado, e o endereço mostra (definido por Política de Grupo) | A URL do Servidor vem da Política de Grupo, que um reparo não conseguiria sobrepor. | Altere a URL na política. |
Todo certificado aparece como UNTRUSTED | Nenhuma licença da PKI chegou à máquina: ela está Pendente, ainda não se conectou ao Servidor, foi recusada com update the Server first, ou a própria licença do Servidor foi recusada (o console administrativo mostra um banner). Ou nenhuma âncora consegue terminar uma cadeia. | A linha do Tray App acima da lista de certificados diz qual. Admita a máquina; renove a licença no Servidor e reinicie o Servidor, e a máquina a aplica ao se reconectar. Nada configurado na máquina fornece uma licença. |
Um certificado aparece como UNTRUSTED enquanto a licença está em ordem | O emissor dele não está no conjunto de âncoras da máquina. | Confiar no emissor, no Registro de Certificados, que adiciona uma Autoridade Certificadora Confiável que chega à máquina. |
Um certificado aparece como STALE | Não foi possível baixar a LCR da AC dele por mais tempo que a janela de tolerância (24 h). | Se a máquina consegue acessar a AC. |
| Um token está conectado, mas nenhum certificado aparece | Um middleware incomum, fora da lista fornecida; ou um módulo citado em Certificates:Pkcs11:Modules que não carrega. | A aba Tokens do Tray App cita o middleware que falhou e qualquer leitora com um cartão que nenhum middleware lê. O log do serviço cita o módulo. |
| A aba Tokens diz O Windows não conseguiu iniciar uma leitora de cartão. O TrustBridge está reiniciando-a (tentativa N de M) | Uma leitora de cartão USB que o Windows deixou com falha (código de problema 10), que o Workstation 1.8.0 reinicia sozinho, até três vezes. | Aguarde alguns segundos. |
| A aba Tokens diz Uma leitora de cartão está conectada, mas o Windows não conseguiu iniciá-la. Desconecte-a e conecte-a novamente. | Os reinícios não resolveram, ou a máquina tem Certificates:RestartFailedReaders desligada. A linha da frota mostra Leitora com falha, e o Painel a conta. | Desconecte a leitora e conecte-a de novo, o que também lhe dá uma nova série de reinícios. Uma leitora que continua falhando é a própria leitora, o driver dela ou a porta USB. |
| Um e-CNPJ aparece no Tray App como não anunciado | O Servidor não aceita certificados de Empresa: é anterior à 1.13.0. | Atualize o Servidor. |
| O Tray App não aparece depois da instalação | Ele inicia no próximo login ou, depois de uma atualização, quando o novo serviço inicia. | Saia e entre de novo, abra o TrustBridge pelo menu Iniciar (Workstation 1.9.0 e posteriores), ou inicie Tray App\TrustBridge.TrayApp.exe. |
| O Tray App diz Sem conexão | Ele não conseguiu abrir o pipe do serviço: o Workstation Service está parado ou reiniciando. | sc.exe query "TrustBridge Workstation Service"; o log de eventos Aplicativo. |
| Uma alteração de política não teve efeito | O Registro é lido uma vez, na inicialização. | Restart-Service "TrustBridge Workstation Service". |
| Uma máquina perfeitamente configurada parece vazia no Registro | Um PowerShell de 32 bits redirecionado para WOW6432Node. | Use um PowerShell de 64 bits. |
Todo certificado de uma máquina aparece como ACTIVE, inclusive os de exemplo | UseLacunaTestPki ligado, ou uma seção FakeTokens no arquivo de configuração. | Remova os dois de qualquer máquina em que alguém assine. |
Por que nenhum Tray App pôde ser consultado
Quando uma máquina não consegue colocar um pedido de PIN diante do titular, ela diz por quê. Para uma
Autorização de assinatura, ela responde NO_TRAY (Workstation 1.9.0, registrado a partir do Servidor
1.22.0); para um pedido de PIN na criação da sessão, responde Undeliverable (Workstation 1.10.0,
registrado a partir do Servidor 1.23.0). O cliente recebe só PIN_NOT_AVAILABLE. O operador lê o motivo
em dois lugares:
- A aba Eventos da máquina, na tela Estações de Trabalho (Servidor 1.23.0), por extenso, com o que pedir ao titular e o código abaixo.
- A Trilha de Auditoria, como
detail.reasonna linhasigning.authorization-refusedoupin.prompt-answered, ao lado da sessão do Windows no console (consoleSessionId), das sessões em que havia um Tray App conectado (traySessionIds) e do build do Tray (trayVersion). O filtro Id da Estação de Trabalho encontra as linhas de uma máquina.
detail.reason | O que a aba Eventos diz | O que pedir |
|---|---|---|
TRAY_NOT_AT_CONSOLE | O titular não estava no console: estava na Área de Trabalho Remota, ou outro usuário tinha assumido o console. | Peça ao titular para entrar na própria máquina, não pela Área de Trabalho Remota. |
NO_TRAY_RUNNING | Nenhum Tray App estava em execução na máquina. Um Tray ainda em execução que perdeu a conexão com o serviço aparece da mesma forma. | Peça ao titular para abrir o TrustBridge pelo menu Iniciar. |
TRAY_CANNOT_SHOW_TRANSACTIONS | O Tray App em execução era antigo demais para mostrar o que estava sendo assinado. (anterior ao Workstation 1.6.0) | Peça ao titular para fechar o Tray App e abrir o TrustBridge de novo pelo menu Iniciar. |
INSTALLING_RELEASE | Uma Versão da Estação de Trabalho estava sendo instalada. | Peça ao titular para tentar de novo em alguns minutos. |
TRAY_NOT_READING | O Tray App estava em execução, mas não estava lendo, e o pedido não chegou até ele. | Peça ao titular para fechar o Tray App e abrir o TrustBridge de novo pelo menu Iniciar. |
TRAY_DETACHED | O Tray App foi fechado ou travou com o pedido na tela. | Peça ao titular para abrir o TrustBridge pelo menu Iniciar e tentar de novo. |
SERVICE_STOPPING | O Workstation Service estava parando. | Peça ao titular para tentar de novo em alguns minutos. |
NO_A1_PIN (só num pedido de PIN na criação da sessão) | Não há PIN do Certificado A1 definido para o Certificado A1 na máquina. | Peça ao titular para definir um PIN do Certificado A1 para o certificado no Tray App dessa máquina. |
Sem detail | Nenhum Tray App pôde mostrar o pedido. A máquina não disse por quê. numa Autorização de assinatura, ou O pedido não pôde ser mostrado na máquina, ou a resposta não pôde ser usada. num pedido de PIN na criação da sessão | A máquina roda uma versão anterior ao Workstation 1.9.0 (1.10.0, para um pedido na criação da sessão). A célula Conta no console dela, quando existe, diz se há um Tray em execução no console. |
Um motivo que este Servidor não conhece aparece como o código. As outras Recusas da Estação de Trabalho também aparecem por extenso: um pedido que expirou (Ninguém respondeu ao pedido de PIN a tempo.: pergunte se a tela estava bloqueada), um token bloqueado (peça ao titular para desbloqueá-lo com o PUK), um PIN que não conferiu (peça ao titular para conferi-lo antes de tentar de novo). Uma recusa do titular, uma Aplicação Cliente que desistiu de esperar e uma chamada que o titular autorizou depois de a sessão ter terminado aparecem como escolha de alguém e não contam contra a máquina.
Atualização da frota pelo Servidor
| Sintoma | O que é | O que fazer |
|---|---|---|
| Envio recusado: O pacote não está assinado | Um build de desenvolvimento. | Envie o pacote assinado da release. |
| Envio recusado: O pacote está assinado por …, um certificado que o Publisher Pin deste Servidor não lista | Não é uma release da Lacuna, ou é um pacote assinado de novo depois de sair da Lacuna. | Envie o pacote da release como a Lacuna Software o entrega. |
| Envio recusado: A assinatura do pacote não pode ser lida | Uma cópia danificada no caminho. | Baixe a release de novo. |
| Envio recusado: O pacote não declara qual protocolo fala | Uma versão do Workstation anterior à 1.3.0, ou não é um pacote do Workstation. | Envie uma versão atual. |
| Envio recusado: O pacote fala o protocolo N, e este Servidor fala o M. Atualize o Servidor primeiro | A versão é mais nova que o Servidor, por exemplo o Workstation 1.6.0 num Servidor anterior à 1.15.0. | Atualize o Servidor e depois envie. |
| Envio recusado: …este Servidor só aceita os protocolos de N a M | A versão é antiga demais para o Servidor: as máquinas que a instalassem não conseguiriam se conectar. | Envie uma versão atual. |
| Envio recusado: A versão N já está armazenada | Essa versão já está no Servidor. | Nada a fazer, ou exclua-a antes para substituí-la. |
| Envio recusado: Este Servidor não consegue gravar no seu diretório temporário | /tmp/trustbridge-releases está somente leitura ou cheio. | O log do Servidor cita o diretório e o motivo. Monte um volume em disco sobre ele: veja os diretórios temporários. |
| No App Service, um envio grande nunca termina | O envio é uma única requisição, e o front end encerra as requisições depois de cerca de quatro minutos. | Envie por um link mais rápido. |
| Uma versão não pode ser excluída | Ela está oferecida a máquinas, inclusive revogadas. | Retirar de todas, na tela Versões da Estação de Trabalho, antes. |
| Uma máquina fica de fora de uma oferta | Ela não está Admitida, já roda essa versão ou uma mais nova, está com Atualizações desativadas por política, ou Precisa de atualização manual (Workstation 1.3.0 ou anterior). | O motivo aparece ao lado do nome dela na caixa de diálogo da oferta. Atualize-a à mão ou por Política de Grupo. |
| Uma máquina informa Atualização para N falhou | O msiexec falhou ou desistiu: o painel de detalhes mostra o código de saída e o final do log dele. O código 1618 (outra instalação em andamento) é repetido pela própria máquina quinze minutos depois. | Corrija a causa na máquina e ofereça a versão de novo: uma versão que falhou nunca é tentada de novo sozinha. |
| Uma máquina informa Atualização para N recusada | Uma das verificações da máquina falhou: hash, assinatura, carimbo de tempo, Publisher Pin, revogação, produto ou versão. | A verificação aparece na linha. Uma falha de hash normalmente é um download danificado: ofereça de novo. |
| Nada acontece depois de uma oferta | A máquina espera até dez minutos antes de baixar e, depois, espera até não haver assinatura em andamento nem solicitação de PIN aberta. Downloads acima do limite do Servidor são instruídos a voltar mais tarde. | Aguarde. Uma máquina offline recebe a oferta no próximo handshake. |
Erros na aplicação cliente
Decida com base em error.code. O vocabulário completo está na página
API REST.
| Código | Causa comum | O que fazer |
|---|---|---|
401 UNAUTHORIZED | Chave ausente, digitada errado, revogada ou expirada, ou uma aplicação desativada. Todas recusadas da mesma forma. | Verifique a chave na tela Aplicações Cliente. |
401 SESSION_EXPIRED | A sessão expirou por inatividade, foi desativada, foi substituída por uma mais nova do mesmo CPF (e CNPJ), esgotou a Franquia de Assinaturas ou estava vinculada ao cofre durante um reinício do Servidor. | Crie uma nova sessão. Nada indica qual foi o caso; isso é deliberado. |
400 INVALID_REQUEST em POST /v1/sessions citando cpf ou cnpj | Os dígitos verificadores não conferem, ou é um valor de dígitos repetidos. | Corrija o valor na origem. Valide os dígitos verificadores no seu formulário. |
400 INVALID_REQUEST em POST /v1/sessions: pin is required., ou um details dizendo que mais de um certificado poderia atendê-la | Nenhum pin foi enviado. Só uma aplicação com o PIN por transação e o PIN dispensado na criação ligados pode deixá-lo de fora, e mesmo assim só onde exatamente um certificado pode atender o titular. | Envie o pin. |
400 INVALID_REQUEST em uma assinatura ou num lote | Não há sessionId na requisição. Ou, a partir do Servidor 1.15.0, um pin enviado numa sessão cujo transactionPin não é "client", ou nenhum numa sessão cujo transactionPin é. | Envie o id que POST /v1/sessions retornou; envie pin só onde transactionPin é "client". Repetir sem alterações falha da mesma forma. |
403 HASH_SIGNING_NOT_GRANTED | A Aplicação Cliente chama POST /v1/signatures/hashes sem ter recebido a Assinatura de hash. | Um Administrador liga a opção Assinatura de hash no cartão da aplicação, na tela Aplicações Cliente. |
404 CERT_NOT_FOUND | Nenhum certificado do CPF (e CNPJ) está disponível em lugar nenhum: o token não está conectado, a máquina não está admitida ou conectada, ou o CPF nunca recebeu um certificado. Para uma sessão com cnpj, também uma máquina anterior ao Workstation 1.5.0, que não anuncia e-CNPJs. | O Registro de Certificados e a tela Estações de Trabalho. |
422 CERT_NOT_ACTIVE | Todo certificado do CPF (e CNPJ) está EXPIRED, REVOKED, UNTRUSTED ou STALE. UNTRUSTED muitas vezes significa que as âncoras da implantação não cobrem o emissor, ou que a licença da PKI do Servidor foi recusada. Para uma aplicação que assina com o REST PKI Core, também um certificado em que o contexto de segurança do REST PKI Core não confia. | GET /v1/certificates/info para ver o veredito; o Registro de Certificados para ver o emissor. |
401 INVALID_PIN | Toda máquina com um certificado candidato deu uma Prova de PIN e nenhuma conferiu com o PIN enviado, e o PIN não abriu nenhum Certificado do Cofre. Normalmente um PIN errado, ou uma máquina cujo PIN em cache é outro. | Pergunte ao titular. Cinco falhas em quinze minutos bloqueiam o CPF. |
422 PIN_NOT_AVAILABLE | Nada pôde ser comparado: a solicitação no Tray expirou, foi recusada ou não havia ninguém conectado para respondê-la; um Certificado A1 sem PIN do Certificado A1 definido; um Certificado do Cofre não pôde ser aberto. Ou o details diz que provas ou senhas demais não conferiram recentemente, então a máquina ou o cofre não é consultado de novo até elas saírem da janela. Numa chamada de assinatura sob uma sessão com PIN por transação, o details é declined, timed out, no Tray at the console, token locked, no A1 PIN at the workstation ou too many calls waiting. | O details diz qual. Para uma solicitação no Tray, o titular precisa estar na máquina dele com o Tray App em execução. Um limite esgotado se resolve sozinho. too many calls waiting: envie uma chamada por vez por titular. |
422 WORKSTATION_OFFLINE | Toda máquina com um certificado ativo do CPF (e CNPJ) está offline, depois da tolerância de reconexão, em uma assinatura. Uma máquina que esgotou o limite de provas com falha para esse CPF conta como offline para a criação de sessões, e, para uma Aplicação Cliente com o PIN por transação ligado, também uma máquina no Workstation 1.5.0. | A tela Estações de Trabalho e as linhas Warning do log do Servidor que citam as máquinas ignoradas. |
422 WORKSTATION_OFFLINE com details workstation removed | A máquina da sessão, ou a que uma sessão em criação escolheu, foi removida por um Administrador. Ela não volta para essa sessão. | Crie uma nova sessão quando o certificado do titular estiver de novo numa máquina admitida. |
422 CERT_INCOMPLETE_IDENTITY | O certificado não identifica o titular o bastante para assinar em nome dele; o details cita o campo que falta. Só o Signer precisa de um endereço de e-mail: uma aplicação que assina com o REST PKI Core assina sem ele. | Se for o endereço de e-mail, envie email ao criar a sessão. Qualquer outro campo é do próprio certificado: assine com outro certificado. |
422 SIGN_TIMEOUT | A assinatura não terminou dentro de Signing:RequestBudget (60 s). Uma máquina lenta ou um Signer lento. | A tela Operações de Assinatura mostra a etapa alcançada. |
422 SIGNER_REJECTED | O Lacuna Signer foi acessado e recusou a requisição: normalmente o próprio documento, às vezes outra coisa que a requisição citou. O details traz a explicação dele. Repetir sem alterações reproduz o erro. | Leia o details e corrija o documento ou a requisição. |
422 UNSUPPORTED_DOCUMENT | Não é um PDF. Para uma aplicação que assina com o REST PKI Core, também um PDF que o REST PKI Core não consegue assinar: corrompido ou protegido por senha, ou já assinado, num plano cuja política de marcação de PDF é Always. | Envie um PDF que ele consiga assinar. |
502 SIGNER_ERROR | Não foi possível consultar o Signer: inacessível, limitando requisições ou respondendo com uma falha própria. Nada foi assinado, então o mesmo documento pode ser enviado de novo quando ele voltar. Um Signer que recusa a credencial do próprio Servidor também chega aqui. Para uma aplicação que assina com o REST PKI Core, o REST PKI Core inacessível, falhando, estourando o tempo ou sem cota no plano contratado. | A disponibilidade do Signer, Signer:BaseAddress e Signer:ApiKey; ou a do REST PKI Core, e RestPkiCore:Endpoint. |
409 DOCUMENT_NOT_READY que nunca se resolve | A assinatura ainda está em andamento, ou uma execução foi interrompida por um reinício e o Signer ainda mantém o documento aberto. | A tela Operações de Assinatura; RUN_STRANDED. |
429 SERVER_BUSY no uso normal | Throttle:ConcurrencyLimit baixo demais para a implantação; não é um problema do cliente. | Aumente-o. Em um pico real, tente de novo com backoff e jitter. |
429 TOO_MANY_PIN_ATTEMPTS | O bloqueio por CPF, qualquer que seja o cnpj enviado. | Espere a janela (15 min) passar. Tentar de novo piora a situação. |
404 ENDPOINT_NOT_FOUND | Uma rota sem o prefixo /v1. | Corrija a URL. |
413 DOCUMENT_TOO_LARGE | Acima de Signing:MaxDocumentBytes (10 MB por padrão). | Um documento menor, ou aumente o limite sabendo o que isso custa. |
500 INTERNAL_ERROR em uma assinatura, com could not be opened by the reader this platform signs with no log do Servidor | Um Certificado do Cofre importado antes de existir a verificação do formato legado, protegido com pkcs5PBES2. | Exporte de novo com openssl pkcs12 -export -legacy e importe outra vez. Isso exige o arquivo original. |
500 INTERNAL_ERROR em toda assinatura de uma aplicação que assina com o REST PKI Core | Uma chave que o REST PKI Core recusa, uma chave sem o papel Worker, um contexto de segurança que ele não tem, ou a seção RestPkiCore que não existe mais. Nada foi assinado. | A linha Error no log do Servidor diz qual. |
Resultados de assinatura na tela Operações de Assinatura
Uma operação Com falha traz um código de falha e a etapa que alcançou: o 202 do cliente pode ter
sido respondido muito antes. RUN_STRANDED significa que o Servidor foi reiniciado durante a execução
e uma varredura a encerrou. Uma execução que falhou depois de o documento chegar ao Signer deixa um
documento aberto lá, que a busca informa como 409 até que a retenção do próprio Signer ou a limpeza
o encerre como 422.
Desde o Servidor 1.23.0, a tela diz cada falha por extenso, com o que pedir ao titular, e se o token do
titular assinou. Um PIN_NOT_AVAILABLE indica o que a Estação de Trabalho respondeu: nenhum PIN
guardado (peça ao titular para digitá-lo no Tray App), um PIN que o token recusou, um token bloqueado
(o PUK dele) ou uma Autorização de assinatura que a máquina não tinha mais. Com falha (24h) agrupa
as falhas do dia por essas causas. Uma execução pendente há mais tempo do que uma execução ativa pode
durar fica destacada em cor e diz o que está esperando. Uma chamada de assinatura que a máquina recusou
não aparece aqui; ela está na aba Eventos da máquina.
Um documento assinado com o REST PKI Core registra etapas próprias, rest-pki-core-prepare e
rest-pki-core-complete. Nesse caminho, um documento só recebe o id quando o REST PKI Core o conclui,
então uma falha antes disso é uma recusa, e não um 202. Uma recusa depois de a chave do titular
assinar não garante nada em nenhum sentido: a cobrança da Franquia de Assinaturas já foi feita, e o
REST PKI Core pode ainda guardar um documento assinado que nenhum id identifica, então enviar o
documento de novo o assina de novo. Onde isso pode ter acontecido, como numa conclusão que ficou sem
resposta ou numa execução interrompida cuja conclusão já tinha começado, uma linha Error no log do
Servidor avisa.
Uma operação cujo Executada em mostra estação de trabalho removida e um id curto foi executada
numa máquina que um Administrador removeu depois; a linha admin.workstation-removed na Trilha de
Auditoria a identifica.
Como obter ajuda
Envie ao suporte da Lacuna Software o X-Correlation-Id da requisição que falhou, a versão do
Servidor exibida no menu de navegação lateral do console administrativo, a versão do pacote da estação de trabalho
mostrada na tela Estações de Trabalho e as linhas relevantes do log do Servidor. Para um problema
em uma estação de trabalho, acrescente o Relatório da Estação de Trabalho do painel de detalhes
dela na tela da frota, quando houver, os códigos que a aba Eventos mostra abaixo de cada recusa, e
as entradas do log de eventos Aplicativo com origem
TrustBridge Workstation Service. Nunca envie um PIN, uma chave de API, o Protetor do Chaveiro nem
a licença.