Perché la creazione di un certificato X509 autofirmato non richiede la mia chiave pubblica?

5

Diciamo che ho una coppia di chiavi RSA (2048) che ho generato

private.key
public.key

A scopo di test, vorrei generare un certificato X509 autofirmato.

La mia comprensione di un certificato è che -

  1. Mostra la prova della proprietà della chiave pubblica, come verificato da qualche altra parte (in questo caso verificata da me, poiché autofirmata)
  2. Contiene la chiave pubblica al suo interno

Sembra che openssl mi permetta di creare un certificato abbastanza facilmente:

openssl req -new -key private.key -out certificate.csr

Ma qui sono dove sono confuso - perché richiede la mia chiave privata?

Posso immaginare che probabilmente ha bisogno di firmarlo con qualcosa, da qui l'uso della chiave privata. Ma poi, come ottiene la mia chiave pubblica da incorporare nel certificato? È matematicamente impossibile per lui decodificare la mia chiave pubblica dalla mia chiave privata, giusto?

Grazie!

    
posta user2490003 08.06.2017 - 23:01
fonte

3 risposte

6

La chiave privata è il segreto che ti identifica, qualsiasi firma o verifica della tua identità specifica richiede la chiave privata. Quindi qualsiasi operazione che genererà qualcosa che si intende derivare dalla tua identità lo richiederà.

Inoltre, non stai creando un certificato qui, stai creando una richiesta di firma del certificato, qualcosa che avresti consegnato a un'altra parte a chi avrebbe poi generato il certificato per concederti l'accesso.

se vuoi creare un certificato x509 autofirmato devi aggiungere il parametro -x509, qualcosa del tipo:

openssl req -x509 -nodes -days 5000 -newkey rsa:2048 -keyout mypem.key -out mycert.crt
  • dove i giorni sono quanto tempo il certificato è valido (5000 è efficace indefinito)
  • I nodi
  • salta la password aziendale (salta i test, ometti per qualsiasi cosa reale)
  • e anche l'output della chiave e del certificato per un uso successivo

E @bartonjs è corretto, la chiave privata per la chiave pubblica è possibile, la chiave pubblica per la chiave privata non lo è. Ecco perché puoi distribuire la chiave pubblica e nessuno può usarla per impersonarti. La chiave privata deve essere sempre segreta.

Se si prevede di agire come cliente che desidera ottenere l'accesso al server e anche al server che concede la richiesta, sarà necessario innanzitutto impostare l'autorità di certificazione sul server e i certificati del server.

Somone on stack overflow ha già un'ottima risposta su questo:

Ma il juiste base è, tu hai configurato la CA e il crt del server, quindi fai qualcosa del genere sul server:

openssl x509 -req -days 30 -in request.csr -CA ca.crt -CAcreateserial -CAkey ca.key -out signedrequest.crt 

restituisci "signedrequest.crt" alla persona che lo ha richiesto.

Ho dimenticato di menzionare, sbarazzarsi di -nodes nel mio comando qui sopra, salta la procedura della password. Buono per i test, Bad per la sicurezza. Solo FYI.

    
risposta data 08.06.2017 - 23:15
fonte
3

It's mathetmatically impossible for it to reverse-engineer my public key from my private key, right?

No, la tua direzione è all'indietro.

Da una chiave pubblica è (dovrebbe essere) impossibile ottenere una chiave privata. Da una chiave privata la chiave pubblica è facile.

Per RSA la chiave privata è (n, d), ma più praticamente è (p, q, e). p * q = n e (n, e) è la chiave pubblica.

Per ECDSA la chiave privata è d , il numero moltiplicato per G per ottenere Q , la chiave pubblica. Poiché devi ricordare la curva su cui ti trovi, ti dà G e d*G è ancora Q , la chiave pubblica.

    
risposta data 08.06.2017 - 23:07
fonte
1

Il file della chiave privata contiene tutta la coppia di chiavi. Contiene la parte pubblica che inserisce nel certificato autofirmato o nella richiesta di firma del certificato, e ha bisogno che la parte privata faccia effettivamente la (auto) firma.

È possibile esportare la parte pubblica dal file della chiave privata con:

openssl rsa -pubout -in private_key.pem -out public_key.pem
    
risposta data 09.06.2017 - 00:07
fonte

Leggi altre domande sui tag