2010-11-09 7 views
9

come posso scoprire, dove il mio openssl installato sta cercando certificati installati (trusted)? a volte è/etc/ssl/cert ma ho qui un nuovo sistema e non funziona con questo percorso.come trovare il percorso per il certificato di fiducia di openssl?

thx! saluti, Chris

+0

Prova a cercare il tipo di sistema in questa pagina: http://gagravarr.org/writing/openssl-certs/ others.shtml – indiv

risposta

10

Questo frammento di codice C, compilato contro OpenSSL, vi dirà:

#include <stdlib.h> 
#include <stdio.h> 
#include <openssl/x509.h> 

int main() 
{ 
    const char *dir; 

    dir = getenv(X509_get_default_cert_dir_env()); 

    if (!dir) 
     dir = X509_get_default_cert_dir(); 

    puts(dir); 

    return 0; 
} 
+1

gcc -o cafscode cafscode.c $ (pkg-config --libs --cflags openssl) – Jubal

3

Come posso scoprire, dove il mio OpenSSL installato è alla ricerca di certificati installati (attendibile)?

Non è possibile. OpenSSL non si fida di nulla per impostazione predefinita e non cerca i certificati. Devi istruirlo su cosa fidarti. C'è anche una FAQ argomento coprendolo: Why does <SSL program> fail with a certificate verify error?:

Questo problema è di solito indicato da messaggi di log dicendo qualcosa come "incapace di ottenere il certificato emittente locale" o "self firmato certificato". Quando un certificato viene verificato, la CA radice deve essere "trusted" di OpenSSL, ciò significa che il certificato CA deve essere inserito in una directory o in un file e il relativo programma configurato per leggerlo. Il programma 'verifica' di OpenSSL si comporta in modo simile e emette messaggi di errore simili: consultare la pagina di manuale del programma di verifica (1) per ulteriori informazioni.


risposta di Caf è una specie di corretto, ma OpenSSL non lo usa e non c'è niente lì ...

$ grep -R X509_get_default_cert_dir * 
... 
crypto/x509/x509_def.c:const char *X509_get_default_cert_dir(void) 
... 

In quanto sopra, si noti lo fa non colpo su qualsiasi cosa in la directory apps/. apps/ è dove tutti i campioni di OpenSSL e le utilità sono, come openssl req, openssl rsa, openssl dsa, openssl x509, openssl sign, openssl verify, ecc

Poi:

$ cat crypto/x509/x509_def.c 
... 
const char *X509_get_default_cert_dir(void) 
    { return(X509_CERT_DIR); } 
... 

$ grep -R X509_CERT_DIR * 
crypto/cryptlib.h:#define X509_CERT_DIR  OPENSSLDIR "/certs" 

E infine:

$ ls /usr/local/ssl/certs/ 
$ 

Come Ho detto che non è usato e non c'è niente lì.

+0

OpenSSL si fida certamente di certi certificati automaticamente: quelli che si trovano nella "Directory per file OpenSSL", in un file chiamato 'cert.pem' o nella sottodirectory' certs/'. Fonte: _ [quali autorità di certificazione riconosce OpenSSL?] (Https://www.madboa.com/geek/openssl/#what-certificate-authorities-does-openssl-recognize) _. Ora, è possibile che l'installazione non contenga nulla in questa directory, ma la mia installazione ha un cert.pem collegato ad una raccolta di certificati dell'autorità di certificazione principale, quindi la mia installazione si fida di molti siti "automaticamente". –

8

Il percorso predefinito in cui vengono esaminati i certificati potrebbe essere diverso su ciascuna piattaforma. Si può cercare la configurazione del sistema utilizzando il seguente comando:

$ openssl version -d 

OPENSSLDIR: "/etc/pki/tls" 
0

Il percorso che si sta cercando è la "Directory per i file di OpenSSL". Come @tnbt answered, openssl version -d (o -a) fornisce il percorso di questa directory. OpenSSL cerca qui un file denominato cert.pem e una sottodirectory certs/.I certificati riscontrati sono considerati attendibili da openssl s_client e openssl verify (fonte: l'articolo, What certificate authorities does OpenSSL recognize?).

% openssl version -d 
OPENSSLDIR: "/opt/local/etc/openssl" 
% ls -l /opt/local/etc/openssl/cert* 
lrwxr-xr-x 1 root admin 40 29 Nov 02:05 /opt/local/etc/openssl/cert.pem -> /opt/local/share/curl/curl-ca-bundle.crt 
% head -10 /opt/local/etc/openssl/cert.pem 
## 
## Bundle of CA Root Certificates 
## 
## Certificate data from Mozilla as of: Fri Nov 24 08:00:26 2017 GMT 
## 
## This is a bundle of X.509 certificates of public Certificate Authorities 
## (CA). These were automatically extracted from Mozilla's root certificates 
## file (certdata.txt). This file can be found in the mozilla source tree: 
## https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt 
## 
...[rest of file omitted]... 

Si scopre che l'installatore che installato OpenSSL sul mio sistema installato anche cert.pem come link simbolico a un fascio di certificati dell'autorità di certificazione dall'utensile cUrl. Quelli a loro volta provenivano da Mozilla.

Potrebbe non essere installato nulla in questo file o directory o potrebbe essere disponibile un diverso set di certificati. Ciò influirà sui certificati server che OpenSSL verifica.

Comandi OpenSSL come il supporto s_client, penso dalla versione 1.1, opzioni -no-CAfile e -no-CApath. Questi ti permettono di ignorare i certificati in questo file e nella directory rispettivamente, per la durata di un comando. (Non riesco a riprodurre questo perché sto ancora usando la versione 1.0.2, e manca di quelle opzioni.)

Problemi correlati