Lỗi SSL: không thể lấy chứng chỉ của tổ chức phát hành địa phương


95

Tôi đang gặp sự cố khi định cấu hình SSL trên máy chủ Debian 6.0 32bit. Tôi tương đối mới với SSL nên hãy chịu khó với tôi. Tôi bao gồm nhiều thông tin nhất có thể.
Lưu ý: Tên miền thật đã được thay đổi để bảo vệ danh tính và tính toàn vẹn của máy chủ.

Cấu hình

Máy chủ đang chạy bằng nginx. Nó được cấu hình như sau:

ssl_certificate           /usr/local/nginx/priv/mysite.ca.chained.crt;
ssl_certificate_key       /usr/local/nginx/priv/mysite.ca.key;
ssl_protocols             SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers               HIGH:!aNULL:!MD5;
ssl_verify_depth          2;

Tôi đã xâu chuỗi chứng chỉ của mình bằng phương pháp được mô tả ở đây

cat mysite.ca.crt bundle.crt > mysite.ca.chained.crt

đâu mysite.ca.crtlà chứng chỉ do cơ quan ký cấp cho tôi, và bundle.crtchứng chỉ CA cũng do cơ quan ký của tôi gửi cho tôi. Vấn đề là tôi đã không mua chứng chỉ SSL trực tiếp từ GlobalSign mà thay vào đó thông qua nhà cung cấp dịch vụ lưu trữ của tôi, Singlehop.

Thử nghiệm

Chứng chỉ xác thực đúng trên Safari và Chrome, nhưng không xác thực trên Firefox. Cuộc tìm kiếm ban đầu cho thấy có thể là do CA gặp vấn đề.

Tôi đã khám phá câu trả lời cho một câu hỏi tương tự , nhưng không thể tìm ra giải pháp, vì tôi không thực sự hiểu mục đích của mỗi chứng chỉ.

Tôi đã sử dụng s_client của openssl để kiểm tra kết nối và nhận được kết quả đầu ra dường như cho biết vấn đề tương tự như câu hỏi tương tự . Lỗi như sau:

depth=0 /OU=Domain Control Validated/CN=*.mysite.ca
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 /OU=Domain Control Validated/CN=*.mysite.ca
verify error:num=27:certificate not trusted
verify return:1

Có thể tìm thấy chi tiết đầy đủ về phản hồi của openssl (với các chứng chỉ và thông tin không cần thiết bị cắt bớt) tại đây .

Tôi cũng thấy cảnh báo:

No client certificate CA names sent

Có thể rằng đây là vấn đề? Làm cách nào để đảm bảo rằng nginx gửi các tên CA này?

Nỗ lực giải quyết vấn đề

Tôi đã cố gắng giải quyết vấn đề bằng cách tải xuống CA gốc trực tiếp từ GlobalSign, nhưng gặp lỗi tương tự. Tôi đã cập nhật CA gốc trên máy chủ Debian của mình bằng update-ca-certificateslệnh, nhưng không có gì thay đổi. Điều này có thể là do CA được gửi từ nhà cung cấp của tôi là chính xác, vì vậy nó dẫn đến chứng chỉ bị xâu chuỗi hai lần, điều này không giúp ích được gì.

0 s:/OU=Domain Control Validated/CN=*.mysite.ca
   i:/C=BE/O=GlobalSign nv-sa/CN=AlphaSSL CA - SHA256 - G2
1 s:/O=AlphaSSL/CN=AlphaSSL CA - G2
   i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
2 s:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
   i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA

Bước tiếp theo

Vui lòng cho tôi biết nếu tôi có thể thử bất cứ điều gì hoặc nếu tôi chỉ định cấu hình toàn bộ không đúng.


10
Chứng chỉ miền của bạn được ký bởi nhà phát hành AlphaSSL CA - SHA256 - G2. Tuy nhiên, chuỗi của bạn cung cấp trung gian AlphaSSL CA - G2. Tôi tin rằng bạn cần xóa chứng chỉ trung gian hiện tại ( AlphaSSL CA - G2) và thay thế nó bằng chứng chỉ có dấu vân tay ae:bf:32:c3:c8:32:c7:d7...( AlphaSSL CA - SHA256 - G2). Ngoài ra, bạn không cần phải gửi GlobalSign Root CA. Khách hàng phải bắt nguồn từ sự tin cậy của họ (hoặc trên trung gian).
jww

6
Bạn sẽ có thể kiểm tra điều này cục bộ với OpenSSL. Cố gắng openssl s_client -connect <server>:<port> -CAfile <GlobalSign Root CA.pem>. Lệnh phải hoàn thành bằng một Verify OK (0)hoặc tương tự. Khi bạn nhận được Verify OK (0), máy chủ được định cấu hình đúng cách (đối với sự cố này).
jww

6
Khi bạn tải xuống bản trung gian mới đó, bạn sẽ cần chuyển đổi nó sang PEM với openssl x509 -in gsalphasha2g2.crt -inform DER -out Alpha-SHA256-G2.pem -outform PEM.
jww

Xinh đẹp. Tôi tin rằng nó đang hoạt động. Vì một số lý do, tôi nghĩ rằng tôi đã cố gắng lấy SHA 256, nhưng tôi phải chuyển đổi nó đúng cách. Xin chân thành cảm ơn.
Jamie Counsell

1
vâng, điều cần tìm là các cặp Chủ đề-Cấp phát đang quay trở lại gốc hoặc CA. OpenSSL hiển thị chúng dưới dạng i:s:dưới dạng s_client. Sau khi bạn có chứng chỉ bạn cần, hãy nối tất cả chúng ngoại trừ gốc. Bởi vì chúng được nối với nhau, chúng cần ở định dạng PEM. URL rất hữu ích. Nó đang già đi và cố gắng giúp đỡ những người không cung cấp thông tin để chúng tôi có thể xem xét nó tại địa phương s_client. (Nếu bạn không cung cấp URL, tôi sẽ bỏ phiếu đóng).
jww

Câu trả lời:



-1

Nếu bạn là người dùng linux Cập nhật nút lên phiên bản mới hơn bằng cách chạy

sudo apt update

 sudo apt install build-essential checkinstall libssl-dev

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.35.1/install.sh | bash

nvm --version

nvm ls

nvm ls-remote

nvm install [version.number]

điều này sẽ giải quyết vấn đề của bạn

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.