2010-08-13 24 views
8

Tôi đã đấu tranh với vấn đề SSL trong hơn 1 tháng.Client SSL với CA tự ký không hoạt động

Chúng tôi đã sử dụng openssl để tạo chứng chỉ CA, máy chủ và máy khách của riêng mình. Chúng tôi cũng có bật "SSLrequire" trên máy chủ web Apache (trong htaccess điều này có thể sai), có nghĩa là bất kỳ ai cố kết nối qua https trên máy chủ cần xuất trình chứng chỉ hợp lệ

Bước như sau ;

  • tạo ra CA chìa khóa
  • tạo CSR CA
  • dấu CSR CA với CA chính

vì vậy chúng tôi có CA riêng của chúng tôi được sử dụng để ký giấy chứng nhận máy chủ và khách hàng của chúng tôi .

bước tiếp theo

  • tạo máy chủ quan trọng
  • tạo máy chủ CSR
  • dấu hiệu máy chủ CSR với CA chính

Vì vậy, chúng tôi đã chứng chỉ máy chủ & máy chủ private key của chúng tôi mà chúng tôi cài đặt thành công trên máy chủ

Tiếp theo chúng tôi

  • tạo ra khách hàng chủ chốt
  • tạo ra khách hàng CSR
  • dấu client CSR với CA chính

Sau đó chúng tôi phân phối giấy chứng nhận khách cho người dùng của chúng tôi cùng với các chứng chỉ CA. Cả hai đều được cài đặt trong trình duyệt của họ.

Khi cố gắng kết nối, chúng tôi nhận được thông báo "Người ngang hàng không nhận ra và tin tưởng CA đã cấp chứng chỉ của bạn. ".

Chúng tôi đã xác định vấn đề là chứng chỉ CA tự ký đã không được cài đặt trên máy chủ. Thông thường máy chủ sẽ hiển thị danh sách CA đáng tin cậy cho thiết bị đang cố gắng kết nối với thiết bị và thiết bị sẽ phải gửi chứng chỉ đã được ký bởi bất kỳ máy chủ nào mà CA đã cung cấp. Nhưng vì chứng chỉ CA tự ký của chúng tôi không được cài đặt trên máy chủ, trình duyệt có thể trình bày chứng chỉ có thể chấp nhận được bởi máy chủ .

Vì vậy, chúng tôi đã cài đặt chứng chỉ CA trên máy chủ - bảng điều khiển Hsphere.

Chúng tôi lấy nội dung của Giấy chứng nhận ca và sao chép nó vào "Certificate Authority File" textarea trên máy chủ và máy chủ sẽ không chấp nhận nó mọi phàn nàn "Không thể cập nhật SSL Config chìa khóa khác nhau và chứng chỉ"

Chứng chỉ CA đã được ký bởi chính nó sao cho máy chủ có thể nói rằng chứng chỉ và khóa là khác nhau.

Chúng tôi cũng đã cố gắng sao chép nội dung của cả tệp chứng chỉ CA và tệp khóa CA vào vùng văn bản "Chứng chỉ của tổ chức phát hành chứng chỉ", nhưng điều đó cũng sẽ không hoạt động.

Như tôi đã nói chúng tôi đã đấu tranh với điều đó trong hơn một tháng. Nếu bất cứ ai có thể giúp điều đó sẽ thực sự được đánh giá cao. Nếu chúng tôi phải thanh toán cho dịch vụ, vui lòng cho chúng tôi biết.

Xin cảm ơn trước.

+0

Bạn có thể muốn thử serverfault.com, nhiều khả năng tìm thấy quản trị viên đã sử dụng hsphere. – sarnold

Trả lời

13

(Có lẽ https://serverfault.com/ sẽ là một nơi tốt đẹp hơn cho câu hỏi này.)

Dưới đây là một vài lựa chọn, bạn có thể sử dụng trong cấu hình Apache httpd (Tôi không chắc chắn cách này được ánh xạ vào bảng cấu hình của bạn).

SSLCertificateFile  /etc/ssl/certs/host.pem 
SSLCertificateKeyFile /etc/ssl/private/host.key 
SSLCACertificatePath /etc/ssl/certs/trusteddir 
#SSLCACertificateFile /etc/ssl/certs/trustedcert.pem 
#SSLCADNRequestFile  /etc/ssl/certs/advertisedcas.pem 

SSLCertificateFileSSLCertificateKeyFile là những yêu cầu cơ bản để kích hoạt SSL trên máy chủ của bạn.

Vì bạn muốn xác thực chứng chỉ ứng dụng khách, bạn cần định cấu hình một trong số SSLCACertificatePath (cho thư mục) hoặc SSLCACertificateFile (đối với tệp) để nói những CA nào bạn muốn tin cậy. Đây phải là các tệp ở định dạng PEM. Bất kỳ chứng chỉ nào trong đó sẽ được coi là đáng tin cậy (mặc dù nó có thể cần phải có ràng buộc cơ bản của CA, nhưng tôi không thể nhớ, điều đó khá chuẩn nếu bạn đã tạo chứng chỉ CA gốc).

Ngoài việc này, bạn có thể đặt chứng chỉ theo số SSLCADNRequestFile. Điều này không cần thiết vì nó được điền tự động từ chỉ thị chứng chỉ SSLCACertificatePath hoặc SSLCACertificateFile, nhưng nếu bạn muốn kiểm soát nhiều hơn trên danh sách các CA, máy chủ quảng cáo có thể chấp nhận, đó là nơi cần thực hiện. Chỉ cần làm rõ, đây không phải là điều quản lý sự tin tưởng trong chứng chỉ ứng dụng khách, mà chỉ là những gì mà máy chủ quảng cáo nó có thể tin cậy, vì vậy bạn vẫn cần SSLCACertificatePath hoặc SSLCACertificateFile. Có lẽ bạn "Tệp chứng chỉ của tổ chức phát hành chứng chỉ" trong các điều khiển của bảng điều khiển cấu hình của bạn và không phải một trong hai tùy chọn còn lại.

Một cách để gỡ lỗi này là để làm điều này một dòng lệnh:

echo | openssl s_client -showcerts -connect www.your.host.example:443 

này nên liệt kê chuỗi chứng chỉ bạn trình bày đầu tiên (nó sẽ là tốt cho nó để trình bày toàn bộ dây chuyền lên đến CA , như một số khách hàng dường như cần nó đôi khi, theo như tôi nhớ). Sau đó, nó sẽ liệt kê các CA mà nó sẵn sàng chấp nhận để xác thực chứng chỉ ứng dụng khách hoặc Không có tên CA chứng chỉ ứng dụng khách nào được gửi nếu không (trong trường hợp đó có sự cố với một trong các chỉ thị được đề cập ở trên). Điều này sẽ cung cấp cho bạn ít nhất một chỉ dẫn về cách SSLCADNRequestFile hoặc SSLCACertificatePath/SSLCACertificateFile đã được định cấu hình (mặc dù đó là hai vấn đề cuối cùng quan trọng).

+1

Đáng tiếc Tôi chỉ có +1 để cung cấp: chỉ định các ràng buộc cơ bản của PEM, CA, làm rõ server-trust vs client-trust và openssl s_client -showcerts, mỗi cái đều xứng đáng với một điểm riêng của nó. – sarnold