Làm thế nào để bạn sửa một chuỗi SSL không hoàn chỉnh


29

Tôi đã cài đặt chứng chỉ SSL Go Daddy và hoạt động tốt ở mọi nơi trừ Android.

https://www.ssllabs.com/ssltest/analyze.html nói rằng chuỗi không đầy đủ và tôi đã đọc trên stack stack rằng chuỗi SSL sai thứ tự sẽ thất bại trên Android.

Nhưng làm thế nào để tôi đặt nó theo thứ tự? Trên máy chủ của tôi? Chứng chỉ SSL cần phải được đánh dấu lại? Di chuyển mọi thứ trên FTP?

Câu trả lời:


19

Theo dõi câu trả lời của zakjan, tôi gặp một vấn đề khi cố gắng sử dụng jquery để thực hiện yêu cầu AJAX trên máy chủ mới bảo mật của mình, trong một webview android. Nó hoạt động trong trình duyệt, nhưng không phải trong ứng dụng của tôi.

Tôi đã sử dụng trang web này: https://certificatechain.io/

Tôi đã dán vào văn bản của tệp .crt đã ký của tôi, tôi đã lấy lại từ Comodo (positiveSSL) và nó đã cho tôi một bản tóm tắt tất cả mọi thứ tôi cần. Tôi đã lưu nó dưới dạng tên miền của mình + "chain.crt" (xem bên dưới)

Sau đó, trong cấu hình apache của tôi, tôi đã nhập một cái gì đó như thế này cho máy chủ ảo cụ thể đó:

SSLEngine On
SSLCertificateFile /etc/ssl/localcerts/example_com.crt
SSLCertificateKeyFile /etc/ssl/localcerts/example.com.key
SSLCACertificateFile /etc/ssl/localcerts/example.com.chain.crt

Sau đó, webview của ứng dụng Android của tôi không gặp vấn đề gì khi sử dụng ajax để POST lên máy chủ của tôi. Tôi đã thử nó trên 2 thiết bị trong thế giới thực, một chạy 2.3.4, một chạy 4. một cái gì đó. Và trên trình giả lập chạy 2.3. Tất cả đều hoạt động.

Tôi hi vọng cái này giúp được.


1
Chìa khóa cho tôi là thêm SSLCACertificateFilechỉ thị và trỏ nó vào tệp CA mà chính quyền của tôi đã đưa cho tôi. Nó sẽ không hoạt động nếu tôi chỉ đơn giản ghép các chứng chỉ khác vào tệp chứng chỉ của mình.
Alex W

Trong các lỗi cũ hơn, SSLCertertChainFile có thể được sử dụng thay vì SSLCACertertFile (chỉ trong trường hợp bạn tìm kiếm khóa này trong cấu hình của mình và không thể tìm thấy nó).
dr0i

Thật đáng kinh ngạc, nhưng câu trả lời @Richard đang sử dụng trang certificatechain.io và trang này cho biết "... lấy cảm hứng từ trình giải quyết chuỗi chứng nhận của Jan Žák", người đã trả lời câu hỏi này tại đây: superuser.com/a/866523/92500 , cảm ơn @zakjan!
Andrés Morales

Đây SSLCACertificateFilelà dòng tôi đã bỏ lỡ. Ban đầu, tôi cho rằng CA của mình quá mới vì SSL hoạt động khi được yêu cầu từ một số trình duyệt / HĐH, nhưng không phải là các trình duyệt khác. Sử dụng decoder.link/sslchecker đã giúp làm rõ rằng cấu hình của tôi bị sai và câu trả lời này đã được sửa. Cảm ơn bạn!!
josephdpurcell

9

Chuỗi nằm trong tệp crt, rằng SSL gốc đã hoạt động.

Đối với GoDaddy, có chứng nhận thứ 2 - gd_bundle.crt

Sao chép thông tin này và thêm nó vào crt được cài đặt trên máy chủ.

Vì vậy, crt ban đầu trên máy chủ có 1 chứng chỉ và sau đó sẽ có 3 chứng chỉ trên cùng một tệp. Đây là chuỗi.

Tôi vẫn có chứa neo trong các vấn đề về chuỗi trên ssllabs.com nhưng đây không phải là vấn đề, chỉ là một tùy chọn để vào hoặc ra - theo - /security/24561/ssltest-chain-issues -contains-neo / 24566 # 24566


2
Để thoát khỏi các vấn đề về chuỗi, hãy xóa chứng chỉ cuối cùng khỏi gd_bundle.crt
sanmai

7

Bạn có thể giải quyết vấn đề chuỗi chứng chỉ không đầy đủ bằng tay bằng cách ghép tất cả các chứng chỉ từ chứng chỉ với chứng chỉ gốc đáng tin cậy (độc quyền, theo thứ tự này), để ngăn chặn các vấn đề đó. Lưu ý, chứng chỉ gốc đáng tin cậy không nên ở đó, vì nó đã được bao gồm trong kho chứng chỉ gốc của hệ thống.

Bạn sẽ có thể lấy các chứng chỉ trung gian từ nhà phát hành và tự mình ghép chúng lại với nhau. Btw, tôi đã viết một kịch bản để tự động hóa thủ tục, nó cần một chứng chỉ để tạo đầu ra của các chứng chỉ được xâu chuỗi chính xác. https://github.com/zakjan/cert-chain-resolver


Điều này nghe có vẻ như là một giải pháp chỉ "đánh lừa" máy cục bộ nghĩ rằng chứng chỉ được thiết lập chính xác.
Alex W

Không. Gói chứng chỉ đầu ra được cho là sẽ được tải lên một máy chủ để gửi nội dung trang web. Mỗi khách hàng sẽ nhận được giấy chứng nhận với các trung gian của nó.
zakjan
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.