#!/intro
A gestão adequada de chaves privadas requer, muitas vezes, a sua conversão entre diferentes formatos, seja por requisitos de compatibilidade com aplicações específicas, integração com diferentes plataformas ou necessidade de exportação controlada.
O OpenSSL disponibiliza um conjunto de comandos para converter chaves privadas entre os formatos mais utilizados, garantindo a preservação da integridade criptográfica do material sensível.
> formatos
Os formatos mais comuns de chaves privadas incluem:
-
PEM (Privacy Enhanced Mail)
Formato textual, codificado em Base64, muito usado em Unix/Linux. Os dados são encapsulados entre cabeçalhos e rodapés legíveis. Ideal para transporte e fácil leitura. Por ser um formato baseado em texto, é também mais facilmente integrado em ficheiros de configuração e scripts.
Extensões comuns: .pem, .key, .crt, .cer, .cert -
DER (Distinguished Encoding Rules)
Formato binário, sem cabeçalhos, utilizado para dados estruturados em ASN.1. Predominante em ambientes Windows e aplicações Java. Por ser binário, é mais compacto mas ilegível sem ferramentas específicas.
Extensões comuns: .der, .cer -
PKCS#8 (Public-Key Cryptography Standards #8)
Define a estrutura para armazenamento de chaves privadas. Suporta vários algoritmos (RSA, DSA, EC) e pode ser codificado em DER ou PEM. Permite ainda proteger a chave privada através de algoritmos simétricos, acrescentando uma camada adicional de segurança ao armazenamento.
Extensões comuns: .p8, .pk8, .pem -
PKCS#12 (Public-Key Cryptography Standards #12)
Formato binário utilizado para armazenar de forma agregada uma chave privada, o certificado correspondente e, opcionalmente, a cadeia de certificação completa. Apesar de conter múltiplos elementos, permite extrair individualmente a chave privada.
Extensões comuns: .p12, .pfx
> PEM_DER
Converter uma chave privada de formato PEM para DER:
openssl rsa \
-in private-key.pem \
-outform DER \
-out private-key.der
Para chaves EC:
openssl ec
-in ec-key.pem \
-outform DER \
-out ec-key.der
> DER_PEM
Converter uma chave privada de formato DER para PEM:
openssl rsa \
-inform DER \
-in private-key.der \
-out private-key.pem
Para chaves EC:
openssl ec
-inform DER \
-in ec-key.der \
-out ec-key.pem
> PKCS#8
Converter uma chave RSA para formato PKCS#8:
openssl pkcs8
-topk8 \
-inform PEM \
-outform PEM \
-in rsa-key.pem \
-out rsa-key-pkcs8.pem \
-nocrypt
Para exportar uma chave protegida por cifra:
openssl pkcs8 \
-topk8 \
-inform PEM \
-outform PEM \
-in rsa-key.pem \
-out rsa-key-pkcs8.pem
> PKCS#12
Extrair a chave privada de um ficheiro PKCS#12:
openssl pkcs12 \
-in bundle.p12 \
-nocerts \
-nodes \
-out private-key.pem
Para extrair a chave protegida por cifra:
openssl pkcs12 \
-in bundle.p12 \
-nocerts \
-out private-key.pem
> consideracoes
Durante o processo de conversão, é fundamental garantir que:
- As permissões dos ficheiros das chaves são restritas (
chmod 600). - As chaves privadas não sejam transferidas ou armazenadas em ambientes não controlados.
- A chave privada extraída é cifrada.
> conclusão
A conversão correta de chaves privadas é uma tarefa essencial em operações criptográficas, particularmente em ambientes heterogéneos ou quando diferentes aplicações exigem formatos específicos. O OpenSSL disponibiliza ferramentas versáteis para efetuar estas operações com segurança, desde que acompanhadas de boas práticas na gestão e proteção dos materiais sensíveis.
> status: converted
> exit 0