Como criar a minha própria cadeia de certificados?
Gostaria de criar o meu próprio OCSP Responder (apenas para fins de teste). Isto requer que eu tenha um certificado de raiz e alguns certificados gerados a partir dele.
Consegui criar um certificado autoassinado utilizando o openssl. Quero usá-lo como o certificado de raiz. O passo seguinte seria criar os certificados derivados. No entanto, não consigo encontrar a documentação sobre como o fazer. Alguém sabe onde posso encontrar esta informação?
Editar Em retrospectiva, a minha pergunta ainda não foi completamente respondida. Para esclarecer o problema, representarei a minha cadeia de certificados desta forma:
ROOT -> A -> A -> B -> C -> …
Actualmente sou capaz de criar os certificados ROOT e A, mas ainda não descobri como fazer uma cadeia mais longa.
O meu comando para criar o certificado de 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
Certificado A é criado desta forma:
openssl genrsa -out client.key 1024
openssl req -new -key client.key -out client.csr
openssl ca -in client.csr -out client.cer
Este comando depende implicitamente do certificado de raiz, para o qual encontra as informações necessárias no ficheiro de configuração openssl.
Certificado B, no entanto, só deve confiar em A, que não está registado no ficheiro de configuração, pelo que o comando anterior não funcionará aqui.
Que linha de comando devo utilizar para criar certificados B e mais além?
Editar Encontrei a resposta em este 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
Eu também alterei o ficheiro openssl.cnf:
[usr_cert]
basicConstraints=CA:TRUE # prev value was FALSE
Esta abordagem parece estar a funcionar bem.