Bom dia! Vamos continuar a explorar este tema ().
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:
- 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ê:
É necessário rolar para baixo na página e baixar o Win64 OpenSSL v1.1.1g EXE 63MB Installer. - 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. - 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++.
- 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 ].
- 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_certAgora é 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.
- 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: .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.dllUm 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 )
- 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_defNo 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, RANDdynamic_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.
- Antes de tudo, é necessário baixar os algoritmos necessários do Rutoken. Esses são os arquivos rtengine.dll, rtpkcs11ecp.dll.
- 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.
- Agora podemos voltar ao item 5 e criar os arquivos faltantes 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. É 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. - 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 - Estamos criando o certificado raiz.
Para isso, vamos usar o seguinte comando da biblioteca openSSL:openssl req -utf8 -x509 -key ca.key -out ca.crtNote 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.
- 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/.
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 .
Fonte: habr.com
