Experiência na utilização da tecnologia Rutoken para cadastro e autorização de usuários no sistema (parte 2)

Boa tarde Vamos continuar com este tópicoA parte anterior pode ser encontrada no link).

Hoje passamos para a parte prática. Vamos começar configurando nossa CA com base na biblioteca criptográfica de código aberto openSSL completa. Este algoritmo foi testado usando o Windows 7.

Com o openSSL instalado, podemos realizar diversas operações criptográficas (como criação de chaves e certificados) através da linha de comando.

O algoritmo de ações é o seguinte:

  1. Baixe a distribuição de instalação openssl-1.1.1g.
    openSSL tem versões diferentes. A documentação do Rutoken diz que o openSSL versão 1.1.0 ou mais recente é necessário. Usei a versão openssl-1.1.1g. Você pode baixar o openSSL no site oficial, mas para uma instalação mais fácil, você precisa encontrar o arquivo de instalação do Windows na rede. Eu fiz isso por você: slproweb.com/products/Win32OpenSSL.html
    Role a página para baixo e baixe o instalador Win64 OpenSSL v1.1.1g EXE 63MB.
  2. Instale o openssl-1.1.1g no computador.
    A instalação deve ser feita de acordo com o caminho padrão, que é indicado automaticamente na pasta C: Arquivos de Programas. O programa será instalado na pasta OpenSSL-Win64.
  3. Para configurar o openSSL da maneira que você precisa, existe o arquivo openssl.cfg. Este arquivo está localizado no caminho C:\Program Files\OpenSSL-Win64bin se você instalou o openSSL conforme descrito no parágrafo anterior. Vá para a pasta onde o openssl.cfg está armazenado e abra este arquivo usando, por exemplo, Notepad++.
  4. Você provavelmente adivinhou que a autoridade de certificação será configurada de alguma forma alterando o conteúdo do arquivo openssl.cfg e você está absolutamente certo. Isso requer personalização do comando [ ca ]. No arquivo openssl.cfg, o início do texto onde faremos as alterações pode ser encontrado como: [ ca ].
  5. Agora darei um exemplo de configuração com sua descrição:
    [ ca ]
    default_ca	= CA_default		
    
     [ CA_default ]
    dir		= /Users/username/bin/openSSLca/demoCA		 
    certs		= $dir/certs		
    crl_dir		= $dir/crl		
    database	= $dir/index.txt	
    new_certs_dir	= $dir/newcerts	
    certificate	= $dir/ca.crt 	
    serial		= $dir/private/serial 		
    crlnumber	= $dir/crlnumber	
    					
    crl		= $dir/crl.pem 		
    private_key	= $dir/private/ca.key
    x509_extensions	= usr_cert
    

    Agora precisamos criar o diretório e subdiretórios demoCA conforme mostrado no exemplo acima. E coloque-o neste diretório ao longo do caminho especificado em dir (eu tenho /Users/username/bin/openSSLca/demoCA).

    É muito importante escrever dir corretamente - este é o caminho para o diretório onde nosso centro de certificação estará localizado. Este diretório deve estar localizado em /Users (ou seja, na conta de algum usuário). Se você colocar este diretório, por exemplo, em C: Arquivos de Programas, o sistema não verá o arquivo com as configurações do openssl.cfg (pelo menos foi assim para mim).

    $dir - o caminho especificado em dir é substituído aqui.

    Outro ponto importante é criar um arquivo index.txt vazio, sem este arquivo os comandos “openSSL ca…” não funcionarão.

    Você também precisa ter um arquivo serial, uma chave privada raiz (ca.key), um certificado raiz (ca.crt). O processo de obtenção desses arquivos será descrito a seguir.

  6. Conectamos os algoritmos de criptografia fornecidos pela Rutoken.
    Esta conexão ocorre no arquivo openssl.cfg.

    • Primeiro de tudo, você precisa baixar os algoritmos Rutoken necessários. Estes são os arquivos rtengine.dll, rtpkcs11ecp.dll.
      Para fazer isso, baixe o Rutoken SDK: www.rutoken.ru/developers/sdk.

      O Rutoken SDK é tudo o que existe para desenvolvedores que desejam experimentar o Rutoken. Existem exemplos separados para trabalhar com Rutoken em diferentes linguagens de programação e algumas bibliotecas são apresentadas. Nossas bibliotecas rtengine.dll e rtpkcs11ecp.dll estão localizadas no SDK Rutoken, respectivamente, no local:

      sdk/openssl/rtengine/bin/windows-x86_64/lib/rtengine.dll
      sdk/pkcs11/lib/windows-x86_64/rtpkcs11ecp.dll

      Um ponto muito importante. As bibliotecas rtengine.dll, rtpkcs11ecp.dll não funcionam sem o driver instalado para Rutoken. Além disso, o Rutoken deve estar conectado ao computador. (para instalar tudo que você precisa para Rutoken, veja a parte anterior do artigo habr.com/en/post/506450)

    • As bibliotecas rtengine.dll e rtpkcs11ecp.dll podem ser mantidas em qualquer lugar da conta do usuário.
    • Escrevemos os caminhos para essas bibliotecas em openssl.cfg. Para fazer isso, abra o arquivo openssl.cfg, coloque a linha no início deste arquivo:
      openssl_conf = openssl_def

      No final do arquivo você precisa adicionar:

      [ openssl_def ]
      engines = engine_section
      [ engine_section ]
      rtengine = gost_section
      [ gost_section ]
      dynamic_path = /Users/username/bin/sdk-rutoken/openssl/rtengine/bin/windows-x86_64/lib/rtengine.dll
      MODULE_PATH = /Users/username/bin/sdk-rutoken/pkcs11/lib/windows-x86_64/rtpkcs11ecp.dll
      RAND_TOKEN = pkcs11:manufacturer=Aktiv%20Co.;model=Rutoken%20ECP
      default_algorithms = CIPHERS, DIGEST, PKEY, RAND
      

      dynamic_path - você deve especificar seu caminho para a biblioteca rtengine.dll.
      MODULE_PATH - você precisa escrever seu caminho para a biblioteca rtpkcs11ecp.dll.

  7. Adicionando variáveis ​​de ambiente.

    Certifique-se de incluir uma variável de ambiente que especifique o caminho para o arquivo de configuração openssl.cfg. No meu caso, a variável OPENSSL_CONF foi criada com o caminho C:Program FilesOpenSSL-Win64binopenssl.cfg.

    Na variável path, você deve especificar o caminho para a pasta onde está localizado o openssl.exe, no meu caso é: C: Program FilesOpenSSL-Win64bin.

  8. Agora você pode voltar para a etapa 5 e criar os arquivos ausentes para o diretório demoCA.
    1. O primeiro arquivo importante sem o qual nada funcionará é o serial. Este é um arquivo sem extensão, cujo valor deve ser 01. Você mesmo pode criar este arquivo e escrever 01 dentro. Você também pode baixá-lo do Rutoken SDK no caminho sdk/openssl/rtengine/samples/tool/demoCA /.
      O diretório demoCA contém o arquivo serial, que é exatamente o que precisamos.
    2. Crie uma chave privada raiz.
      Para fazer isso, usaremos o comando da biblioteca openSSL, que deve ser executado diretamente na linha de comando:

      openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out ca.key

    3. Criamos um certificado raiz.
      Para fazer isso, use o seguinte comando da biblioteca openSSL:

      openssl req -utf8 -x509 -key ca.key -out ca.crt

      Observe que a chave privada raiz, gerada na etapa anterior, é necessária para gerar o certificado raiz. Portanto, a linha de comando deve ser iniciada no mesmo diretório.

    Tudo agora contém todos os arquivos que faltam para a configuração completa do diretório demoCA. Coloque os arquivos criados nos diretórios indicados no ponto 5.

Assumiremos que após completar todos os 8 pontos, nosso centro de certificação estará totalmente configurado.

Na próxima parte, descreverei como trabalharemos com a autoridade certificadora para cumprir o que foi descrito em a parte anterior do artigo.

Fonte: habr.com

Adicionar um comentário