Tengo una CA autofirmada para la cual quiero rotar la clave. Quiero usar firma cruzada para facilitar esto, con reemplazo gradual del certificado en los clientes para que aún puedan comunicarse.
Estoy usando cfssl , pero no puedo averiguar prácticamente cómo hacer que esto funcione. Para fines de prueba, he generado dos nuevas CA con CN idénticas y las he firmado de forma cruzada:
cfssl gencert -initca ca-csr-A.json | cfssljson -bare ca-A
cfssl gencert -initca ca-csr-B.json | cfssljson -bare ca-B
cfssl sign -ca ca-A.pem -ca-key ca-A-key.pem -config ca-config.json ca-B.csr | cfssljson -bare ca-B-by-A
cfssl sign -ca ca-B.pem -ca-key ca-B-key.pem -config ca-config.json ca-A.csr | cfssljson -bare ca-A-by-B
Luego, he creado un nuevo certificado de cliente, firmado con la clave privada de A y el certificado A firmado por B:
cfssl gencert -ca=ca-A-by-B.pem -ca-key=ca-A-key.pem -config=ca-config.json child-csr.json | cfssljson -bare child
Luego traté de verificar (usando openssl verify
) el nuevo certificado de cliente con A original, B original o cualquiera de las CAs con firma cruzada, pero no puedo resolver el conjuro. He intentado agrupar ca-A-by-B.pem
y ca-B.pem
, y he intentado agrupar al cliente con ca-A-by-B.pem
como intermediario, pero tampoco funcionan.
Creo que me falta algo obvio, o simplemente malentiendo completamente la firma cruzada. ¿Es esto posible?