Https có thể làm việc mà không cần chứng chỉ?


9

Gần đây, nhóm cơ sở hạ tầng của chúng tôi đã nói với nhóm phát triển của chúng tôi rằng bạn không cần chứng chỉ cho https. Họ đề cập rằng lợi ích duy nhất của việc mua chứng chỉ là giúp người tiêu dùng yên tâm rằng họ đang kết nối với trang web chính xác.

Điều này đi ngược lại mọi thứ tôi giả định về https.

Tôi đọc wikipedia và nó đề cập rằng bạn cần chứng chỉ tin cậy hoặc chứng chỉ tự ký để định cấu hình https.

Có thể định cấu hình IIS để phản hồi https mà không cần bất kỳ chứng chỉ nào không?


7
Bạn có thể thấy rằng đây chỉ là một vấn đề giao tiếp. Máy chủ của bạn có thể đã có certs tự ký sẵn sàng để đi. Ngẫu nhiên, đây là cảnh báo mà bạn tránh bằng cách sử dụng chứng chỉ tin cậy công khai: m86security.com/kb/article.aspx?id=13446 Điều đó có thể được chấp nhận trong môi trường của bạn hoặc không. Tôi muốn nói rằng đó không chỉ là sự an tâm - trong một trang web công cộng, đó là dấu hiệu của sự chuyên nghiệp!
Dan

5
Các certs tự ký cung cấp cho bạn mã hóa, nhưng nó không thể bảo vệ con người trong các cuộc tấn công trung gian, vì bạn nhận được các cảnh báo tương tự về các certs không hợp lệ hoặc chưa được xác minh cho việc tự ký như bạn làm cho một số kẻ chặn giao thông, giải mã nó, đánh cắp dữ liệu và mã hóa lại để trả về máy khách.
Bart Silverstrim

1
"Các certs tự ký cung cấp cho bạn mã hóa, nhưng nó không thể bảo vệ con người trong các cuộc tấn công trung gian [...]", trừ khi người dùng có thể tin tưởng rõ ràng các chứng chỉ tự ký đó bằng một số cơ chế ngoài băng, đó là thực tế chỉ có thể cho một cơ sở người dùng nhỏ biết bạn thông qua cơ chế ngoài băng như vậy. Không có khả năng, thực sự.
Bruno

Hoặc nếu họ tin tưởng lần đầu tiên, họ sẽ được cảnh báo nếu điều đó thay đổi trong tương lai. Giống như chữ ký SSH, thực sự.
mfinni

1
Về mặt kỹ thuật SSL / TLS không cần chứng chỉ để bảo mật kênh liên lạc. Trên thực tế, SSL / TLS có thể sử dụng cơ chế khác để bảo mật kênh: pgp certs, tên người dùng / mật khẩu, khóa chia sẻ trước hoặc "ẩn danh" (hoàn toàn không xác thực). Tương tự SSL / TLS không đảm bảo mã hóa, có rất nhiều cyphers khác nhau mà nó có thể sử dụng, bao gồm cả "null" (hoàn toàn không mã hóa). Và có các tùy chọn tương tự để xác thực digest. Vì vậy, đó là tất cả tuyệt vời, nhưng những chương trình sử dụng bất kỳ chương trình nào: về cơ bản là không có gì, chắc chắn không có máy chủ hoặc phần mềm trình duyệt chính (tất cả đều yêu cầu chứng chỉ).
Chris S

Câu trả lời:


24

Không. Bạn phải có chứng chỉ. Nó có thể tự ký, nhưng phải có một cặp khóa công khai / riêng tư để trao đổi khóa đối xứng phiên giữa máy chủ và máy khách để mã hóa dữ liệu.


Ẩn danh Diffie-Hellman, như đã lưu ý trong một câu trả lời khác, đã cho phép kết nối mà không cần chứng chỉ - nhưng các phiên bản OpenSSL hiện đại thường được biên dịch mà không có bất kỳ sự hỗ trợ nào cho ADH.
Brandon Rhodes

12

Tóm lại, không, nhưng có thể có những trường hợp tinh tế tùy thuộc vào cách bạn muốn triển khai hệ thống.

HTTPS là HTTP qua SSL / TLS và bạn có thể sử dụng SSL / TLS mà không cần chứng chỉ hoặc với chứng chỉ thuộc các loại khác ngoài X.509 .

  • Bộ mật mã ẩn danh: họ có thể cung cấp mã hóa, nhưng không cần xác thực. Thay vào đó là vô dụng khi có liên quan đến an ninh ... Để trích dẫn RFC 4346 : " Diffie-Hellman ẩn danh bị ngăn cản mạnh mẽ bởi vì nó không thể ngăn chặn các cuộc tấn công trung gian. "
  • Các khóa được chia sẻ trước : nó có cơ chế riêng để xác minh danh tính từ xa, nhưng bản chất được chia sẻ của các khóa mang đến một bộ vấn đề riêng (đặc biệt là triển khai hạn chế).
  • Bộ mật mã Kerberos : khách hàng có thể xác minh danh tính của máy chủ với tên chính của Kerberos.

Nói một cách chính xác, đặc tả HTTP qua TLS cho biết như sau:

Nói chung, các yêu cầu HTTP / TLS được tạo bằng cách hủy bỏ URI. Kết quả là, tên máy chủ cho máy chủ được biết đến với máy khách. Nếu tên máy chủ khả dụng, máy khách PHẢI kiểm tra nó dựa vào danh tính của máy chủ như được trình bày trong thông báo Chứng chỉ của máy chủ, để ngăn chặn các cuộc tấn công trung gian.

Nếu máy khách có thông tin bên ngoài về danh tính dự kiến ​​của máy chủ, kiểm tra tên máy chủ có thể bị bỏ qua. (Ví dụ: máy khách có thể đang kết nối với máy có địa chỉ và tên máy chủ động nhưng máy khách biết chứng chỉ mà máy chủ sẽ xuất hiện.) Trong trường hợp đó, điều quan trọng là thu hẹp phạm vi chứng chỉ có thể chấp nhận càng nhiều càng tốt trong để ngăn chặn con người trong các cuộc tấn công giữa. Trong trường hợp đặc biệt, khách hàng có thể đơn giản bỏ qua danh tính của máy chủ, nhưng phải hiểu rằng điều này khiến kết nối mở để tấn công tích cực.

Nói tóm lại, nó rõ ràng là dành cho việc sử dụng với chứng chỉ X.509 (nó tham chiếu rõ ràng RFC 2459, sau này được thay thế bởi RFC 3280 và 5280: PKI với chứng chỉ X.509).

Có thể có trường hợp cạnh khi bạn đang sử dụng bộ mật mã Kerberos. Việc đối xử với vé dịch vụ Kerberos của máy chủ có thể được coi là có cùng mục đích với chứng chỉ X.509 trong HTTPS thông thường, để xác minh danh tính của bên từ xa. Nó không hoàn toàn phù hợp với các quy tắc của RFC 2818 (mặc dù nó có thể nằm trong phần " Nếu máy khách có thông tin bên ngoài như danh tính dự kiến ​​của máy chủ, kiểm tra tên máy chủ có thể bị bỏ qua. "), Nhưng nó sẽ không hoàn toàn vô lý. Điều này đang được nói, tôi không nghĩ rằng các trình duyệt thông thường hỗ trợ bộ mật mã TLS Kerberos nói chung (một số có thể hỗ trợ Kerberos thông qua xác thực SPNEGO, nhưng điều đó không liên quan). Ngoài ra, điều này cũng sẽ chỉ hoạt động trong một môi trường sử dụng Kerberos phù hợp.

" [Cho] sự an tâm của người tiêu dùng rằng họ đang kết nối với trang web chính xác " thực sự là một trong những yêu cầu chính để đảm bảo liên lạc giữa họ và máy chủ của bạn. Sử dụng chứng chỉ mà họ có thể xác minh, với các quy ước đặt tên thích hợp (RFC 2818 hoặc gần đây hơn RFC 6125).


1

Bạn không thể sử dụng https mà không có bất kỳ chứng chỉ nào. Bạn cần mua chứng chỉ tin cậy hoặc tạo chứng chỉ tự ký để thử nghiệm. Một phần của việc định cấu hình máy chủ web của bạn để sử dụng https là trỏ nó đến các tệp chính. Tất nhiên, điều này áp dụng cho tất cả các máy chủ web không chỉ cho iis.


Để kiểm tra xem OpenSSL của bạn có thể hỗ trợ các kết nối không có chứng chỉ hay không, hãy chạy openssl ciphersvà tìm một ADHgiao thức như ADH-AES256-SHA- nếu có giao thức như vậy, thì về mặt kỹ thuật bạn có thể thiết lập kết nối mà không cần bất kỳ chứng chỉ nào liên quan.
Brandon Rhodes
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.