Sự khác biệt giữa SSLCertertFile và SSLCertertChainFile?


35

Thông thường với một máy chủ ảo, một ssl được thiết lập với các chỉ thị sau:

Listen 443 

SSLCertificateFile /home/web/certs/domain1.public.crt
SSLCertificateKeyFile /home/web/certs/domain1.private.key
SSLCertificateChainFile /home/web/certs/domain1.intermediate.crt

Từ: Để bật SSL cho một tên miền duy nhất trên máy chủ có nhiều vhost, cấu hình này có hoạt động không?

Sự khác biệt giữa SSLCertificateFilevà là SSLCertificateChainFilegì? Khách hàng đã mua khóa CA từ GoDaddy. Có vẻ như GoDaddy chỉ cung cấp một SSLCertificateFile(tệp .crt) và SSLCertertKeyFile (tệp .key) chứ không phải tại SSLCertificateChainFile.

Ssl của tôi vẫn hoạt động mà không có SSLCertificateChainFileđường dẫn được chỉ định?

Ngoài ra, có một đường dẫn chính tắc nơi các tập tin này nên được đặt?


1
Hầu hết thường đặt tôi thấy mọi người đưa các tập tin cert là trong /etc/ssl, /usr/local/etc/sslhoặc trong một sslcụ thể thư mục con vào trang web (ví dụ /home/www/example.com/datacó các trang web sau đó home/www/example.com/sslcó certs).
Chris S

Câu trả lời:


49

Nói đúng ra, bạn không bao giờ cần chuỗi để SSL hoạt động.

Những gì bạn luôn cần một là SSLCertificateFilevới một SSLCertificateKeyFilechứa khóa chính xác cho giấy chứng nhận đó.

Vấn đề là, nếu tất cả những gì bạn cung cấp cho Apache là chứng chỉ, thì tất cả những gì nó phải cung cấp để kết nối các máy khách là chứng chỉ - điều này không nói lên toàn bộ câu chuyện về chứng chỉ SSL đó. Nó nói, "Tôi đã được ký bởi ai đó, nhưng tôi sẽ không nói với bạn về họ".

Điều này thường hoạt động tốt, vì hầu hết các hệ thống máy khách đều có một kho chứng chỉ CA lớn (cả gốc và trung gian) mà nó có thể kiểm tra thông qua mối quan hệ ký kết phù hợp để thiết lập lòng tin. Tuy nhiên, đôi khi điều này không hoạt động; Thông thường, vấn đề bạn sẽ gặp phải là một khách hàng không có chứng chỉ cho một CA trung gian đã ký chứng chỉ của bạn.

Đó là nơi chuỗi đến; nó cho phép Apache hiển thị cho khách hàng chính xác mối quan hệ tin cậy trông như thế nào, điều này có thể giúp khách hàng điền vào chỗ trống giữa chứng chỉ của bạn, gốc mà họ tin tưởng và trung gian mà họ không biết. Chuỗi có thể được bao gồm trong cấu hình của bạn theo một trong hai cách:

  • Được nhúng trong cùng một tệp như bạn đã đặt cho bạn SSLCertificateFile, trên các dòng mới sau chứng chỉ máy chủ theo thứ tự (gốc phải ở dưới cùng). Nếu bạn thiết lập nó như thế này, bạn sẽ muốn SSLCertificateChainFiletrỏ đến cùng một tệp chính xác như SSLCertificateFile.
  • Trong một tệp riêng được cấu hình trong SSLCertificateChainFilechỉ thị; chứng chỉ CA đã cấp chứng chỉ của máy chủ phải là đầu tiên trong tệp, theo sau là bất kỳ cái nào khác ở gốc.

Kiểm tra tệp chứng chỉ mà bạn có bây giờ - Tôi cá là nó không có dữ liệu chuỗi. Mà thường hoạt động tốt, nhưng cuối cùng sẽ gây ra vấn đề với một số trình duyệt hoặc khác.


2
Tôi nghĩ rằng "thường hoạt động tốt" không thực sự áp dụng nữa cho certs GoDaddy, nếu không bao gồm trung gian. Tôi thậm chí không chắc nó có áp dụng được nữa cho những người như Verisign và Thawte hay không, vì họ đã di chuyển để làm cho trang web trở nên xa hơn so với những người cơ bản được bao gồm trong trình duyệt. Tôi tưởng tượng nó làm cho việc thu hồi dễ dàng hơn, vì việc tiêu diệt các chất trung gian đơn giản hơn.
cjc

"Được nhúng trong SSLCertertFile": Tôi muốn điều này hoạt động, nhưng dường như nó không được, và không được đề cập trong các tài liệu. Chuỗi của bạn phải được đưa vào SSLCertificateChainFile.
Steve Kehlet

@SteveKehlet Bạn nói đúng là nó không được ghi lại, nhưng tôi đã có nó hoạt động thành công trong quá khứ - làm thế nào bạn định dạng tệp tất cả trong một?
Shane Madden

1
@SteveKehlet Thật ra, bạn đúng, tôi nhớ sai; cách tôi đã thiết lập nó cho một tệp duy nhất là có cả hai SSLCertificateFileSSLCertificateChainFilechỉ vào cùng một tệp kết hợp, hoạt động - chỉnh sửa câu trả lời của tôi để sửa nó.
Shane Madden

@ShaneMadden Đẹp quá! Nó hoạt động! Cảm ơn rất nhiều vì đã tìm ra điều đó.
Steve Kehlet


4

Trên thực tế, GoDaddy cung cấp cho bạn một chuỗi trung gian:

http://support.godaddy.com/help/5238

Đây là một số thảo luận thêm.

http://support.godaddy.com/help/868/what-is-an-interantly-cert ve

Email từ GoDaddy cho bạn biết cách tải xuống chứng chỉ mới cũng sẽ có thông tin về tệp chứng chỉ trung gian. Nó ở đâu đó về phía dưới, có lẽ sau khi đôi mắt của bạn sáng lên từ verbiage và upell.

Về những gì sẽ xảy ra nếu bạn không bao gồm chỉ thị SSLCertertChainFile thích hợp: bạn sẽ thấy một cảnh báo lớn màu đỏ trong trình duyệt của mình vì trang web SSL của bạn sẽ không xác thực trong trình duyệt, vì chúng không thể tuân theo chuỗi chứng chỉ từ trang web của bạn xác nhận cho một người sở hữu bởi một cơ quan chứng nhận mà trình duyệt biết về.


2

Tôi muốn thêm vào các câu trả lời hay trước đây về SSLCertertChainFile rằng thứ tự của các chứng chỉ trong tệp đó cũng quan trọng. Các máy khách dựa trên OpenSSL sẽ tự sắp xếp thứ tự nhưng các máy khách dựa trên gnutls sẽ thất bại trên một chuỗi với thứ tự không chính xác.

Kiểm tra thứ tự với gnutls-cli, như

gnutls-cli --x509cafile /etc/ssl/certs/ca-certificates.crt -p https wwwsec.cs.uu.nl

trong đó /etc/ssl/certs/ca-certert.crt là vị trí phân phối của bạn đặt các chứng chỉ kết hợp.

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.