
Ferramenta de código aberto para ajudá-lo a construir uma cadeia de certificados SSL válida.
Descrição • Como Usar • Parâmetros • Como funciona • Requisitos • Outros • Licença
É uma ferramenta open source para ajudá-lo a construir uma cadeia de certificados SSL válida. Também pode ajudar a corrigir a cadeia incompleta e baixar todos os certificados CA ausentes. Você também pode baixar todos os certificados de um servidor remoto e acertar sua cadeia de certificados.
É simples:
# Clone este repositório
git clone https://github.com/trimstray/mkchain
# Entre no repositório
cd mkchain
# Instale
./setup.sh install
# Execute a aplicação
mkchain -i /data/certs -o /data/chain.crt
- o link simbólico para
bin/mkchainé colocado em/usr/local/bin- a página de manual é colocada em
/usr/local/man/man8
Fornece as seguintes opções:
Usage:
mkchain <option|long-option>
Examples:
mkchain --in Root.crt --in Intermediate1.crt --in Server.crt --out bundle_chain_certs.crt
mkchain --in /tmp/certs --out bundle_chain_certs.crt --with-root
mkchain -i Server.crt -o bundle_chain_certs.crt
mkchain -i https://incomplete-chain.badssl.com/ --with-root
Options:
--help show this message
--debug displays information on the screen (debug mode)
-i, --in add certificates to merge (file, multiple files, directory with ssl certificates
or remote domain)
-o, --out saves the result (chain) to a file
--with-root add root certificate to certificates chain
-o|--out- sem este parâmetro, omkchainsalva a cadeia de saída no diretóriomkchain/chains/.
Antes de ler, veja o artigo sobre Cadeia de Certificados SSL.
Vamos começar com a cadeia de certificados ssllabs. Eles são fornecidos junto com o mkchain e podem ser encontrados no diretório example/ssllabs.com, que adicionalmente contém o diretório all (contendo todos os certificados necessários para montar a cadeia) e o diretório server_certificate (contendo apenas o certificado do servidor).
A cadeia correta para o domínio ssllabs.com (resultado do comando openssl):
Certificate chain
0 s:/C=US/ST=California/L=Redwood City/O=Qualys, Inc./CN=ssllabs.com
i:/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2012 Entrust, Inc. - for authorized use only/CN=Entrust Certification Authority - L1K
1 s:/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2012 Entrust, Inc. - for authorized use only/CN=Entrust Certification Authority - L1K
i:/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2009 Entrust, Inc. - for authorized use only/CN=Entrust Root Certification Authority - G2
2 s:/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2009 Entrust, Inc. - for authorized use only/CN=Entrust Root Certification Authority - G2
i:/C=US/O=Entrust, Inc./OU=www.entrust.net/CPS is incorporated by reference/OU=(c) 2006 Entrust, Inc./CN=Entrust Root Certification Authority
O código acima apresenta uma cadeia completa composta por:
Certificado de Identidade (Certificado do Servidor)
emitido para ssllabs.com por Entrust Certification Authority - L1K
Certificado Intermediário
emitido para Entrust Certification Authority - L1K por Entrust Root Certification Authority - G2
Certificado Intermediário
emitido para Entrust Root Certification Authority - G2 por Entrust Root Certification Authority
Certificado Raiz (Certificado Autoassinado)
emitido para Entrust Root Certification Authority por Entrust Root Certification Authority
Neste cenário, vamos encadear todos os certificados fornecidos. Exemplo de execução da ferramenta:
Neste cenário, usamos apenas o certificado do servidor e o utilizamos para recuperar os certificados restantes necessários. Depois, como acima, combinaremos todos os certificados fornecidos. Exemplo de execução da ferramenta:
Para criar uma cadeia válida, você deve fornecer à ferramenta todos os certificados necessários (se você definir o diretório para o parâmetro -i|--in). Serão:
Isso é muito importante porque sem eles você não conseguirá determinar o início e o fim da cadeia.
Se você definir apenas um arquivo de certificado como valor de
-i|--in, omkchainbaixará automaticamente todos os certificados necessários.
No entanto, se você olhar dentro da cadeia gerada após a geração com mkchain, não encontrará o certificado raiz lá.
Por quê? Porque certificados raiz autoassinados não precisam/devem ser incluídos na configuração do servidor web. Eles não têm utilidade (os clientes sempre os ignorarão) e causam uma pequena penalidade de desempenho (latência) porque aumentam o tamanho do handshake SSL.
Se você quiser adicionar um certificado raiz à cadeia de certificados, chame o utilitário com o parâmetro --with-root.
O mkchain permite o uso de dois caminhos de certificação:
Ao gerar a cadeia de certificados, o mkchain exibe comentários com informações sobre os certificados, incluindo quaisquer erros.
Aqui está uma lista de todas as possibilidades:
A mensagem é exibida na ausência de um certificado do servidor que seja o início da cadeia. Este é um caso único porque nesta situação o mkchain encerra sua operação exibindo apenas esta informação. O certificado do servidor é o único certificado necessário para criar corretamente uma cadeia. Sem este certificado, a cadeia correta não será criada.
A situação inversa aqui - mensagem exibida quando um certificado do servidor válido é encontrado.