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 vê, 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
- 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)
- 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.
- 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.
- 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".
- 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:
- 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.
- 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:
- Entre em contato com a autoridade de certificação que emitiu a mídia.
- 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:
- O PIN de administrador atual é 00000000 por padrão;
- O novo PIN de usuário é 11111111 por padrão;
- 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.