Hiểu đầu ra của openssl s_client


14

Kể từ khi nhà cung cấp email của chúng tôi thay đổi chứng chỉ SSL, khách hàng POP3 dựa trên đơn từ chối kết nối với máy chủ POP an toàn của họ để tải xuống email. Các khách hàng khác không có vấn đề gì; ví dụ Thunderbird và Outlook; không phải hầu hết các trang web kiểm tra SSL có khả năng kiểm tra các cổng lẻ ngoại trừ cổng này . Tôi đã làm việc với cả hai nhà cung cấp trong nỗ lực xác định vấn đề, nhưng cuối cùng đã đi đến ngõ cụt với cả hai, vì tôi không biết đủ về Chứng chỉ SSL để có thể hướng dẫn nhà cung cấp hiểu lỗi nằm ở đâu.

Trong quá trình điều tra, tôi đã chú ý đến sự khác biệt về đầu ra của hai lệnh sau (Tôi đã xóa chứng chỉ khỏi đầu ra để dễ đọc):

echo "" | openssl s_client -showcerts -connect pop.gmail.com:995

KẾT NỐI (00000003)
độ sâu = 2 / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA
xác minh lỗi: num = 20: không thể lấy chứng chỉ nhà phát hành địa phương
xác minh trả lại: 0
---
Chuỗi chứng chỉ
 0 s: / C = US / ST = California / L = Mountain View / O = Google Inc / CN = pop.gmail.com
   i: / C = US / O = Google Inc / CN = Google Internet Agency G2
----- BEGIN CHỨNG NHẬN -----
----- GIẤY CHỨNG NHẬN -----
 1 s: / C = US / O = Google Inc / CN = Google Internet Agency G2
   i: / C = US / O = GeoTrust Inc./CN=GeoTrust Toàn cầu CA
----- BEGIN CHỨNG NHẬN -----
----- GIẤY CHỨNG NHẬN -----
 2 s: / C = US / O = GeoTrust Inc./CN=GeoTrust Toàn cầu CA
   i: / C = US / O = Equachus / OU = Cơ quan chứng nhận bảo mật Equachus
----- BEGIN CHỨNG NHẬN -----
----- GIẤY CHỨNG NHẬN -----
---
Chứng chỉ máy chủ
chủ đề = / C = US / ST = California / L = Mountain View / O = Google Inc / CN = pop.gmail.com
nhà phát hành = / C = US / O = Google Inc / CN = Google Internet Agency G2
---
Không có tên CA chứng chỉ khách hàng được gửi
---
Bắt tay SSL đã đọc 3236 byte và viết 435 byte
---
Mới, TLSv1 / SSLv3, Mật mã là RC4-SHA
Khóa công khai của máy chủ là 2048 bit
Tái tạo an toàn IS được hỗ trợ
Nén: KHÔNG
Mở rộng: KHÔNG
Phiên SSL:
    Giao thức: TLSv1
    Mật mã: RC4-SHA
    ID phiên: 745F84194498529B91B7D9194363CBBD23425446CF2BFF3BF5557E3C6606CA06
    Phiên-ID-ctx:
    Khóa chính
    Key-Arg: Không có
    Thời gian bắt đầu: 1397678434
    Thời gian chờ: 300 (giây)
    Xác minh mã trả lại: 20 (không thể lấy chứng chỉ nhà phát hành địa phương)
---
+ OK Gpop sẵn sàng cho các yêu cầu từ 69.3.61.10 c13mb42148040pdj
LÀM XONG

echo "" | openssl s_client -showcerts -connect secure.emailsrvr.com:995

KẾT NỐI (00000003)
độ sâu = 2 / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA
xác minh lỗi: num = 19: chứng chỉ tự ký trong chuỗi chứng chỉ
xác minh trả lại: 0
---
Chuỗi chứng chỉ
 0 s: / serialNumber = tG0GnsyAUkdX7DEo15ylNBjQJqAWZ / dD / OU = 4159320284 / OU = Xem www.rapidssl.com/resource/cps (c) 14 / OU = Kiểm soát tên miền được xác thực - RapidSSL (R)
   i: / C = US / O = GeoTrust, Inc./CN=RapidSSL CA
----- BEGIN CHỨNG NHẬN -----
----- GIẤY CHỨNG NHẬN -----
 1 s: / C = US / O = GeoTrust, Inc./CN=RapidSSL CA
   i: / C = US / O = GeoTrust Inc./CN=GeoTrust Toàn cầu CA
----- BEGIN CHỨNG NHẬN -----
----- GIẤY CHỨNG NHẬN -----
 2 s: / C = US / O = GeoTrust Inc./CN=GeoTrust Toàn cầu CA
   i: / C = US / O = GeoTrust Inc./CN=GeoTrust Toàn cầu CA
----- BEGIN CHỨNG NHẬN -----
----- GIẤY CHỨNG NHẬN -----
---
Chứng chỉ máy chủ
chủ đề = / serialNumber = tG0GnsyAUkdX7DEo15ylNBjQJqAWZ / dD / OU = 4159320284 / OU = Xem www.rapidssl.com/resource/cps (c) 14 / OU = Kiểm soát tên miền được xác thực - RapidSSL (R)
tổ chức phát hành = / C = US / O = GeoTrust, Inc./CN=RapidSSL CA
---
Không có tên CA chứng chỉ khách hàng được gửi
---
Bắt tay SSL đã đọc 3876 byte và viết 319 byte
---
Mới, TLSv1 / SSLv3, Mật mã là DHE-RSA-AES256-SHA
Khóa công khai của máy chủ là 2048 bit
Tái tạo an toàn IS được hỗ trợ
Nén: KHÔNG
Mở rộng: KHÔNG
Phiên SSL:
    Giao thức: TLSv1
    Mật mã: DHE-RSA-AES256-SHA
    ID phiên: 3F4EE3992B46727BE2C7C3E76A9A6A8D64D66EE843CB1BB17A76AE2E030C7161
    Phiên-ID-ctx:
    Khóa chính
    Key-Arg: Không có
    Thời gian bắt đầu: 1397678467
    Thời gian chờ: 300 (giây)
    Xác nhận mã trả về: 19 (chứng chỉ tự ký trong chuỗi chứng chỉ)
---
LÀM XONG

Tôi đã cố gắng để hiểu nếu điều này có ý nghĩa, bởi vì khi -CApathtùy chọn được cung cấp, các lệnh không tạo ra bất kỳ lỗi nào:

openssl s_client -CApath /etc/ssl/certs -showcerts -connect secure.emailsrvr.com:995

CONNECTED(00000003)
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify return:1
depth=1 C = US, O = "GeoTrust, Inc.", CN = RapidSSL CA
verify return:1
depth=0 serialNumber = tG0GnsyAUkdX7DEo15ylNBjQJqAWZ/dD, OU = 4159320284, OU = See www.rapidssl.com/resources/cps (c)14, OU = Domain Control Validated - RapidSSL(R), CN = secure.emailsrvr.com
verify return:1
...

openssl s_client -CApath /etc/ssl/certs -showcerts -connect pop.gmail.com:995

CONNECTED(00000003)
depth=3 C = US, O = Equifax, OU = Equifax Secure Certificate Authority
verify return:1
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify return:1
depth=1 C = US, O = Google Inc, CN = Google Internet Authority G2
verify return:1
depth=0 C = US, ST = California, L = Mountain View, O = Google Inc, CN = pop.gmail.com
verify return:1
...

Tôi cũng có thể sử dụng -CAfiletùy chọn thành công sau khi tải xuống chứng chỉ CAfile trực tiếp từ GeoTrust.

Tuy nhiên, Fog Creek dường như nghĩ rằng vấn đề nằm ở chứng chỉ, bởi vì họ đã thử thêm chứng chỉ vào Trustcửa hàng của mono mà không thành công. Tôi sẽ không đồng ý với họ, nhưng (như đã đề cập ở trên) trong khi hầu hết người kiểm tra SSL không kiểm tra cổng 995 hoặc thành công trong quá trình thử, tôi thấy trang này tạo ra lỗi SSL 7.

Tôi có giải thích đầu ra chính xác để có nghĩa là không có gì sai với chứng chỉ không?


2
Tôi nghĩ rằng lỗi "chứng chỉ tự ký trong chuỗi chứng chỉ" là lỗi cá trích đỏ. Một CA gốc luôn tự ký, vì vậy một máy chủ trả về chuỗi chứng chỉ đầy đủ của nó sẽ luôn trả về chứng chỉ tự ký. Thêm thông tin ở đây .
bennettp123

2
Trên thực tế, có vẻ như openssl s_clientkhông nhập bất kỳ certs gốc nào theo mặc định. Thay vào đó openssl s_client -connect secure.emailsrvr.com:995 -showcerts -CApath /etc/ssl/certs, hãy thử điều này: và có thể bạn sẽ thấy rằng lỗi tự ký biến mất.
bennettp123

@ bennettp123 Tôi lưu ý đầu ra của lệnh đó về phía dưới câu hỏi. Tôi có đúng không khi hiểu đầu ra của cả hai phiên bản lệnh có nghĩa là chứng chỉ hợp lệ?
jobu1324

có, theo đầu ra đó, openssl nghĩ rằng chứng chỉ hợp lệ. Tại sao nó bị từ chối? Tôi không biết. Có thể là do trường Tổ chức không được đặt, nhưng đó chỉ là dự đoán.
bennettp123

Câu trả lời:


5

Câu trả lời (như được giải thích trong bài bảo mật này. Bài đăng EE ) là hai chứng chỉ GeoTrust Global CA mà bạn thấy trong chuỗi trên thực tế không phải là cùng một chứng chỉ , một chứng chỉ có nguồn gốc từ chứng chỉ kia.

Vì CA ký chéo!

Khi chứng chỉ GeoTrust Global CA lần đầu tiên được tạo và ký, không có máy tính / trình duyệt / ứng dụng nào có được nó trong cửa hàng tin cậy của họ.

Bằng cách có một CA khác (có uy tín và phân phối có sẵn) ký chứng chỉ CA gốc GeoTrust, chứng chỉ kết quả (được gọi là chứng chỉ "cầu nối") hiện có thể được xác minh bởi CA thứ hai, mà không cần chứng chỉ CA gốc GeoTrust được khách hàng tin tưởng một cách rõ ràng.

Khi Google trình bày phiên bản được ký kết chéo của chứng chỉ CA gốc GeoTrust, một khách hàng không tin tưởng vào bản gốc chỉ có thể sử dụng chứng chỉ Equachus CA để xác minh GeoTrust - vì vậy Equachus hoạt động như một loại neo tin cậy "di sản".


Đó là lý do tại sao hai chuỗi máy chủ khác nhau và cả hai đều hợp lệ. Nhưng nó không nhất thiết là lý do cho vấn đề của OP với máy khách đơn, không có dữ liệu rõ ràng về chính xác gốc nào và không được cài đặt trong kho tin cậy của cá thể đơn thể cụ thể.
dave_thndry_085

0

Có vấn đề tương tự với fetchmail khi tôi kích hoạt kiểm tra ssl pop.gmail.com.

Tôi đã tải xuống tệp pem Equachus nhưng nó không hoạt động như vậy, phải chạy c_rehash ssl/certsmà tạo ra một liên kết tượng trưng với giá trị băm, sau đó nó chỉ hoạt động.

Ngoài ra, giá trị băm cũng có thể được biết bằng cách chạy ...

openssl x509 -in Equifax_Secure_Certificate_Authority.pem -fingerprint -subject -issuer -serial -hash -noout | sed  -n /^[0-9]/p

https://www.geotrust.com/resource/root_certert/certert/Equachus_Secure_Cert ve_Authority.pem


Bạn có thể vui lòng mở rộng phải làm gì với tệp pem được liên kết không?
sebix

# ldd / usr / bin / fetchmail | grep ssl libssl.so.10 => /lib64/libssl.so.10
chetangb

đôi khi tôi đọc được là fetchmail sử dụng openssl libs và nó chỉ trông bằng giá trị băm của cert Productforums.google.com/forum/#!topic/gmail/tqjOmqxpMKY # ldd / usr / bin / fetchmail | grep ssl libssl.so.10 => /lib64/libssl.so.10 yum whatprovides libssl.so.10 openssl-libs-1.0.1e-42.el7.i686: Thư viện mã hóa mục đích chung với triển khai TLS Repo: base từ: Cung cấp: libssl.so.10
chetangb

Vui lòng mở rộng câu trả lời của bạn và giải thích vấn đề có thể là gì, bạn muốn đạt được.
sebix

0

Trong khi tạo và định cấu hình chứng chỉ, người ta cũng nên cập nhật openssl.cnftệp (Debian - /etc/ssl/openssl.cnf), để chỉ ra đường dẫn thích hợp, tên chứng chỉ, v.v., sau đó bạn có thể chạy lệnh và kiểm tra chúng mà không cần -CApathtùy chọn.

Và theo đó các máy chủ từ xa cũng có thể kiểm tra chứng chỉ của bạn đúng cách trong trường hợp này.

Đây là phần thích hợp openssl.cnf:

####################################################################
[ ca ]

default_ca  = CA_default        # The default ca section

####################################################################
[ CA_default ]

dir     = /etc/ssl  

1
Điều này là sai . Các default_cadữ liệu trong (bất kỳ) openssl cấu hình tập tin được sử dụng chỉ cho 'ca' tiện ích để phát hành và Certs tùy chọn Thu hồi, không bao giờ để xác minh. Cách để thay đổi cửa hàng xác minh mặc định (bên cạnh việc biên dịch lại) là với các biến môi trường SSL_CERT_ {FILE, DIR}. Tuy nhiên (1) do lỗi s_clientkhông sử dụng mặc định (bản sửa lỗi được lên kế hoạch từ tháng 4 năm 2015) mà (2) OP này không muốn thay đổi.
dave_thndry_085
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.