Convertendo PKCS12 para PEM
Cenário
Pedi o certificado do cliente e ele me mandou um aquivo em formato PKCS12, e ainda por cima com senha :)
Eu preciso usar esse cert em NGINX e sem a senha de preferência.
Esse é o típico post nota mental para não ter que memorizar esses comandos.
Como Faz para separar tudo?
Primeiro vamos extrair a chave privada do arquivo P12 para formato PEM
openssl pkcs12 -in certificate.p12 -nocerts -out certificate.key
Agora vamos extrair o certificado
openssl pkcs12 -in certificate.p12 -clcerts -nokeys -out certificate.crt
Agora vamos extrair a cadeia (caso precise)
openssl pkcs12 -in certificate.p12 -cacerts -nokeys -chain > ca.crt
Para remover a senha da chave execute
openssl rsa -in certificate.key -out certificate_nopass.key
Concatenando CA com CRT para ter um certificado chained/fullchain.
cat certificate.crt ca.crt > fullchain.crt
Pronto agora você pode utilizar os arquivos PEM em seus serviços numa boa!
Como faz para checar tudo?
A checagem mais simples para ver se tá tudo bem
openssl verify certificate.crt openssl verify certificate.key
Verificando uma chave privada
openssl rsa -in privateKey.key -check
Verificando um certificado pem
openssl x509 -in certificate.crt -text -noout
Verificando um arquivo p12
openssl pkcs12 -info -in certificate.p12
Verificando um certificado já no ar
openssl s_client -connect mindnotes.sh:443
Erros comuns
Se você estiver tomando esse erro no NGINX
Nginx SSL: error:0B080074:x509 certificate routines: X509_check_private_key:key values mismatch
Você provavelmente concatenou o CA com o CRT de forma errada. Para conectenar corretamente siga essa ordem:
Your Primary SSL certificate (your_domain_name.crt)
-> Your Intermediate certificate
-> Your Root certificate
A estrutura interna deve ser algo como:
-----BEGIN CERTIFICATE-----
(Your Primary SSL certificate: domain.crt)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(Your Intermediate certificate: intermediate.crt)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(Your Root certificate: root.crt)
-----END CERTIFICATE-----
Se concatenar corretamente não haverá problemas com o NGINX ou outro reverse proxy/webserver.
Debugando os certificados
Se voce ainda assim está tomando erros nos logs do seu NGINX, verifique se a chave privada dá match com o certificado, faça isso usando o openssl.
# openssl x509 -noout -modulus -in certificate.crt | openssl md5
(stdin)= 9b728f2acad237e350fc67ce750fa51d
# openssl rsa -noout -modulus -in certificate.key | openssl md5
(stdin)= 9b728f2acad237e350fc67ce750fa51d
A saída tem que ser a mesma se os certificado estiverem bacanas, se estiver diferente verifique se não pulou algum passo e se está com os arquivos certos.
Refs
- http://nginx.org/en/docs/http/configuring_https_servers.html
- https://www.sslshopper.com/article-most-common-openssl-commands.html
- https://www.digicert.com/kb/ssl-support/pem-ssl-creation.htm
Gostou do conteúdo?
Você também me encontra nessas redes!
Mastodon
PixelFed
Lemmy
WriteFreely
@gutocarvalho@bolha.blog @notamental@bolha.blog @poesias@bolha.blog @contos@bolha.blog
Bookwyrm
Peertube
Friendica
Quer saber mais sobre mim?
Visite meus sites!
E meus blogs:
- https://blogs.gutocarvalho.net
- https://blogs.gutocarvalho.net/falagutera
- https://blogs.gutocarvalho.net/infra
- https://blogs.gutocarvalho.net/opiniao
- https://blogs.gutocarvalho.net/contos
- https://blogs.gutocarvalho.net/poesias
- https://blogs.gutocarvalho.net/lives
- https://blogs.gutocarvalho.net/orixas
- https://blogs.gutocarvalho.net/archives
Conhece o Coletivo Bolha?
Então vem conhecer o bolha.io ou bolhaverso!
- fediverso
- mastodon, https://bolha.us
- pixelfed, https://bolha.photos
- lemmy, https://bolha.forum
- bookwyrnm, https://bolha.review
- writefreely, https://bolha.blog
- peertube, https://bolha.tube
- castopod, https://bolha.studio
- owncast, https://bolha.stream
- friendica, https://bolha.network
- chat
- mattermost, https://mattermost.bolha.chat
- zulip, https://zulip.bolha.chat
- vídeo
- jitsi, https://bolha.video
- jitsi, https://bolha.video
- frontends
- lingva, https://translate.bolha.tools
- libremdb, https://libremdb.bolha.tools
- translations
- libretranslate, https://libretranslate.bolha.tools
- editors
- hedgedoc, https://notes.bolha.tools
- draw.io, https://draw.bolha.tools
- excalidraw, https://excalidraw.bolha.tools
- pdf stirling, https://spdf.bolha.tools
- wisemaping, https://mindmap.bolha.tools
- mermaid, https://mermaid.bolha.tools
- cryptpad, https://cryptad.bolha.tools
- secrets sharing
- yopass, https://yopass.bolha.tools
- password pusher, https://pusher.bolha.tools
- pastbin
- yabin, https://yabin.bolha.tools
- terminal recorder
- ascinnema, https://ascinemma.bolha.tools
- anti paywall
- 13ft, https://open.bolha.tools
Nós temos muito mais para compartilhar contigo!
Quer apoiar nosso trabalho? Você pode!
- https://www.patreon.com/bolha
- https://apoia.se/bolha
- pix@bolha.us
Te vejo no mastodon da bolha.us!
[s]