Experiência na aplicação da tecnologia Ruthtoken para registro e autenticação de usuários no sistema (parte 2)

Bom dia! Vamos continuar a explorar este tema (Você pode revisar a parte anterior clicando no link).

Hoje vamos passar para a parte prática. Começaremos configurando nosso próprio centro de certificação baseado em uma biblioteca criptográfica de código aberto chamada openSSL. Este algoritmo foi testado usando o Windows 7.

Depois de instalar o openSSL, podemos executar várias operações criptográficas (por exemplo, criação de chaves e certificados) através do prompt de comando.

Os passos a seguir são os seguintes:

  1. Baixe o instalador openssl-1.1.1g.
    Existem várias versões do openSSL. Na documentação do Rutoken foi mencionado que é necessária a versão openSSL 1.1.0 ou superior. Eu utilizei a versão openssl-1.1.1g. Você pode baixar o openSSL no site oficial, mas para uma instalação mais simples, é necessário encontrar o arquivo de instalação para Windows na internet. Eu fiz isso por você: slproweb.com/products/Win32OpenSSL.html
    É necessário rolar para baixo na página e baixar o Win64 OpenSSL v1.1.1g EXE 63MB Installer.
  2. Instale o openssl-1.1.1g no computador.
    A instalação deve ser realizada no caminho padrão, que é automaticamente indicado para a pasta C:Program Files. O programa será instalado na pasta OpenSSL-Win64.
  3. Para configurar o openSSL conforme necessário, existe o arquivo openssl.cfg. Este arquivo está localizado no caminho C:Program FilesOpenSSL-Win64bin se você instalou o openSSL conforme mencionado anteriormente. Acesse a pasta onde está o openssl.cfg e abra este arquivo com, por exemplo, o Notepad++.
  4. Você provavelmente adivinhou que a configuração do centro de certificação será feita modificando o conteúdo do arquivo openssl.cfg, e você está absolutamente certo. Para isso, é necessário configurar o comando [ ca ]. No arquivo openssl.cfg, você pode encontrar o início do texto onde faremos as alterações como: [ ca ].
  5. Agora vou fornecer 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 é necessário criar o diretório demoCA e os subdiretórios, conforme mostrado no exemplo acima. E colocar neste diretório o caminho indicado em dir (para mim é /Users/username/bin/openSSLca/demoCA).

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

    $dir - aqui deve ser inserido o caminho que é indicado no dir.

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

    Também é necessário ter o arquivo serial, a chave privada raiz (ca.key), o certificado raiz (ca.crt). O processo de obtenção desses arquivos será descrito a seguir.

  6. Conectamos os algoritmos de criptografia fornecidos pelo Rutoken.
    Essa conexão ocorre no arquivo openssl.cfg.
    • Antes de tudo, é necessário baixar os algoritmos necessários do Rutoken. Esses são os arquivos rtengine.dll, rtpkcs11ecp.dll.
      Para isso, baixe o Rutoken SDK: www.rutoken.ru/developers/sdk.

      O Rutoken SDK é tudo o que existe para desenvolvedores que desejam experimentar o Rutoken. Há exemplos separados para trabalhar com o Rutoken em diferentes linguagens de programação, bem como algumas bibliotecas. Nossas bibliotecas rtengine.dll e rtpkcs11ecp.dll podem ser encontradas no SDK do Rutoken nos seguintes caminhos:

      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 o Rutoken. Além disso, o Rutoken deve estar conectado ao computador. (veja sobre a instalação de tudo o necessário para o Rutoken na parte anterior do artigo habr.com/ru/post/506450)

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

      No final do arquivo, adicione:

      [ 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=AktivCo.;model=RutokenECP
      default_algorithms = CIPHERS, DIGEST, PKEY, RAND
      

      dynamic_path - você deve definir seu próprio caminho para a biblioteca rtengine.dll.
      MODULE_PATH - você deve definir seu próprio caminho para a biblioteca rtpkcs11ecp.dll.

  7. Adicionamos variáveis de ambiente.

    É imprescindível adicionar uma variável de ambiente que indica o caminho para o arquivo de configuração openssl.cfg. No meu caso, foi criada a variável OPENSSL_CONF com o caminho C:Program FilesOpenSSL-Win64binopenssl.cfg.

    Na variável path, deve-se indicar o caminho da pasta onde está o openssl.exe; no meu caso, é: C:Program FilesOpenSSL-Win64bin.

  8. Agora podemos voltar ao item 5 e criar os arquivos faltantes 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. É possível criar este arquivo manualmente e escrever 01 dentro. Também é possível baixá-lo do SDK do Рутокен no caminho sdk/openssl/rtengine/samples/tool/demoCA/.
      No diretório demoCA está o arquivo serial, que precisamos.
    2. Estamos criando a chave privada raiz.
      Para isso, vamos usar o comando da biblioteca openSSL, que deve ser executado diretamente no prompt de comando:
      openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out ca.key

    3. Estamos criando o certificado raiz.
      Para isso, vamos usar o seguinte comando da biblioteca openSSL:
      openssl req -utf8 -x509 -key ca.key -out ca.crt

      Note que para criar o certificado raiz é necessária a chave privada raiz que foi criada na etapa anterior. Portanto, o prompt de comando deve ser executado no mesmo diretório.

    Agora temos todos os arquivos faltantes para a configuração completa do diretório demoCA. Coloque os arquivos criados nos diretórios indicados no item 5.

Consideraremos que, após a execução de todos os 8 itens, nosso centro de certificação está completamente configurado.

Na próxima parte, eu explicarei como iremos trabalhar com o centro de certificação para executar o que foi descrito na parte anterior do artigo.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster