Làm thế nào để tôi đảm bảo rằng stunnel gửi tất cả các cer CA trung gian?


13

Một vài máy tính, nhưng không phải hầu hết, đang từ chối chứng chỉ SSL từ máy chủ web của tôi. Vấn đề dường như là một số máy tính đang từ chối các CA CAts. Vấn đề dường như được biểu hiện trên Mac OS X 10.6 khi nó không được cập nhật đầy đủ.

Theo http://www.sslshopper.com/index.php?q=ssl-checker.html#hostname=beta.asana.com - không có vấn đề gì.

Theo http://certlogik.com/sslchecker/ , không có certs trung gian nào được gửi xuống.

Chứng chỉ của tôi là từ Starfield Technologies và tôi đang sử dụng sf_bundle.crttừ đây: certs.godaddy.com/anonymous/reposeective.seam

Tôi đang xử lý SSL trên máy chủ của mình thông qua stunnel như sau stunnel.conf:

cert = $CODEZ/admin/production/proxy/asana.pem
CAfile = $CODEZ/admin/production/proxy/sf_bundle.crt
pid =
client = no

[<forwarded port>]
accept = 443
connect = 8443

Bất cứ ý tưởng những gì tôi có thể làm sai?

Câu trả lời:


17

Các CAFiletùy chọn cấu hình một CA để sử dụng cho chứng chỉ xác thực khách hàng; đây không phải là điều bạn muốn

Thay vào đó, bạn muốn tạo tệp trong certtùy chọn để chứa toàn bộ chuỗi chứng chỉ hiện hành. Bạn sẽ muốn lưu một bản sao lưu của tệp đó, sau đó tạo một bản mới; về cơ bản kết hợp hai tệp, được định dạng như thế này:

-----BEGIN CERTIFICATE-----
(certificate from asana.pem file pasted here)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(intermediate certificate here; copy-paste the top chunk from the bundle)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(root certificate here; copy-paste the bottom chunk from the bundle)
-----END CERTIFICATE-----

Điều này sẽ buộc stunnel trình bày chuỗi chứng chỉ đầy đủ cho khách hàng.

Một miếng ngon nữa; các openssl s_clientlệnh là rất hữu ích để thử nghiệm các vấn đề chuỗi chứng và kiểm tra như thế nào dịch vụ của bạn được trình bày giấy chứng nhận của nó.

Chỉnh sửa: Ok .. chuỗi gói chứng chỉ đó là ba chiều sâu, nhưng chuỗi tin cậy trông có vẻ hai chiều. Có gì đó không đúng.

Chứng chỉ hàng đầu ("Cơ quan chứng nhận an toàn Starfield") được ký bởi nhà phát hành có tên "Cơ quan chứng nhận Starfield Class 2" với dấu vân tay bắt đầu bằng ad7e1c28.. nhưng chứng chỉ thứ hai trong gói, được đặt tên chính xác giống như người ký chứng nhận đầu tiên, phải là cùng một chứng chỉ, có dấu vân tay bắt đầu 363e4734và ngày hết hạn 10 năm trước đó. Sau đó, chứng chỉ thứ ba (gốc) là người ký chứng nhận trung gian đi kèm .. nhưng cả hai chứng chỉ này đều không có bất kỳ mối quan hệ nào với chứng chỉ đầu tiên!

Nếu điều đó không có ý nghĩa, đừng lo lắng. Tóm tắt: công việc cẩu thả, có người nghiêm túc thả quả bóng xây dựng gói chứng chỉ này. Sau đó, cách tốt nhất của bạn là xuất các tệp ở định dạng cơ sở 64 từ trình duyệt xác thực chuỗi thành công, dán chúng vào định dạng mà tôi liệt kê từ đó.

Vì đó là một mớ hỗn độn không có lỗi của riêng bạn, tôi đã đoán tên DNS của bạn và lấy chứng chỉ và tôi nghĩ đây phải là chuỗi đầy đủ bạn cần: http://pastebin.com/Lnr3WHc8


Cảm ơn điều này là siêu hữu ích! Tôi không thể nâng cao vì tôi không có điểm đại diện, nhưng tôi sẽ :-)
Jack Stahl

@Jack Nếu vấn đề của bạn được giải quyết, bạn có thể chấp nhận câu trả lời ngay cả với đại diện thấp. Tôi đã chỉnh sửa bài đăng để làm rõ rằng gói chứng chỉ mà họ đã cung cấp đã bị hỏng .. và vì nó là một mớ hỗn độn, tôi đã tiếp tục và tập hợp chuỗi đầy đủ cho bạn.
Shane Madden

1

Qualys SSLLabs thực sự tiện dụng để kiểm tra cấu hình của bạn sau khi thay đổi.

https://www.ssllabs.com/ssldb/analyze.html

Kiểm tra mà bạn đã có

  • mật mã mạnh được kích hoạt
  • mật mã yếu bị vô hiệu hóa
  • chuỗi chứng chỉ hoàn thành và theo đúng thứ tự

1

Đối với bất kỳ ai khác phải đối mặt với vấn đề này, bài đăng của Shane đã thực hiện thủ thuật này, mặc dù tôi cũng phải bao gồm CAFile. Ngoài ra khi tạo chuỗi, hãy đảm bảo bạn làm theo các hướng dẫn đặt tên tệp theo bài viết này

Để xác định tên tệp bạn nên sử dụng, bạn có thể sử dụng chương trình c_hash đi kèm với OpenSSL (trong /usr/local/ssl/miscthư mục):

c_hash some_certificate.pem
a4644b49.0 => some_certificate.pem

Vì vậy, trong trường hợp trên, bạn đổi tên tệp thành a4644b49.0.
(Lưu ý rằng đó là số 0, không phải chữ 'O', sau dấu chấm trong tên tệp.)

Nếu bạn không có c_hashchương trình, bạn có thể chạy lệnh OpenSSL thích hợp để xác định giá trị băm:

openssl x509 -hash -noout -in some_certificate.pem
a4644b49

Và nếu bạn đang gặp phải vấn đề này, bc bạn đang cố gắng sử dụng websockets với android cordova, hãy chắc chắn thêm thủ công wss vào công cụ danh sách trắng của bạn, vì * chỉ bao gồm http và https.


Bài viết bạn liên kết để có một biểu ngữ lớn màu đỏ ở đầu trang có nội dung Trang này bị khấu hao , bạn có chắc chắn rằng thông tin này là chính xác, như trong hỗ trợ hay hay những điều nên làm, tại thời điểm này viết?
austinian

2
Tích cực, ít nhất là chỉ cho phần trích dẫn. stunnel sẽ tặc lưỡi một cách chao đảo trừ khi bạn đặt tên cho chuỗi chứng chỉ là hàm băm của tệp.
BrightEyed

Ngoài ra, việc thêm 0 không cần thiết cho chúng tôi. Cảm ơn đã sửa lỗi chính tả btw,
tặc lưỡi

Tuyệt vời, vui mừng khi nghe xác minh. Tôi hiểu, tôi đang ở ngày thứ 3 liên tiếp. (11, sau đó 14 giờ, hôm nay có thể là 14 giờ nữa.)
austinian

1
Eeesh, sống trong giấc mơ CNTT: D
BrightEyed
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.