Ho una CA autofirmata per la quale voglio ruotare la chiave. Voglio usare cross-sign per facilitare questo, con la sostituzione graduale del certificato sui client in modo che possano ancora comunicare.
Sto utilizzando cfssl , ma non riesco a capire in pratica come farlo funzionare. A scopo di test, ho generato due nuove CA con CN identici e con firma incrociata:
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
Ho quindi creato un nuovo certificato client, firmato con la chiave privata di A e il certificato A firmato da 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
Ho quindi provato a verificare (utilizzando openssl verify
) il nuovo certificato client con l'originale A, l'originale B o entrambe le CA con firma incrociata, ma non riesco a elaborare l'incantesimo. Ho provato a raggruppare ca-A-by-B.pem
e ca-B.pem
, e ho provato a raggruppare il cliente con ca-A-by-B.pem
come intermediario, ma non funzionano neanche.
Penso di aver perso qualcosa di ovvio, o semplicemente di fraintendere completamente il cross-signing. È persino possibile?