Chứng chỉ ssl được xác minh như thế nào?


218

Chuỗi các bước cần thiết để xác minh an toàn chứng chỉ ssl là gì? Hiểu biết của tôi (rất hạn chế) là khi bạn truy cập trang web https, máy chủ sẽ gửi chứng chỉ cho khách hàng (trình duyệt) và trình duyệt lấy thông tin của nhà phát hành chứng chỉ từ chứng chỉ đó, sau đó sử dụng thông tin đó để liên hệ với nhà phát hành và bằng cách nào đó so sánh Giấy chứng nhận hiệu lực.

  • Làm thế nào chính xác là điều này được thực hiện?
  • Thế còn quá trình làm cho nó miễn nhiễm với các cuộc tấn công giữa chừng?
  • Điều gì ngăn cản một số người ngẫu nhiên thiết lập dịch vụ xác minh của riêng họ để sử dụng trong các cuộc tấn công trung gian, vì vậy mọi thứ "có vẻ" an toàn?


thấy video này rất hữu ích trong việc tìm hiểu luồng youtube.com/watch?v=T4Df5_cojAs
Krishna

Câu trả lời:


308

Đây là một lời giải thích rất đơn giản:

  1. Trình duyệt web của bạn tải xuống chứng chỉ của máy chủ web chứa khóa công khai của máy chủ web. Chứng chỉ này được ký với khóa riêng của cơ quan chứng nhận tin cậy.

  2. Trình duyệt web của bạn được cài đặt với các khóa công khai của tất cả các cơ quan cấp chứng chỉ chính. Nó sử dụng khóa công khai này để xác minh rằng chứng chỉ của máy chủ web thực sự đã được ký bởi cơ quan chứng nhận tin cậy.

  3. Chứng chỉ chứa tên miền và / hoặc địa chỉ IP của máy chủ web. Trình duyệt web của bạn xác nhận với cơ quan cấp chứng chỉ rằng địa chỉ được liệt kê trong chứng chỉ là địa chỉ mà nó có kết nối mở.

  4. Trình duyệt web của bạn tạo khóa đối xứng được chia sẻ sẽ được sử dụng để mã hóa lưu lượng HTTP trên kết nối này; điều này hiệu quả hơn nhiều so với việc sử dụng mã hóa khóa chung / riêng cho mọi thứ. Trình duyệt của bạn mã hóa khóa đối xứng với khóa chung của máy chủ web sau đó gửi lại, do đó đảm bảo rằng chỉ máy chủ web mới có thể giải mã được, vì chỉ máy chủ web mới có khóa riêng.

Lưu ý rằng cơ quan cấp chứng chỉ (CA) là điều cần thiết để ngăn chặn các cuộc tấn công trung gian. Tuy nhiên, ngay cả chứng chỉ chưa được ký sẽ ngăn người khác lắng nghe một cách thụ động về lưu lượng được mã hóa của bạn, vì họ không có cách nào để có quyền truy cập vào khóa đối xứng được chia sẻ của bạn.


4
Khoảng bước 1.5, máy chủ cũng "ký" một cái gì đó với khóa riêng được liên kết với chứng chỉ của nó. Điều này kết hợp với kiểm tra tên / IP để đảm bảo rằng chỉ có trang web sở hữu chứng chỉ mới xuất hiện.
Darron

68
Để xem ví dụ hoạt động hoàn chỉnh của quy trình này bằng cách sử dụng Firefox kết nối với amazon.com , hãy xem moserware.com/2009/06/first-few-milliseconds-of-https.html
Jeff Moser

9
Tôi không biết rằng trình duyệt của tôi được cài đặt các khóa công khai của tất cả các cơ quan cấp chứng chỉ chính. Bây giờ tôi biết làm thế nào chứng chỉ SSL của tôi được xác minh mà không có rủi ro về MITM :). Cảm ơn!
OneChillDude

5
máy chủ cần yêu cầu chứng chỉ từ CAuthority, vì vậy nó sẽ gửi yêu cầu đến nó. Làm thế nào CA có thể chắc chắn máy chủ là hợp lệ?
voipp

4
@voipp: Câu hỏi hay! Trong lịch sử đã có một vài cách tiếp cận, chẳng hạn như "gửi email từ webmaster@<domain-being-verified>hoặc" Đặt tệp này vào tên miền của bạn để chứng minh bạn sở hữu nó. "Tuy nhiên, thực sự đã có vấn đề với việc mọi người yêu cầu CA cấp chứng chỉ cho tên miền mà họ không riêng - nổi tiếng là ai đó đã tìm được một CA mờ ám để cấp cho họ một chứng chỉ cho
gmail

58

Điều đáng chú ý là ngoài việc mua chứng chỉ (như đã đề cập ở trên), bạn cũng có thể tạo tài liệu của riêng mình miễn phí; đây được gọi là "chứng chỉ tự ký". Sự khác biệt giữa chứng chỉ tự ký và chứng chỉ đã mua rất đơn giản: chứng chỉ đã mua đã được ký bởi Cơ quan cấp chứng chỉ mà trình duyệt của bạn đã biết. Nói cách khác, trình duyệt của bạn có thể dễ dàng xác thực tính xác thực của chứng chỉ đã mua.

Thật không may, điều này đã dẫn đến một quan niệm sai lầm phổ biến rằng các chứng chỉ tự ký vốn đã kém an toàn hơn so với các chứng chỉ được bán bởi CA thương mại như GoDaddy và Verisign và bạn phải sống với các cảnh báo / ngoại lệ của trình duyệt nếu bạn sử dụng chúng; điều này là không đúng .

Nếu bạn phân phối một cách an toàn chứng chỉ tự ký (hoặc chứng chỉ CA, như bobince đề xuất) và cài đặt nó trong các trình duyệt sẽ sử dụng trang web của bạn , thì nó cũng an toàn như một chứng chỉ đã mua và không dễ bị tấn công giữa chừng tấn công và chứng nhận giả mạo. Rõ ràng điều này có nghĩa là nó chỉ khả thi nếu chỉ một vài người cần truy cập an toàn vào trang web của bạn (ví dụ: ứng dụng nội bộ, blog cá nhân, v.v.).


1
Thật vậy, phân phối chứng chỉ của riêng bạn một cách an toàn là một cách để nuôi mèo, nhưng cách dễ dàng hơn nhiều là đến bất kỳ một trong số các CA được gọi là "mở". CACert.org là yêu thích của tôi. Miễn là bạn tin tưởng các bước họ thực hiện để bảo vệ việc cấp chứng chỉ của họ, thì việc nhập chứng chỉ gốc của họ là an toàn.
nsayer

6
Tôi thích nhận xét này - thật không may, nó làm nổi bật một điểm yếu rất quan trọng với CA. Giả sử bạn nhập chứng chỉ CA từ Bob Smith - Bob Smith có thể ký chứng chỉ cho bất kỳ tên miền nào (bao gồm google.com và chase.com). Đây thực sự là lý do tại sao GoDaddy / Verisign trả một số tiền lớn để được đưa vào HĐH - họ được trang bị bảo mật để đảm bảo rằng họ có séc tại chỗ để đảm bảo rằng họ không ký chứng nhận cho người độc hại. Tôi nghĩ rằng bạn sẽ có thể nói "CA này chỉ có thể ký certs cho mysite.com".
Natalie Adams

Không có chứng chỉ tự ký an toàn hơn, vì các CA ngoài đó có thể được trả tiền để ký một thứ mà họ không nên có. Nếu bạn có thể phân phối các certs CA một cách an toàn đến các điểm cuối, hãy luôn đi với các certs tự ký.
javaPhobic

Có bất kỳ CA nào miễn phí và được xác minh trong hầu hết các trình duyệt chính không? Tôi đang tìm kiếm một chứng chỉ cơ bản chỉ để xác minh rằng tôi sở hữu một email và tên miền. Những cái tôi đã tìm thấy không có trong hầu hết các trình duyệt chính.
Alex Kwitny

@NathanAdams Trong lý thuyết CA lớn có nghĩa vụ phải yêu cầu bác sĩ thú y để tránh việc ban hành giả Certs như bạn mô tả ... nhưng đọc câu chuyện này: stripe.ian.sh
nsayer

38

Bạn đã nói rằng

trình duyệt lấy thông tin của nhà phát hành chứng chỉ từ chứng chỉ đó, sau đó sử dụng thông tin đó để liên hệ với nhà phát hành và bằng cách nào đó so sánh các chứng chỉ về tính hợp lệ.

Khách hàng không phải kiểm tra với công ty phát hành vì hai điều:

  1. tất cả các trình duyệt có một danh sách được cài đặt sẵn của tất cả các khóa công khai CA chính
  2. chứng chỉ đã được ký và bản thân chữ ký đó đủ chứng minh rằng chứng chỉ đó hợp lệ bởi vì khách hàng có thể tự đảm bảo, và không cần liên hệ với máy chủ của nhà phát hành, chứng chỉ đó là xác thực. Đó là vẻ đẹp của mã hóa bất đối xứng.

Lưu ý rằng 2. không thể được thực hiện mà không có 1.

Điều này được giải thích tốt hơn trong sơ đồ lớn này tôi đã thực hiện một thời gian trước đây

(bỏ qua "chữ ký là gì?" ở phía dưới)

bãi


9
Đây phải là câu trả lời được chấp nhận. Câu trả lời của @Eli Courtwright là cách rút ngắn imho để hiểu cách chứng chỉ hoạt động.
Felix Crazzolara

Đọc điều này một lần có thể là không đủ, nhưng nếu bạn đã quen thuộc với các bit và mảnh SSL, thì điều này thực sự mang mọi thứ lại với nhau. Công việc tốt!
Cameron Gagnon

Hình ảnh tuyệt vời. Cuối cùng một cái gì đó giải thích câu hỏi của tôi. Ở mọi nơi tôi đi sâu chỉ nói "trình duyệt xác minh chứng chỉ là đúng". NHƯNG LÀM THẾ NÀO ĐỂ LÀM ĐIỀU NÀY?. Điều này cho một câu trả lời.
ori6151

8

Khách hàng có một kho lưu trữ khóa công khai của các cơ quan cấp chứng chỉ SSL. Phải có một chuỗi tin cậy từ chứng chỉ cho máy chủ thông qua các cơ quan trung gian cho đến một trong những chứng chỉ được gọi là "gốc" để máy chủ được tin cậy.

Bạn có thể kiểm tra và / hoặc thay đổi danh sách các cơ quan đáng tin cậy. Thường thì bạn làm điều này để thêm chứng chỉ cho chính quyền địa phương mà bạn biết bạn tin tưởng - như công ty bạn làm việc hoặc trường bạn học hoặc không.

Danh sách hạt giống có thể thay đổi tùy thuộc vào khách hàng bạn sử dụng. Các nhà cung cấp chứng chỉ SSL lớn đảm bảo rằng các thư mục gốc của họ có trong tất cả các trình duyệt chính ($$$).

Các cuộc tấn công giữa chừng là "không thể" trừ khi kẻ tấn công có khóa riêng của chứng chỉ gốc đáng tin cậy. Vì các chứng chỉ tương ứng được triển khai rộng rãi, việc tiếp xúc với khóa riêng như vậy sẽ có ý nghĩa nghiêm trọng đối với bảo mật của Thương mại điện tử nói chung. Do đó, các khóa riêng đó được bảo vệ rất, rất chặt chẽ.


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.