Comandos úteis para manipulação de certificados SSL
A ferramenta openssl
é utilizada para manipular certificados PEM e PFX (PKCS12), já a ferramenta keytool
é utilizada para manipular certificados JKS.
OPENSSL
Ferramenta que realiza diversas funções criptográficas.
Gerar
- Gerar chave RSA:
openssl genrsa -out {private.key} 2048
- Gerar uma requisição CSR com chave privada existente:
openssl req -out {request.csr} -key {private.key} -new
- Gerar uma requisição CSR com uma nova chave privada:
openssl req -out {request.csr} -new -newkey rsa:2048 -nodes -keyout {private.key}
- Gerar uma requisição CSR com uma nova chave privada sem o prompt interativo:
openssl req -out {request.csr} -newkey rsa:2048 -nodes -keyout {private.key} -subj {"/C=BR/ST=MG/L=BH/O=Security/OU=IT Department/CN=example.com"}
- Gerar uma requisição CSR com uma nova chave privada com base em arquivo de configuração do CSR:
openssl req -config {csr.conf} -new -newkey rsa:2048 -nodes -keyout {private.key} -out {request.csr}
- Gerar caracteres aleatórios:
openssl rand -hex 16
openssl rand -base64 16
Exibir
- Exibir informações da requisição CSR:
openssl req -in {request.csr} -text
- Exibir informações de um certificado PEM [base64]:
openssl x509 -inform PEM -in {certificate.pem} -text
- Exibir informações de um certificado PEM [binário]:
openssl x509 -inform DER -in {certificate.der} -text
- Exibir informações de um certificado PKCS12 [PFX ou P12]:
openssl pkcs12 -in {certificate.pfx} -passin pass:[pfx_password] -info
- Exibir fingerprint do certificado:
openssl x509 -noout -fingerprint -sha256 -inform pem -in {certificate.cer} | sed 's/://g' | tr '[:upper:]' '[:lower:]' | sed 's/sha256 fingerprint=//g'
- Exibir informações de um CRL [binário]:
openssl crl -inform DER -in {cert-revokation-list.crl} -text -noout
- Exibir informações de um CRL [base64]:
openssl crl -inform PEM -in {cert-revokation-list.crl} -text -noout
Checar
- Verificar se certificado público corresponde a chave privada comparando o hash:
openssl x509 -pubkey -noout -outform pem -in [certificate.pem] | md5
openssl pkey -pubout -outform pem -in [decrypted.key] | md5
- Verificar se certificado público corresponde a requisição CSR comparando o hash:
openssl x509 -pubkey -noout -outform pem -in [certificate.pem] | md5
openssl req -pubkey -noout -outform pem -in [request.csr] | md5
Converter
- Converter DER [binário] para PEM [base64]:
openssl x509 -in {certificate.cer} -inform der -out {certificate.pem} -outform pem
- Converter PEM - [base64] para DER [binário]:
openssl x509 -in {certificate.pem} -inform pem -out {certificate.cer} -outform der
- Converter PEM(público + privado + cadeia) para PKCS12 [PFX ou P12]:
openssl pkcs12 -export -out {certificate.pfx} -inkey {private.key} -in {certificate.cer} -certfile {chain.crt} -passout file:{password_pfx.txt}
openssl pkcs12 -export -out {certificate.pfx} -inkey {private.key} -in {certificate.cer} -certfile {chain.crt} -passin pass:[pfx_password]}
- Converter PKCS12 [PFX ou P12] para PEM:
openssl pkcs12 -in {certificate.pfx} -out {certificate.pem} -nodes
Criptografar
- Descriptografar chave privada:
openssl rsa -in [encrypted.key] -out [decrypted.key]
- Criptografar chave privada usando AES-256 - requer senha:
openssl rsa -in [decrypted.key] -out [encrypted.key] -aes256
KEYTOOL
Ferramenta para gerenciar certificados digitais
Exibir
- Obter informações do certificado JKS KEYSTORE:
keytool -list -v -keystore [Certificate.jks] -storepass {private_passwd_jks}
Converter
- Converter PKCS12 [PFX ou P12] para JKS ou KEYSTORE interativamente:
keytool -importkeystore -srckeystore [Certificate.pfx] -srcstoretype pkcs12 -destkeystore [Certificate.jks] -deststoretype JKS
- Converter PKCS12 [PFX ou P12] para JKS KEYSTORE passando senha diretamente:
keytool -importkeystore -srckeystore [Certificate.pfx] -srcstoretype pkcs12 -srcalias 1 -destkeystore [Certificate.jks] -deststoretype jks -destalias {new_alias} -deststorepass {password_jks} -srcstorepass {password_pfx}
- Converter PKCS12 [PFX ou P12] para JKS KEYSTORE passando arquivo com senha:
keytool -importkeystore -srckeystore [Certificate.pfx] -srcstoretype pkcs12 -srcalias 1 -destkeystore [Certificate.jks] -deststoretype jks -destalias {new_alias} -deststorepass:file [password_jks.txt] -srcstorepass:file [password_pfx.txt]
- Converter JKS KEYSTORE para PKCS12 [PFX ou P12]:
keytool -importkeystore -srckeystore [Certificate.jks] -srcstoretype JKS -destkeystore [Certificate.pfx] -deststoretype PKCS12
- Converter PEM - [base64] para JKS KEYSTORE:
keytool -import -trustcacerts -alias {new_alias} -file [Certificate.cer] -keystore [Certificate.jks]
Alterar
- Alterar JKS alias:
keytool -keystore [Certificate.jks] -changealias -alias {old_alias} -destalias {new_alias}
Este artigo foi originalmente publicado no Medium.