2010-11-09 27 views
9

làm cách nào để tìm hiểu, nơi cài đặt openssl của tôi đang tìm kiếm chứng chỉ đã cài đặt (đáng tin cậy)? đôi khi là/etc/ssl/cert nhưng tôi có một hệ thống mới và nó không hoạt động với đường dẫn này.cách tìm ra đường dẫn cho chứng chỉ tin cậy openssl?

thx! regards, chris

+0

Thử tìm loại hệ thống của bạn trên trang này: http://gagravarr.org/writing/openssl-certs/ others.shtml – indiv

Trả lời

10

đoạn C này, biên dịch chống lại OpenSSL, sẽ cho bạn biết:

#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

Làm thế nào tôi có thể tìm hiểu, nơi openssl tôi cài đặt đang tìm kiếm chứng chỉ được cài đặt (đáng tin cậy)?

Bạn không thể. OpenSSL tin tưởng không có gì theo mặc định, và nó không đi tìm certs. Bạn phải hướng dẫn nó những gì để tin tưởng. Thậm chí còn có một chủ đề FAQ che nó: Why does <SSL program> fail with a certificate verify error?:

Vấn đề này thường được chỉ định bởi các thông điệp log nói điều gì đó như "không thể nhận được giấy chứng nhận phát hành tại địa phương" hay "tự ký chứng chỉ". Khi chứng chỉ được xác minh, CA gốc phải là "đáng tin cậy" bởi OpenSSL, điều này có nghĩa là chứng chỉ CA phải được đặt trong thư mục hoặc tệp và chương trình có liên quan được định cấu hình để đọc. Chương trình OpenSSL 'xác minh' hoạt động theo cách tương tự và phát hành các thông báo lỗi tương tự: kiểm tra trang hướng dẫn chương trình xác minh (1) để biết thêm thông tin.


câu trả lời Caf là loại chính xác, nhưng OpenSSL không sử dụng nó và không có gì ở đó ...

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

Ở phía trên, nhận thấy nó không hit trên bất cứ điều gì trong thư mục apps/. apps/ là nơi tất cả các mẫu OpenSSL và tiện ích này, giống như openssl req, openssl rsa, openssl dsa, openssl x509, openssl sign, openssl verify vv

Sau đó:

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

Và cuối cùng:

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

Giống như Tôi nói, nó không được sử dụng và không có gì ở đó cả.

+0

OpenSSL chắc chắn tin tưởng một số chứng chỉ tự động: bất kỳ chứng chỉ nào được tìm thấy trong "Thư mục cho tệp OpenSSL", trong tệp có tên 'cert.pem' hoặc trong thư mục con' certs/'. Nguồn: _ [Cơ quan cấp chứng chỉ nào OpenSSL nhận ra?] (Https://www.madboa.com/geek/openssl/#what-certificate-authorities-does-openssl-recognize) _. Bây giờ, có thể cài đặt của bạn không có gì trong thư mục này, nhưng cài đặt của tôi có một cert.pem được liên kết với một bộ sưu tập chứng chỉ của Tổ chức phát hành chứng chỉ gốc, vì vậy cài đặt của tôi tin cậy nhiều trang "tự động". –

8

Đường dẫn mặc định nơi các chứng chỉ được tra cứu có thể khác nhau trên mỗi nền tảng. Bạn có thể tra cứu cấu hình hệ thống của mình bằng cách sử dụng lệnh sau:

$ openssl version -d 

OPENSSLDIR: "/etc/pki/tls" 
0

Đường dẫn bạn đang tìm kiếm là "Thư mục cho tệp OpenSSL". Dưới dạng @tnbt answered, openssl version -d (hoặc -a) cung cấp cho bạn đường dẫn đến thư mục này. OpenSSL tìm ở đây một tệp có tên là cert.pem và một thư mục con certs/.Chứng chỉ tìm thấy ở đó được coi là đáng tin cậy bởi openssl s_clientopenssl verify (nguồn: bài viết, 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]... 

Nó chỉ ra rằng trình cài đặt mà cài đặt OpenSSL trên hệ thống của tôi cũng được cài đặt cert.pem như một liên kết tượng trưng cho một gói giấy chứng nhận Certificate Authority từ công cụ cUrl. Những người này đến từ Mozilla.

Bạn có thể không có gì được cài đặt trong tệp hoặc thư mục này hoặc bạn có thể có một bộ chứng chỉ khác. Điều này sẽ ảnh hưởng đến chứng chỉ máy chủ OpenSSL xác minh.

Lệnh OpenSSL như s_client hỗ trợ, tôi nghĩ từ phiên bản 1.1, tùy chọn -no-CAfile-no-CApath. Điều này cho phép bạn bỏ qua các chứng chỉ trong tập tin và thư mục này tương ứng, trong suốt thời gian của một lệnh. (Tôi không thể sao chép điều này vì tôi vẫn đang sử dụng phiên bản 1.0.2 và không có các tùy chọn đó.)

Các vấn đề liên quan