E 'possibile inviare una richiesta CURL con SSL senza la chiave privata?

0

Sto sviluppando un servizio per un client che in base ai propri requisiti deve avere autenticazione basata su certificato client .

Mi hanno inviato 2 file, uno è il certificato che invieranno nella richiesta in formato .cer e l'altro è un file ROOT CA anche in formato .cer . Ecco i nomi dei file:

  • CERT.cer
  • CA_ROOT.cer

Sto tentando di configurare l'accesso utilizzando nginx . Ecco la mia configurazione:

server {
  listen 443;
  server_name example.com;

  # SSL client certificate configuration
  ssl_client_certificate /etc/nginx/certs/CERT.cer;
  ssl_verify_client on;

  ssl_session_timeout 5m;

  ssl_protocols SSLv3 TLSv1;
  ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;

  # serve assets or request page from proxy (if asset not found)
  location / {
    try_files $uri @proxy;
  }

  # the play web server
  location @proxy {
    proxy_pass  http://localhost:9000;
    proxy_redirect off;
    proxy_buffering off;
  }
}

Anche se non so come testarlo senza la chiave privata. Se avessi la chiave privata potrei fare qualcosa del genere:

curl -v -s -k --key private.key --cert CERT.cer https://example.com

È addirittura possibile farlo senza il file della chiave privata? (che non ho)

Inoltre, per favore fatemi sapere se sto facendo qualcosa che non dovrei, in quanto in nessun modo sono un esperto in materia di sicurezza

    
posta Rodrigo Sasaki 09.08.2016 - 00:35
fonte

2 risposte

1

Questo dovrebbe essere un commento, ma è un po 'lungo ...

Sembra che manchi una comprensione di base di come funziona ssl. È relativamente semplice configurare la propria autorità di certificazione e utilizzarla per produrre certificati server / client / chiavi private, quindi è sufficiente scambiare i file appropriati quando si entra in produzione.

È semplice ma forse oltre lo scopo di una descrizione qui.

Non hai detto quale sia il modello di fiducia (specifici certificati client? certificati cliente firmati da una specifica CA? nomi comuni specifici firmati da un intervallo di CA?). È probabile che tu debba modificare la configurazione di openssl.

Sarai in esecuzione più ssl convenzionale dallo stesso server? Ciò aggiunge molte complicazioni e potrebbe essere meglio prendere in considerazione un'installazione di secs di ssl per gestire uno dei 2 tipi di traffico (ad esempio, utilizzando il perno).

La crittografia che stai utilizzando è considerata non sicura.

Puoi convertire il formato dei file usando openssl dalla riga di comando.

    
risposta data 09.08.2016 - 01:23
fonte
1

Is it even at all possible to do this without the private key file? (which I don't have)

Non è possibile emettere una richiesta con un certificato client se non si dispone della chiave privata. In effetti, l'intero scopo dell'autenticazione con il certificato client è dimostrare che si dispone delle informazioni segrete, ovvero la chiave privata.

Ma per testare la configurazione puoi creare il tuo certificato cliente e utilizzarlo nel tuo impostare. Una volta eseguito, è possibile modificare la configurazione per verificare i certificati richiesti dal cliente. Si prega di notare che durante i test non si dovrebbe solo verificare il caso in cui il server accetti un client con il certificato client corretto ma anche che rifiuti un client senza certificato client o con il certificato client errato, anche se emesso dalla stessa CA.

    
risposta data 09.08.2016 - 06:51
fonte

Leggi altre domande sui tag