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:
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.
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.
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++.
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 ].
Agora darei um exemplo de configuração com sua descrição:
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.
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:
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:
dynamic_path - você deve especificar seu caminho para a biblioteca rtengine.dll.
MODULE_PATH - você precisa escrever seu caminho para a biblioteca rtpkcs11ecp.dll.
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.
Agora você pode voltar para a etapa 5 e criar os arquivos ausentes para o diretório demoCA.
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.
Crie uma chave privada raiz.
Para fazer isso, usaremos o comando da biblioteca openSSL, que deve ser executado diretamente na linha de comando:
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.