2011-02-19 5 views
11

Sto utilizzando OpenSSL per verificare il certificato di un server. Poiché OpenSSL viene fornito senza CA root incorporate, dobbiamo distribuire il certificato CA root con il nostro software (colleghiamo staticamente OpenSSL). Normalmente, il modo per farlo è distribuire un file di certificato in formato PEM e chiamare SSL_CTX_load_verify_locations.C++/OpenSSL: utilizzare CA radice dal buffer anziché dal file (SSL_CTX_load_verify_locations)

Tuttavia, questa funzione accetta un percorso file/directory e legge i file del certificato radice direttamente dal filesystem. Ci piacerebbe molto poter codificare il certificato nel nostro file binario invece di salvarlo nel filesystem.

In altre parole, ci piacerebbe davvero avere una funzione come SSL_CTX_load_verify_locations che accetta un X509 * invece di un percorso file.

Esiste qualcosa del genere? o c'è un modo semplice per hackerarlo insieme? Non possiamo sembrare di trovare molte informazioni a riguardo.

Grazie mille per qualsiasi suggerimento!

+0

Che cosa impedisce di salvare il certificato di root con hardcoded sul disco prima di chiamare SSL_CTX_load_verify_locations? –

+0

Nulla lo impedisce: tuttavia, siamo un'applicazione di sicurezza e siamo preoccupati per le interferenze dannose. In particolare, se è facile individuare e sovrascrivere il nostro file del certificato radice, è possibile bloccare qualsiasi delle nostre transazioni SSLed. Andremo su questa rotta se necessario, ma sarebbe bello poter compilare il certificato di root nel binario stesso. – DSII

+0

Non è più sicuro avere la CA radice codificata rispetto a conservarla in un file. –

risposta

18

La funzione SSL_CTX_get_cert_store() può essere utilizzata per ottenere un handle al negozio certificato utilizzato per la verifica (X509_STORE *), e la funzione X509_STORE_add_cert() (in openssl/x509_vfy.h) può quindi essere utilizzato per aggiungere un certificato direttamente a quel certificati.

+0

Perfetto! Grazie mille; questo funziona meravigliosamente. Esattamente quello che stavo cercando. Grazie! – DSII

Problemi correlati