How can I renew my certificate authority signing key?
Você tem dois problemas para enfrentar. A primeira é a continuidade dos certificados de entidade final (servidor e usuário). A segunda é a alteração da CA raiz.
Is there a way I can simply create a new ca.crt file with a longer expiry date?
Sim, mas veja os detalhes abaixo.
O primeiro problema, a continuidade dos certificados de entidade final (servidor e usuário), é principalmente resolvido usando a mesma chave pública quando você passa por cima da CA raiz.
A nova CA raiz auto-assinada ainda precisará ser instalada nos armazenamentos confiáveis relevantes, mas a continuidade da chave significa que os certificados de entidade final não precisam ser reemitidos. Se você usar uma nova chave pública para a CA raiz, precisará reemitir todos os certificados de entidade final.
O segundo problema, passando pela CA raiz, deve acontecer porque expirou. Este é o mesmo problema que re-certificar uma CA raiz porque o hash é alterado de SHA-1 para SHA-256 para estar em conformidade com CA / Requisitos da linha de base do navegador . Várias CAs fizeram isso na vida real.
O impacto do rollover pode ser reduzido usando a mesma chave pública. Isso também ajudará com controles de segurança aprimorados, como fixar uma chave pública de uma CA. Se o certificado da estiver marcado (ao contrário da chave pública ), ele criará muito ruído estranho em ferramentas como Cert Patrol .
Para passar pela CA, você precisa criar um certificado de CA raiz "equivalente" (ou o mais próximo possível do equivalente). A forma como os agentes do usuário identificam exclusivamente um certificado é descrita em RFC 4158, Infraestrutura de chave pública da Internet X.509: Construção do caminho de certificação .
A abreviação de RFC 4158 é o par { Nome Distinto do Assunto , Número de Série } pode ser usado para identificar de forma exclusiva um certificado em uma loja. Como um CA ou Emissor, você é suposto para garantir que os números de série sejam exclusivos, mesmo se você re-certificar.
Os certificados de entidade final têm maneiras adicionais de serem identificados de forma exclusiva, incluindo o Identificador de chave de autoridade (AKID) . De fato, o certificado de um servidor pode usar um hash do { Nome Distinto do Assunto , Número de Série } como seu AKID (se bem me lembro).
Parece que você descobriu como criar um certificado de CA autoassinado, portanto não discutirei os comandos do OpenSSL.
Os problemas reais ocorrem quando seus pares de chaves pública / privada são comprometidos. Você não pode passar por cima de sua autoridade de certificação sob a chave pública existente, portanto, é necessário emitir um novo certificado de CA raiz e reemitir todos os certificados de entidade final.
Para recapitular, aqui estão os itens acionáveis:
- Use a mesma chave pública para a CA
- Use o mesmo nome distinto para a CA
- Use um novo número de série para a CA
- Instale a CA recém-emitida em todas as máquinas clientes
- Não reenvie certificados de entidade final