Armazenando e recuperando cadeias de certificados usando openssl

1

Seguindo esta pergunta consegui criar vários certificados em uma hierarquia de certificados raiz, intermediário e final:

# Create root RSA key pair of 1024 bits as well as a certificate signing request
openssl.exe req -new -newkey rsa:1024 -nodes -out caRoot.csr -keyout caRoot.key
# Create root certificate and store into .pem format
openssl x509 -trustout -signkey caRoot.key -days 365 -req -in caRoot.csr -out caRoot.pem
# Create intermediate certificate RSA key pair
openssl genrsa -out clientIntermediate.key 1024
# Create intermediate CSR
openssl req -new -key clientIntermediate.key -out clientIntermediate.csr
# Do the same thing for the end certificate
openssl req -new -keyout clientEnd.key -out clientEnd.csr -days 365
# Create a certificate request
openssl ca -policy anyPolicy -keyfile clientIntermediate.key -cert clientIntermediate.pem -out clientEnd.pem -infiles clientEnd.request
# Create and sing certificate
openssl ca -policy anyPolicy -keyfile clientIntermediate.key -cert clientIntermediate.pem -out caRoot.pem -infiles clientEnd.csr

Como é possível criar uma cadeia de certificados conforme descrito acima e armazená-la inteiramente no formato PKCS # 12 ?

    
por Sebi 10.11.2015 / 00:17

1 resposta

1

O "último" na minha descrição, privatekey e cadeia cert, é PKCS # 12 como você pediu originalmente. (O PKCS # 7 lida apenas com o caso da cadeia cert.) Para criar o PKCS # 12 mais simples, use a operação de linha de comando pkcs12 com a opção -export . Existem várias maneiras de combinar as opções desse comando, mas duas maneiras simples para um cenário de três níveis como o seu (root, mid, leaf) são:

openssl pkcs12 -export -in leafcert.pem -inkey leafkey.pem -certfile midcert.pem -CAfile rootcert.pem -chain -out my.p12 

cat leafcert.pem leafkey.pem midcert.pem rootcert.pem | openssl pkcs12 -export -out my.p12 

(substitua seus nomes de arquivos). Detalhes completos na manpage, disponíveis em qualquer sistema Unix em que o OpenSSL esteja (totalmente) instalado ou on-line no link (ou escolha uma versão anterior do link , se necessário).

Para completar, se você precisa da cadeia sem a chave privada, é

openssl crl2pkcs7 -nocrl -certfile leafcert.pem -certfile midcert.pem -certfile rootcert.pem -out my.p7b 
    
por 11.11.2015 / 16:58