A sessão de Jacarta com o dispositivo não está aberta. Trabalhando em bugs, ou quais são os comentários de Jacarta

Boa tarde!. Nos últimos dois dias, tive uma tarefa interessante de encontrar uma solução para tal situação, existe um servidor físico ou virtual, no qual o conhecido CryptoPRO provavelmente está instalado. Conectado ao servidor , que é usado para assinar documentos para VTB24 DBO. Localmente no Windows 10 tudo funciona, mas na plataforma de servidor Windows Server 2016 e 2012 R2, Cryptopro não vê a chave JaCarta. Vamos descobrir qual é o problema e como corrigi-lo.

Descrição do ambiente

Há uma máquina virtual no VMware ESXi 6.5, o Windows Server 2012 R2 está instalado como sistema operacional. O servidor está executando o CryptoPRO 4.0.9944, a versão mais recente no momento. Uma chave JaCarta é conectada a partir do hub USB da rede usando a tecnologia USB over ip. Chave no sistema , mas não no CryptoPRO.

Algoritmo para resolver problemas com JaCarta

O CryptoPRO muitas vezes causa vários erros no Windows, um exemplo simples (o serviço de instalação do Windows não pôde ser acessado). É assim que fica a situação quando o utilitário CryptoPRO não vê o certificado no contêiner.

Como você pode ver no utilitário UTN Manager, a chave está conectada, é vista no sistema em cartões inteligentes como um dispositivo Microsoft Usbccid (WUDF), mas o CryptoPRO não detecta este contêiner e você não tem a oportunidade de instalar um certificado. Localmente, o token estava conectado, estava tudo igual. Começou a pensar no que fazer.

Possíveis causas com definição de contêiner

  1. Em primeiro lugar, este é um problema de driver, por exemplo, no Windows Server 2012 R2, o JaCarta deve ser listado como JaCarta Usbccid Smartcard na lista de smart card, não Microsoft Usbccid (WUDF)
  2. Em segundo lugar, se o dispositivo for visto como Microsoft Usbccid (WUDF), a versão do driver pode estar desatualizada e, por isso, seus utilitários não detectarão a unidade USB protegida.
  3. Versão legada do CryptoPRO

Como resolver o problema que o cryptopro não vê a chave USB?

Criamos uma nova máquina virtual e começamos a instalar o software tudo em sequência.

Antes de instalar qualquer software que funcione com mídia USB contendo certificados e chaves privadas. Necessário NECESSARIAMENTE desative o token, se travado localmente, desative-o, se pela rede, interrompa a sessão

  • Em primeiro lugar, atualizamos seu sistema operacional com todas as atualizações disponíveis, pois a Microsoft corrige muitos erros e bugs, incluindo drivers.
  • O segundo ponto é, no caso de um servidor físico, instalar todos os drivers mais recentes na placa-mãe e em todos os equipamentos periféricos.
  • Em seguida, instale o Cliente Unificado JaCarta.
  • Instale a versão mais recente do CryptoPRO

Instalando um único cliente JaCarta PKI

Cliente Único JaCartaé um utilitário especial da empresa Aladdin para o correto trabalho com tokens JaCarta. Você pode baixar a versão mais recente deste produto de software no site oficial ou na minha nuvem, se não funcionar no site do fabricante.

Em seguida, você descompacta o arquivo resultante e executa o arquivo de instalação para sua arquitetura Windows, eu tenho 64 bits. Vamos começar a instalar o driver Jacarta. Um único cliente Jacarta, muito fácil de instalar (LEMBRETE seu token no momento da instalação, deve estar desabilitado). Na primeira janela do assistente de instalação, basta clicar em próximo.

Aceite o contrato de licença e clique em "Avançar"

Para que os drivers do token JaCarta funcionem corretamente para você, basta realizar uma instalação padrão.

Se você escolher "Instalação personalizada", certifique-se de marcar as caixas:

  • Motoristas
  • Módulos de suporte
  • Módulo de suporte para CryptoPRO

Após alguns segundos, o Jacarta Unified Client é instalado com sucesso.

Certifique-se de reiniciar o servidor ou computador para que o sistema veja os drivers mais recentes.

Após instalar o JaCarta PKI, você precisa instalar o CryptoPRO, para isso acesse o site oficial.

https://www.cryptopro.ru/downloads

No momento, a versão mais recente do CryptoPro CSP é 4.0.9944. Execute o instalador, marque "Instalar certificados raiz" e clique em "Instalar (recomendado)"

A instalação do CryptoPRO será realizada em segundo plano, após o que você verá uma sugestão para reiniciar o navegador, mas aconselho que você reinicie completamente.

Após a reinicialização, conecte seu token USB JaCarta. Eu tenho uma conexão de rede, de um dispositivo DIGI, via . No cliente Anywhere View, minha unidade USB Jacarta está definida com sucesso, mas como Microsoft Usbccid (WUDF), e idealmente deve ser definida como JaCarta Usbccid Smartcard, mas você precisa verificar de qualquer maneira, pois tudo pode funcionar assim.

Ao abrir o utilitário "Jacarta PKI Unified Client", o token conectado não foi encontrado, o que significa que algo está errado com os drivers.

O Microsoft Usbccid (WUDF) é um driver padrão da Microsoft que é instalado por padrão em vários tokens, e acontece que tudo funciona, mas nem sempre. O sistema operacional Windows, por padrão, os considera por sua arquitetura e configurações, eu pessoalmente não preciso disso no momento. O que fazemos é desinstalar os drivers Microsoft Usbccid (WUDF) e instalar os drivers para a mídia Jacarta.

Abra o Gerenciador de dispositivos do Windows, encontre "Leitoras de cartão inteligente", clique em Microsoft Usbccid (WUDF) e selecione "Propriedades". Clique na guia Drivers e clique em Desinstalar

Concorde em remover o driver Microsoft Usbccid (WUDF).

Você será notificado de que para que as alterações entrem em vigor, você precisa reiniciar o sistema, certifique-se de concordar.

Após reiniciar o sistema, você pode ver a instalação do dispositivo ARDS Jacarta e dos drivers.

Abra o gerenciador de dispositivos, você deve ver que seu dispositivo agora está definido como JaCarta Usbccid Smartcar e se você for em suas propriedades, verá que o smart card jacarta agora está usando o driver versão 6.1.7601 do ALADDIN RDZAO, como deveria ser .

Se você abrir um único cliente Jacarta, verá sua assinatura eletrônica, o que significa que o cartão inteligente foi identificado corretamente.

Abrimos o CryptoPRO e vemos que o cryptopro não vê o certificado no contêiner, embora todos os drivers sejam definidos conforme necessário. Há mais um recurso.

  1. Na sessão RDP, você não verá seu token, apenas localmente, é assim que o token funciona ou não encontrei como corrigi-lo. Você pode tentar as sugestões para resolver o erro "Não é possível conectar-se ao serviço de gerenciamento de cartão inteligente".
  2. Você precisa desmarcar uma caixa de seleção no CryptoPRO

DEVE desmarcar "Não usar conjuntos de cifras desatualizados" e reinício.

Após essas manipulações, o CryptoPRO viu meu certificado e o cartão inteligente jacarta começou a funcionar, você pode assinar documentos.

Você também pode ver seu dispositivo JaCarta em Dispositivos e Impressoras,

Se você, como eu, tiver o token jacarta instalado na máquina virtual, terá que instalar o certificado pelo console da máquina virtual e também conceder direitos ao responsável. Se este for um servidor físico, você terá que dar direitos à porta de controle, que também possui um console virtual.

Quando você tiver instalado todos os drivers para tokens Jacarta, poderá ver a seguinte mensagem de erro ao se conectar via RDP e abrir o utilitário Jacarta PKI Unified Client:

  1. O serviço de cartão inteligente não está sendo executado na máquina local. A arquitetura da sessão RDP desenvolvida pela Microsoft não prevê o uso de mídia de chave conectada ao computador remoto, portanto, na sessão RDP, o computador remoto usa o serviço de cartão inteligente do computador local. Segue-se disso que iniciar o serviço de cartão inteligente dentro de uma sessão RDP não é suficiente para operação normal.
  2. O serviço de gerenciamento de cartão inteligente no computador local está em execução, mas não está disponível para o programa dentro da sessão RDP devido às configurações do Windows e/ou cliente RDP.\

Como corrigir o erro "Não é possível conectar ao serviço de gerenciamento de cartão inteligente".

  • Inicie o serviço de cartão inteligente na máquina local a partir da qual você está iniciando a sessão de acesso remoto. Configure-o para iniciar automaticamente quando o computador for iniciado.
  • Permitir o uso de dispositivos e recursos locais durante a sessão remota (em particular, cartões inteligentes). Para isso, na caixa de diálogo "Remote Desktop Connection", selecione a guia "Local Resources" nas configurações, depois no grupo "Local Devices and Resources", clique no botão "Details..." e na caixa de diálogo que abre, selecione o item "Cartões inteligentes" e clique em "OK" e depois em "Conectar".

  • Certifique-se de que as configurações de conexão RDP estejam salvas. Por padrão, eles são salvos no arquivo Default.rdp no diretório "Meus Documentos" Certifique-se de que a linha "redirectsmartcards: i: 1" esteja presente neste arquivo.
  • Certifique-se de que a política de grupo não esteja ativada no computador remoto ao qual você está fazendo uma conexão RDP
    -[Configuração do Computador\Modelos Administrativos\Componentes do Windows\Serviços de Área de Trabalho Remota\Host de Sessão de Área de Trabalho Remota\Redirecionamento de Dispositivo e Recursos\Não permitir redirecionamento de leitor de cartão inteligente]. Se estiver ativado (Ativado), desative-o e reinicie o computador.
  • Se você tiver o Windows 7 SP1 ou Windows 2008 R2 SP1 instalado e estiver usando o RDC 8.1 para se conectar a computadores que executam o Windows 8 e superior, será necessário instalar uma atualização do sistema operacional https://support.microsoft.com/en-us /kb/2913751

Aqui estava a solução de problemas para configurar o token Jacarta, CryptoPRO no servidor de terminal, para assinar documentos no VTB24 RBS. Se você tiver comentários ou correções, escreva-os nos comentários.

A mídia Jacarta PKI/GOST é bloqueada por várias tentativas de inserir o código PIN errado. Nesse caso, a conexão com o servidor FSRAR é perdida e os dados das faturas não entram no seu sistema contábil. Como desbloquear rapidamente a chave e restaurar o trabalho com EGAIS?

Por padrão, as seguintes senhas são definidas em todas as novas mídias:

PKI 11 11 11 11
Administrador de PKI 00 00 00 00
GOST 0987654321
Administrador GOST 1234567890

Para desbloquear o computador, o programa Jacarta Unified Client deve estar instalado. Se a configuração e instalação do EGAIS foi realizada pelos nossos especialistas, então já possui este programa.

Execute o programa e espere até que as informações sobre a mídia Jacarta PKI/GOST apareçam na janela Unified Client.

Desbloquear GOST

A seção GOST contém um certificado QEP emitido por uma autoridade de certificação. tome cuidado- você não pode remover nenhum componente desta seção. Após a exclusão, você terá que se inscrever novamente na autoridade de certificação para emitir a chave.

Para desbloquear o código PIN GOST, no menu superior “Operações do aplicativo”, selecione o primeiro item “Desbloquear código PIN do usuário”. Uma notificação aparecerá na tela informando que o desbloqueio redefinirá o contador de tentativas de entrada incorretas.

Clique em "OK" e na janela recém-aberta digite código PIN de administrador Jacarta GOST 1234567890. Depois de redefinir o contador de erros, digite o código PIN de usuário padrão GOST 0987654321.

Importante: este procedimento apenas ajudará a zerar o contador, mas não alterará a senha esquecida por uma nova. Se você alterou a senha padrão do GOST e a esqueceu, terá que inicializar e escrever a chave novamente na autoridade de certificação.

Desbloquear PKI

O contêiner PKI contém uma chave RSA, que é gerada em sua conta no site egais.ru. Em caso de perda do código PIN, esta seção pode ser inicializada (completamente limpa), pois você mesmo pode reescrever a chave gratuitamente, sem entrar em contato com uma autoridade de certificação.

Todas as funções da implementação do padrão PKCS#11 retornam vários códigos de erro. Todos os códigos de erro retornados são divididos em dois grandes grupos:

Todas as funções da implementação do padrão PKCS#11 retornam códigos de erro especiais (definidos pelo fabricante).

Todas as funções da implementação da extensão padrão PKCS#11 retornam códigos de erro especiais (definidos pelo fabricante).

Códigos de erro padrão

Devido às peculiaridades da implementação das bibliotecas rtPKCS11 e rtPKCS11ECP, algumas funções padrão podem retornar um código de erro padrão PKCS#11 que não está incluído na lista de válidos para esta função. Esta situação é uma exceção. Os códigos de erro padrão retornados por cada função em situações excepcionais são listados na descrição de cada função separadamente.

A Tabela 2.29 lista os códigos de erro padrão PKCS#11 e suas descrições suportadas pelos dispositivos Rutoken. Informações detalhadas sobre cada código de erro podem ser encontradas no padrão (inglês) ou no apêndice (russo).

tabela2.29 . Códigos de erro padrão

Erro de código

Descrição

CKR_ARGUMENTS_BAD

Argumento inválido

CKR_ATTRIBUTE_READ_ONLY

Não é possível definir ou alterar o valor do atributo por aplicativo

CKR_ATTRIBUTE_SENSITIVE

Atributo não legível

CKR_ATTRIBUTE_TYPE_INVALID

Tipo de atributo incorreto

CKR_ATTRIBUTE_VALUE_INVALID

Valor de atributo incorreto

CKR_BUFFER_TOO_SMALL

O tamanho do buffer especificado é insuficiente para exibir os resultados da execução da função

A biblioteca não suporta bloqueio para proteger encadeamentos; retornado apenas quando a função é chamada C_Inicializar

CKR_CRYPTOKI_ALREADY_INITIALIZED

A biblioteca já foi inicializada (a chamada de função anterior C_Inicializar não foi seguido por uma chamada de função correspondente C_Finalizar); retornado apenas quando a função é chamada C_Inicializar

CKR_CRYPTOKI_NOT_INITIALIZED

A função não pode ser executada porque a biblioteca não foi inicializada; é retornado apenas quando qualquer função é chamada, exceto C_Inicializar E C_Finalizar

CKR_DATA_INVALID

Dados de entrada incorretos para realizar uma operação criptográfica

CKR_DATA_LEN_RANGE

Os dados de entrada não têm o tamanho correto para realizar uma operação criptográfica

CKR_DEVICE_ERROR

Erro ao acessar token ou slot

CKR_DEVICE_MEMORY

Memória de token insuficiente para executar a função solicitada

CKR_DEVICE_REMOVED

O token foi removido do slot enquanto a função estava em execução

CKR_DOMAIN_PARAMS_INVALID

Parâmetros de domínio incorretos ou não suportados passados ​​para a função

CKR_ENCRYPTED_DATA_INVALID

Dados criptografados incorretamente foram enviados para a operação de descriptografia

CKR_ENCRYPTED_DATA_LEN_RANGE

Dados criptografados de tamanho incorreto passados ​​para operação de descriptografia

CKR_FUNCTION_CANCELED

A função foi interrompida

CKR_FUNCTION_FAILED

Ocorreu um erro ao executar uma função

CKR_FUNCTION_NOT_SUPPORTED

A função solicitada não é suportada pela biblioteca

CKR_FUNCTION_REJECTED

A solicitação de assinatura foi rejeitada pelo usuário

CKR_GENERAL_ERROR

Erro crítico relacionado ao hardware

Não há memória suficiente para executar a função na estação de trabalho onde a biblioteca está instalada

CKR_KEY_FUNCTION_NOT_PERMITTED

Atributos de chave não permitem operação

CKR_KEY_HANDLE_INVALID

Um identificador de chave inválido (identificador) foi passado para a função

CKR_KEY_NOT_WRAPPABLE

Não foi possível criptografar a chave

CKR_KEY_SIZE_RANGE

Tamanho de chave inválido

CKR_KEY_TYPE_INCONSISTENT

O tipo de chave não corresponde a este mecanismo

CKR_KEY_UNEXTRACTABLE

A chave não pode ser criptografada porque o atributo CKA_UNEXTRACTABLE está definido como CK_TRUE

CKR_MECHANISM_INVALID

Mecanismo incorreto especificado para executar uma operação criptográfica

CKR_MECHANISM_PARAM_INVALID

Parâmetros de mecanismo incorretos especificados para executar uma operação criptográfica

CKR_NEED_TO_CREATE_THREADS

O programa não suporta métodos internos do sistema operacional para criar novos threads

CKR_OBJECT_HANDLE_INVALID

Identificador de objeto incorreto (identificador) passado para a função

CKR_OPERATION_ACTIVE

A operação não pode ser executada porque a operação já está em andamento

CKR_OPERATION_NOT_INITIALIZED

Não foi possível realizar a operação nesta sessão

PIN expirado

CKR_PIN_INCORRECT

Um código PIN passado para a função não corresponde ao armazenado no token

O valor do PIN contém caracteres inválidos

CKR_PIN_LEN_RANGE

Comprimento do PIN inválido

CKR_RANDOM_NO_RNG

Este token não suporta geração de números aleatórios

CKR_SESSION_CLOSED

A sessão foi fechada enquanto a função estava em execução

CKR_SESSION_COUNT

O número máximo de sessões abertas para este token foi atingido

CKR_SESSION_EXISTS

A sessão com o token já está aberta e, portanto, o token não pode ser inicializado

CKR_SESSION_HANDLE_INVALID

ID de sessão inválido (identificador) passado para a função

CKR_SESSION_PARALLEL_NOT_SUPPORTED

Este token não suporta sessões paralelas

CKR_SESSION_READ_ONLY

Não é possível executar a ação porque é uma sessão de R/O

CKR_SESSION_READ_WRITE_SO_EXISTS

Uma sessão R/W já está aberta, portanto não é possível abrir uma sessão R/O

CKR_SIGNATURE_INVALID

Valor EDS inválido

CKR_SIGNATURE_LEN_RANGE

O valor EDS está incorreto em comprimento

CKR_SLOT_ID_INVALID

O slot com o ID fornecido não existe

CKR_TEMPLATE_INCOMPLETE

Não há atributos suficientes para criar um objeto

CKR_TEMPLATE_INCONSISTENT

Os atributos dados se contradizem

CKR_TOKEN_NOT_PRESENT

Token não está no slot durante a chamada de função

CKR_UNWRAPPING_KEY_HANDLE_INVALID

Um identificador incorreto (identificador) da chave de descriptografia foi passado para a função

CKR_UNWRAPPING_KEY_SIZE_RANGE

Tamanho da chave de descriptografia inválido

CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT

O tipo de chave de descriptografia não corresponde a este mecanismo

CKR_USER_ALREADY_LOGGED_IN

CKR_USER_ANOTHER_ALREADY_LOGGED_IN

CKR_USER_NOT_LOGGED_IN

CKR_USER_PIN_NOT_INITIALIZED

PIN do usuário não inicializado

CKR_USER_TOO_MANY_TYPES

CKR_USER_TYPE_INVALID

Tipo de usuário inválido especificado

CKR_WRAPPED_KEY_INVALID

Chave criptografada inválida especificada

CKR_WRAPPED_KEY_LEN_RANGE

Comprimento da chave criptografada especificado incorretamente

CKR_WRAPPING_KEY_HANDLE_INVALID

Um identificador incorreto (identificador) da chave de criptografia foi passado para a função

CKR_WRAPPING_KEY_SIZE_RANGE

Tamanho da chave de criptografia inválido

CKR_WRAPPING_KEY_TYPE_INCONSISTENT

O tipo de chave de criptografia não corresponde a este mecanismo

Códigos de erro especiais

A Tabela 2.30 lista todos os códigos de erro estendidos PKCS #11 junto com suas descrições. Os códigos de erro estendidos podem retornar funções padrão e funções de extensão.

Tabela 2.30. Códigos de erro padrãoPKCS #11 suportado por dispositivos Rutoken

Erro de código

Descrição

CKR_CORRUPTED_MAPFILE

Este erro é retornado quando o arquivo MAP está corrompido (ao ler o arquivo MAP, a tag de cabeçalho do arquivo MAP (2 bytes) foi considerada inválida)

CKR_RTPKCS11_DATA_CORRUPTED

Este erro é retornado se uma violação de integridade de dados foi detectada no token (ao ler um arquivo contendo um objeto PKCS#11, a tag de cabeçalho do objeto (2 bytes) foi considerada inválida)

CKR_WRONG_VERSION_FIELD

Este erro é retornado se o arquivo contendo o objeto PKCS#11 tiver uma versão inválida (ao ler qualquer arquivo (arquivo MAP ou arquivo contendo o objeto PKCS#11), a versão do cabeçalho (4 bytes) foi considerada inválida)

CKR_WRONG_PKCS1_CODIFICAÇÃO

Este erro é retornado se a mensagem descriptografada não estiver no formato correto.

CKR_RTPKCS11_RSF_DATA_CORRUPTED

Este erro é retornado se uma tentativa de usar o arquivo RSF falhar.

Descrição do problema. Para trabalhar com EGAIS, é utilizada a transportadora JaCarta PKI/GOST/SE. Muitas vezes, uma das partições está bloqueada (a partição PKI). Neste caso, é impossível continuar a trabalhar com o EGAIS.

Motivo do bloqueio– acesso frequente do módulo de transporte universal ao transportador JaCarta. Com dez tentativas de autorização malsucedidas, a mídia bloqueia a partição e exclui trabalhos adicionais.

Existem duas maneiras de resolver o problema:

  1. Entre em contato com a autoridade de certificação que emitiu a mídia.
  2. Desbloqueie a mídia JaCarta por conta própria de acordo com as instruções.
Instruções sobre o exemplo do Microsoft Windows 10.

Instruções passo a passo sobre como desbloquear uma partição PKI

Etapa 1: alternar para o modo de administrador

No menu Iniciar, encontre o aplicativo JaCarta Unified Client e abra-o.

Arroz. 1. Único cliente JaCarta

A área de trabalho do programa será aberta.

Arroz. 2. Mude para o modo de administração

A área de trabalho do programa será aberta. Se a seção PKI estiver bloqueada, a guia PKI ficará vermelha.

Arroz. 3. Informações sobre o token

Etapa 2: Verificando o bloqueio PKI na partição

Para entender que a seção PKI está realmente bloqueada, clique no link "Informações completas..." na aba "Informações do token".

"Informações detalhadas sobre o token" serão abertas. Na nova janela, localize a seção "Informações do aplicativo PKI". Se o status na linha "Código PIN" for "Bloqueado", feche a janela e prossiga para o próximo parágrafo da instrução.

Arroz. 4. Informações detalhadas sobre o token

Passo 3Desbloqueie a partição PKI

Vá para a guia "PKI". No painel Ações do aplicativo, selecione a opção Desbloquear PIN do usuário....

A janela "Desbloqueio do PIN do usuário" será aberta, na qual você poderá especificar:

  1. O PIN de administrador atual é 00000000 por padrão;
  2. O novo PIN de usuário é 11111111 por padrão;
  3. Confirmação do código (ou seja, o código PIN do usuário).

Arroz. 6. Desbloqueio do PIN do usuário

Depois de especificar os códigos PIN, clique em "Executar".

Se tudo for digitado corretamente, uma notificação aparecerá. Clique em "OK" para concluir.

Arroz. 7. Notificação de desbloqueio bem-sucedido

Vá para a guia "Informações do token" e clique no link "Informações completas" para verificar o status atual do aplicativo PKI. O status deve ser "Instalado".

Arroz. 8. Verificação de status

Se o status mudou, o desbloqueio está completo.