2013-05-10 19 views
19

Stiamo cercando di implementare alcune funzionalità di un servizio Web da uno dei nostri partner. Ora, il contenuto che sta per essere trasmesso, dovrebbe essere criptato con una chiave pubblica, che dobbiamo fornire.X.509: Chiave pubblica/privata

Le specifiche di sicurezza indicano che il certificato pubblico deve essere X.509 standard. X.509 non si basa sul metodo della chiave privata/pubblica? Perché ho solo ottenere un file .pem, contenente una chiave privata e un certificato, ma non a chiave pubblica, con il seguente comando:

openssl req -new -x509 -days 365 -nodes -out ./cert.pem -keyout ./cert.pem 

Devo modificare il comando al fine di creare un privato e chiave pubblica?

risposta

54

I passi della riga di comando di base per generare una chiave privata e pubblica usando OpenSSL sono i seguenti

openssl genrsa -out private.key 1024 
openssl req -new -x509 -key private.key -out publickey.cer -days 365 
openssl pkcs12 -export -out public_privatekey.pfx -inkey private.key -in publickey.cer 

Fase 1 - genera una chiave privata

Fase 2 - crea un certificato X509 (file con estensione cer) contenente la chiave pubblica che carichi durante la registrazione dell'applicazione privata (o l'aggiornamento a un'applicazione partner).

Fase 3 - Esportare il certificato x509 e la chiave privata in un file pfx. Se la libreria di wrapper scelta utilizza il file .pem per firmare le richieste, questo passaggio non è richiesto.

Spero che questo aiuti! This answer explains le diverse estensioni di file.

+1

Non sono abbastanza sicuro di ciò che fa il 3 ° comando, ma sembra funzionare piuttosto bene con il privatekey.pem e publickey.cer. Grazie! – Ahatius

+0

In questo esempio, 'privatekey.pem' contiene solo la chiave privata o la chiave pubblica? –

+5

Si sta utilizzando l'estensione file errata nel primo comando. Dovresti usare '.key' invece di' .pem', per evitare confusione. Il file risultante sarà semplicemente una chiave privata. Qualcuno potrebbe inviare il file '.pem' a qualcun altro per errore, creando un problema di sicurezza. – w0rp

8

La chiave pubblica è memorizzata all'interno del certificato x.509. Il certificato associa informazioni di identità (nome comune, indirizzo, qualsiasi altra cosa) a questa chiave pubblica.

+1

Beh, nel mio caso c'è un ** BEGIN CERTIFICATE ** e ** BEGIN CHIAVE PRIVATA **. Il CERTIFICATO è la mia chiave pubblica? E posso dividere questi due in file separati, quindi l'altra parte non può vedere la chiave privata? – Ahatius

+2

Sì, la parte CERTIFICATO è il certificato (codificato in base64, con chiave pubblica), CHIAVE PRIVATA - è, doh, la chiave privata. È possibile (e in realtà DOVREBBE) separarli e inviare solo parte del certificato ad altra parte. –

+2

Ok, grazie mille. Invierò loro la parte CERTIFICATO quindi :) Mi piacerebbe fare una sovvenzione, ma ovviamente ho raggiunto il mio limite di voto giornaliero: O – Ahatius

1

Creare una coppia di chiavi privata-pubblica.

openssl req -x509 -newkey rsa:2048 -keyout private.key -out public.cert -days 365 

Opzionalmente, combinare la coppia in un unico file.

openssl pkcs12 -export -inkey private.key -in public.cert -out certificate.pfx 

Risultati nei seguenti file.

private.key 
certificate.pfx 
public.cert 

Vedi anche

Problemi correlati