Gostaria de configurar meu próprio Respondente OCSP (apenas para fins de teste). Isso exige que eu tenha um certificado raiz e alguns certificados gerados a partir dele.
Consegui criar um certificado autoassinado usando o openssl. Eu quero usá-lo como o certificado raiz. O próximo passo seria criar os certificados derivados. No entanto, não consigo encontrar a documentação sobre como fazer isso. Alguém sabe onde posso encontrar esta informação?
Editar
Em retrospecto, minha pergunta ainda não foi completamente respondida. Para esclarecer o problema, representarei minha cadeia de certificados assim:
ROOT -> A -> B -> C -> ...
Atualmente, sou capaz de criar os certificados ROOT e A, mas não descobri como criar uma cadeia mais longa.
Meu comando para criar o certificado raiz é:
openssl req -new -newkey rsa:1024 -nodes -out ca.csr -keyout ca.key
openssl x509 -trustout -signkey ca.key -days 365 -req -in ca.csr -out ca.pem
O certificado A é criado assim:
openssl genrsa -out client.key 1024
openssl req -new -key client.key -out client.csr
openssl ca -in client.csr -out client.cer
Esse comando depende implicitamente do certificado raiz, para o qual encontra as informações necessárias no arquivo de configuração openssl.
No entanto, o certificado B deve confiar apenas em A, que não está registrado no arquivo de configuração, para que o comando anterior não funcione aqui.
Qual linha de comando devo usar para criar certificados B e além?
Editar
Encontrei a resposta neste artigo . O certificado B (cadeia A -> B) pode ser criado com estes dois comandos:
# Create a certificate request
openssl req -new -keyout B.key -out B.request -days 365
# Create and sign the certificate
openssl ca -policy policy_anything -keyfile A.key -cert A.pem -out B.pem -infiles B.request
Também mudei o arquivo openssl.cnf:
[ usr_cert ]
basicConstraints=CA:TRUE # prev value was FALSE
Essa abordagem parece estar funcionando bem.
fonte
Respostas:
Você pode usar o OpenSSL diretamente.
Crie uma chave privada de Autoridade de Certificação (esta é a sua chave mais importante):
Crie seu certificado autoassinado da CA:
Emita um certificado de cliente, primeiro gerando a chave, depois solicite (ou use um fornecido pelo sistema externo) e assine o certificado usando a chave privada da sua CA:
(Pode ser necessário adicionar algumas opções, pois estou usando esses comandos junto com o meu arquivo openssl.conf. Talvez seja necessário configurar seu próprio arquivo .conf primeiro.)
fonte
openssl ca -in client.csr -out client.cer -cern ca.pem -keyfile ca.key
, mas ele quer umdemoCA
diretório e vários apetrechos.Depois de criar sua CA, você poderá usá-la para assinar assim:
Crie uma chave:
Crie um csr:
Assine :
e assim por diante substituindo * _A por * _B e
CA_certificate_you_created.crt
porcrt_A.crt
eCA_key_you_created.key
comkey_A.key
Sua mudança:
significa que os certificados emitidos podem ser usados para assinar outros certificados.
fonte
O OpenSSL vem com um script Perl "CA.pl" para ajudá-lo a criar um certificado de CA raiz autoassinado , junto com a chave privada correspondente, além de alguns arquivos e diretórios simples para ajudar a rastrear qualquer certificado futuro que você assine (também conhecido como problema ) com essa autoridade de certificação raiz. Também ajuda a gerar outros pares de chaves e solicitações de assinatura de certificado (CSRs) e ajuda a processar esses CSRs (ou seja, emitir certificados para eles) e muito mais.
Observe que muitos produtos exigem que os certificados da CA contenham um determinado atributo marcando-os como certificados da CA, ou eles não serão aceitos como assinantes / emissores válidos de outros certificados. Se o certificado autoassinado que você criou não contiver esse atributo, você poderá ter problemas para obter outro software para tratá-lo como um certificado de CA raiz válido.
Se bem me lembro, a sintaxe é algo como isto:
fonte
/usr/lib/ssl/misc/CA.pl
Encontrei este post: https://stackoverflow.com/questions/19665863/how-do-i-use-a-self-signed-certificate-for-a-https-node-js-server
É para o Node.JS, mas o script neste repositório do GitHub usa comandos openSLL para criar um certificado de CA raiz e um certificado de domínio.
Execute usando:
bash make-root-ca-and-certificates.sh 'example.com'
Ou para localhost usando:
bash make-root-ca-and-certificates.sh 'localhost'
make-root-ca-and-certificates.sh
fonte