Como gerar um certificado de Homologação [Linux + OpenSSL]

O guia abaixo é exclusivo para a geração de certificados digitais de homologação, para permitir que órgãos validem funcionalmente a integração de seus sistemas com o Novo SIAFI - Homologação Externa.
 
1 - Solicitar um certificado
 
1.2 - Navegar no seguinte fluxo: 'Meu Certificado -> Solicitar -> Equipamento';
1.2.1 - Acionar o link 'Equipamento A1 (Institucional)' caso o seu Órgão tenha contrato com o SERPRO para emissão de certificados;
1.2.2 - Acionar o link 'Certificado de Equipamento A1 - R$ XXX,XX' caso o seu Órgão não tenha contrato com o SERPRO para emissão de certificados;
1.3 - Preencher o Formulário de Solicitação para Certificado Digital - Equipamento A1;
1.3.1 - No campo '* URL' preencher com o DNS ou Nome da aplicação. O usuário não poderá usar o caracter barra invertida "/" neste campo;
1.4 - Após finalizada a solicitação o sistema irá exibir informações detalhadas dos procedimentos adicionais que deverão ser realizados para a emissão do Certificado Digital. 
1.4.1- Envie um e-mail para criarcertificadohomologacao@serpro.gov.br com o seguinte texto: 
 
Solicito a geração de certificado digital para testes. 
 
Número de Referência do Pedido: <numero> 
Tipo de Certificado: Equipamento A1
Ambiente da Solicitação: https://certificadoshom.serpro.gov.br/arserpro/
Sistema: <sistema> 
Funcionalidade: ex. Restabelecer Compromisso, Estornar Compromisso, ...
Órgão SIAFI: ex. 12801 TRIBUNAL REGIONAL FEDERAL - 1A REGIAO
 
1.4.1.1 - <numero> é o número da solicitação obtido no passo 1.4. 
1.4.1.2 - <sistema> é o nome do sistema a ser integrado com o siafi informado no campo '* URL';
 
 
2- Preparar o ambiente para geração do par de chaves 
 
Observação: As instruções a seguir foram baseadas em um ambiente Linux utilizando OpenSSL e Keytool.
 
Dica 1: Realize todo o processo em uma mesma máquina/servidor. 
Dica 2: Se você não tem familiaridade com este processo, crie uma senha única para informar sempre que for solicitado. 
Dica 3: Crie senhas com caracteres especiais e números.
 
2.1 - Localize em seu diretório de arquivos a pasta que cotenha o arquivo 'openssl.cnf'
2.1.1 - Normalmente fica em: '/usr/lib/ssl' ou '/etc/ssl';
2.1.2 - Se não estiver nesses locais, vá até o sistema de arquivos (pasta raiz) e pesquise por 'openssl.cnf' na lupa de pesquisa do sistema operacional.
2.2 - Verifique nas propriedades do arquivo qual é a sua localização ou faça uma cópia deste arquivo para uma pasta de sua preferência.
 
 
3- Gerar requisição para Autoridade de Registro (.CSR)
 
3.1 - Abra a linha de comando (shell) e navegue até a pasta onde está o arquivo 'openssl.cnf';
3.2 - Ao chegar na pasta do arquivo 'openssl.cnf' digite o comando abaixo para gerar ao mesmo tempo a sua chave privada '<chave>.key' e o arquivo com a requisição a ser informada no momento da instalação do certificado no site da Autoridade de Registro 'requisicao.csr':
3.2.1 - openssl req -newkey rsa:2048 -keyout <chave>.key -keyform PEM -SHA512 -out requisicao.csr -config openssl.cnf
3.2.2 - substitua '<chave>' por um nome desejado para a sua chave privada, de preferência o nome do sistema que consumirá os serviços do Novo SIAFI;
3.3 - O terminal solicitará uma senha para acesso à sua chave pridada;
3.3.1 - 'Enter PEM pass phrase:' e 'Verifying - Enter PEM pass phrase:'. Preencha com uma senha e guarde-a pois será utilizada futuramente.
3.4 - O terminal solicitará que você insira uma série de informações que serão incorporadas em sua solicitação de certificado. A única informação necessária para a Autoridade de Registro do SERPRO é o campo 'Common Name' que deverá ser preenchido com a mesma informação adicionada no campo '* URL' do Formulário de Solicitação para Certificado Digital - Equipamento A1 (Institucional) [Passo 1.3].
3.4.1 - Para as demais perguntas basta teclar <ENTER> sem informar nenhuma informação que o site da Autoridade de Registro completará com as informações atualizadas retiradas do Formulário de Solicitação para Certificado Digital;
3.5 - Após a execução do passo 3.4 serão gerados dois arquivos na mesma pasta que está armazenado o arquivo 'openssl.cnf':
3.5.1 - <chave>.key - sua chave privada.
3.5.2 - requisicao.csr - arquivo com o conteúdo a ser informado no site da Autoridade de Registro no momento da instalação;
3.6 - Aguarde o e-mail da Autoridade de Registro informando que o seu certificado está aprovado.
 
4 - Instalar um certificado
 
4.1 - Uma vez que a solicitação de certificado já foi aprovada por uma Autoridade de Registro (A Autoridade de Registro envia um e-mail informando a aprovação), o último passo para a obtenção do Certificado Digital é a instalação. 
4.3 - Acessar o menu "Meu Certificado → Instalar"
4.3.1 - Neste ponto o solicitante deverá apresentar suas credenciais de acesso e em seguida será apresentada a tela para instalação/download do seu Certificado Digital.
4.4 - Na tela de instalação do certificado, informar no único campo texto da tela o conteúdo do arquivo gerado no passo 3.5.2 'requisicao.csr' e acione o botão 'Salvar Certificado';
4.5 - O site disponibilizará um arquivo com o nome da URL informada e extensão .p7b '<sistema>.p7b'. Este arquivo contém a sua chave pública assinada e a cadeia confiável da Autoridade de Registro;
4.5.1 - Salve-o na mesma pasta do arquivo 'openssl.cnf';
 
5- Preparação e Montagem do certificado digital para utilização pela aplicação cliente
 
5.1 - Abra a linha de comando (shell) e navegue até a pasta onde está o arquivo 'openssl.cnf';
5.2 - Ao chegar na pasta do arquivo 'openssl.cnf' digite os comandos abaixo nesta respectiva ordem:
5.3.1 - openssl pkcs7 -print_certs -in <sistema>.p7b -out <sistema>.cer (Converte o arquivo .p7b para um arquivo de chaves concatenadas);
5.3.2 - openssl pkcs12 -export -in <sistema>.cer -inkey <chave>.key -out <sistema>.pfx (Exporta em um arquivo único a sua chave privada, a chave pública e a cadeia da Autoridade de Registro. Esse arquivo será importante para teste do cadastro no Novo SIAFI);
5.3.3 - keytool -importkeystore -srckeystore <sistema>.pfx -destkeystore <sistema>.keystore -deststoretype JKS -srcstoretype PKCS12 (Cria uma keystore e importa todas as chaves e cadeias criadas neste roteiro para dentro da keystore. Esse arquivo é utilizado por muitas aplicações clientes);
5.4 – Ao final deste processo, na pasta onde está o arquivo 'openssl.cnf', teremos os seguintes arquivos:
5.4.1 - openssl.cnf
5.4.2 - requisicao.csr
5.4.3 - <sistema>.p7b
5.4.4 - <sistema>.cer
5.4.5 - <sistema>.pfx
5.4.6 - <sistema>.keystore