2010-11-09 13 views
9

¿cómo puedo averiguar dónde mi openssl instalado está buscando certificados instalados (confiables)? a veces es/etc/ssl/cert pero tengo aquí un nuevo sistema y no está funcionando con esta ruta.cómo encontrar la ruta para el certificado de confianza de openssl?

thx! respecto, Chris

+0

Trate de encontrar el tipo de sistema en esta página: http://gagravarr.org/writing/openssl-certs/ others.shtml – indiv

Respuesta

10

Este fragmento C, compilado con OpenSSL, le 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

¿Cómo puedo averiguar, donde mi openssl instalado está buscando certificados instalados (de confianza)?

No puede. OpenSSL no confía en nada por defecto, y no busca certificaciones. Tienes que instruirlo en qué confiar. Incluso hay un tema que lo cubre FAQ: Why does <SSL program> fail with a certificate verify error?:

Este problema viene a menudo indicada por los mensajes de registro diciendo algo como "incapaz de obtener el certificado emisor locales" o "auto firmado certificado". Cuando se verifica un certificado de CA de su raíz debe ser "de confianza" por OpenSSL esto normalmente significa que el certificado de la CA debe ser colocado en un directorio o archivo y el programa correspondiente configurado para leerlo. El programa OpenSSL 'verificar' se comporta de una manera similar y muestra mensajes de error similares: comprobar el verificar (1) Programa de página del manual para más información.


respuesta de CAF es una especie de correcta, pero OpenSSL no lo usa y no hay nada allí ...

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

En lo anterior, se dio cuenta que lo hace no éxito en cualquier cosa en el directorio apps/. apps/ es donde todas las muestras de OpenSSL y utilidades son, como openssl req, openssl rsa, openssl dsa, openssl x509, openssl sign, openssl verify, etc.

continuación:

$ 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" 

Y, por último:

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

igual Dije, no se usa y no hay nada allí.

+0

OpenSSL ciertamente confía en ciertos certificados automáticamente: cualquiera que se encuentre en el "Directorio para archivos OpenSSL", en un archivo llamado 'cert.pem' o en el subdirectorio' certs/'. Fuente: _ [¿Qué autoridades de certificación reconoce OpenSSL?] (Https://www.madboa.com/geek/openssl/#what-certificate-authorities-does-openssl-recognize) _. Ahora bien, es posible que su instalación no tenga nada en este directorio, pero mi instalación tiene un enlace simbólico de una colección de certificado de autoridad de certificación raíz, por lo que mi instalación confía en muchos sitios "automáticamente". –

8

La ruta predeterminada donde se buscan los certificados pueden ser diferentes en cada plataforma. Usted puede buscar la configuración del sistema con el siguiente comando:

$ openssl version -d 

OPENSSLDIR: "/etc/pki/tls" 
0

El camino que busca es el "Directorio para los archivos de OpenSSL". Como @tnbt answered, openssl version -d (o -a) le da la ruta a este directorio. OpenSSL busca aquí un archivo llamado cert.pem y un subdirectorio certs/.Los certificados que encuentra allí son tratados como confiables por openssl s_client y openssl verify (fuente: el artículo, 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]... 

Resulta que el instalador instala OpenSSL, que en mi sistema también instaló cert.pem como un enlace simbólico a un conjunto de certificados de la autoridad certificadora de la herramienta cUrl. Esos a su vez vinieron de Mozilla.

Es posible que no tenga nada instalado en este archivo o directorio, o puede tener un conjunto diferente de certificados. Esto afectará los certificados de servidor que verifica OpenSSL.

Comandos de OpenSSL como s_client soporte, creo que desde la versión 1.1, opciones -no-CAfile y -no-CApath. Estos le permiten ignorar los certificados en este archivo y directorio, respectivamente, durante la duración de un comando. (No puedo reproducir esto porque todavía estoy usando la versión 1.0.2, y carece de esas opciones.)

Cuestiones relacionadas