È possibile firmare un certificato in modo che l'emittente sia diverso dal certificato della CA?

2

Diciamo che ho un certificato di root autofirmato chiamato root-ca.pem creato da openssl. Mi consente di firmare certificati. È possibile firmare il certificato new.csr con root-ca.pem in modo che l'emittente firmata new.csr sia diverso dall'emittente che ha firmato root-ca.pem ?

    
posta 07.01.2014 - 17:15
fonte

2 risposte

3

Sarebbe possibile farlo, ma la semplice domanda è: perché?

Supponiamo che quando si firma il certificato TBS si cambi il nome dell'emittente con qualcos'altro. Se il firmatario specificato del certificato è diverso dal firmatario reale , il processo di convalida del percorso del certificato fallirebbe.

Controlla RFC 5280 Sezione 6 per visualizzare l'algoritmo di convalida del percorso del certificato. Uno dei controlli chiave è che l'oggetto del certificato x è l'emittente del certificato x + 1, che nella tua domanda non è il caso. Pertanto, il certificato prodotto fallirebbe sempre nella convalida del certificato.

In tutte le situazioni commerciali non sarebbe possibile farlo, perché la parte emittente del certificato non è inclusa nella richiesta di certificato ( controlla il formato PKCS # 10 ) ed è impostato dalla CA appena prima della firma effettiva del certificato.

Ma se si stesse facendo la programmazione effettiva della firma del certificato (usando, ad esempio, le API di bouncycastle in Java o C #), allora si potrebbe cambiare il nome dell'emittente. Tuttavia, in questo modo il tuo certificato fallirebbe la convalida da parte di tutti i sistemi diversi da un sistema di convalida personalizzato che dovresti costruire da solo.

    
risposta data 08.01.2014 - 05:28
fonte
1

No, ma considerando che anche i certificati commerciali potrebbero essere firmati a croce, potrebbe essere importante prestare molta attenzione ai dettagli.

Ad esempio, si potrebbe finire in una situazione in cui il certificato $ A $ può essere verificato da un certificato autofirmato $ B $ o da un certificato CA intermedio $ C $ emesso da una radice $ D $. Tuttavia, in tali situazioni le seguenti uguaglianze dovrebbero essere vere:

  • $ A.issuer = B.subject = C.subject $
  • $ B.subject = B.issuer $
  • $ B.PublicKey = C.PublicKey $
  • $ Verify_ {B.PublicKey} (A) = Verify_ {C.PublicKey} (A) = OK $

Si noti che la prima e la seconda parità implicano che $ A.issuer = B.issuer $ come chiedete. Tuttavia, poiché $ ssubject \ ne C.issuer $, avrai $ A.issuer \ ne C.issuer $, anche se $ C $ può essere usato per verificare $ A $.

    
risposta data 08.01.2014 - 10:55
fonte

Leggi altre domande sui tag