Có phải là xấu khi chuyển hướng http sang https?


247

Tôi vừa cài đặt Chứng chỉ SSL trên máy chủ của mình.

Sau đó, nó sẽ thiết lập chuyển hướng cho tất cả lưu lượng truy cập trên miền của tôi trên Cổng 80 để chuyển hướng đến Cổng 443.

Nói cách khác, tất cả http://example.comlưu lượng truy cập của tôi hiện được chuyển hướng đến https://example.comphiên bản phù hợp của trang.

Việc chuyển hướng được thực hiện trong tệp Máy chủ ảo Apache của tôi với nội dung như thế này ...

RewriteEngine on
ReWriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L] 

Câu hỏi của tôi là, có bất kỳ hạn chế nào khi sử dụng SSL không?

Vì đây không phải là Chuyển hướng 301, tôi sẽ mất liên kết / xếp hạng trong công cụ tìm kiếm bằng cách chuyển sang https?

Tôi đánh giá cao sự giúp đỡ. Tôi đã luôn muốn thiết lập SSL trên một máy chủ, chỉ để thực hành nó và cuối cùng tôi đã quyết định làm nó tối nay. Nó dường như đang hoạt động tốt cho đến nay, nhưng tôi không chắc có nên sử dụng điều này trên mỗi trang hay không. Trang web của tôi không phải là Thương mại điện tử và không xử lý dữ liệu nhạy cảm; chủ yếu là về ngoại hình và sự hồi hộp khi cài đặt nó cho việc học.


VẤN ĐỀ CẬP NHẬT

Thật kỳ lạ Bing tạo ảnh chụp màn hình này từ trang web của tôi bây giờ rằng nó đang sử dụng HTTPS ở mọi nơi ...

nhập mô tả hình ảnh ở đây


12
[WTF - Tôi không thể thêm câu trả lời (mặc dù dường như tôi có đủ đại diện).] Câu trả lời của tôi sẽ (một phần) là SOMETIMES IT IS BAD . Cân nhắc chuyển COOKIE hoặc Khóa API trong GET qua HTTP. Nếu trang web của bạn chuyển hướng các yêu cầu HTTP đến các yêu cầu HTTPS, các cuộc gọi này sẽ hoạt động, nhưng COOKIE hoặc Khóa API sẽ được truyền đi rõ ràng. Một số API tắt HTTP, một cách tiếp cận mạnh mẽ hơn - hoàn toàn không có HTTP để bạn thậm chí không thể làm cho nó hoạt động trừ khi bạn sử dụng HTTPS. Ví dụ: "Tất cả các yêu cầu API phải được thực hiện qua HTTPS. Các cuộc gọi được thực hiện qua HTTP đơn giản sẽ thất bại" từ Stripe.com/docs/api?lang=php#authentication
mã hóa

8
@codingoutloud - thay thế là toàn bộ sự việc xảy ra qua HTTP mà không có HTTPS nào cả. Làm thế nào là tốt hơn?
Mark Henderson

3
@BenCrowell, đó là bởi vì một cổng bị giam cầm trông rất khủng khiếp giống như một sslstripcuộc tấn công chuyển hướng kiểu (cả hai đều là những kẻ tấn công yêu cầu trung gian) nên các trình duyệt nhận biết của HSTS sẽ chặn cả hai.
Jeffrey Hantin

3
lưu ý rằng việc sử dụng https có nghĩa là mọi thứ bạn bao gồm cũng phải là https hoặc nó có thể không tải - ví dụ: tải jquery bằng cách sử dụng src="://example.com/jquery.js"- lưu ý việc thiếu httphoặc httpsvì vậy trình duyệt tải một cái phù hợp. Tôi gặp ác mộng khi cố gắng tải một số nội dung được nhúng vào Amazon khi API (được tải qua https) tạo ra các liên kết http - có nghĩa là chúng không hoạt động chính xác cho đến khi tôi tìm thấy tham số không có giấy tờ để chuyển các liên kết https
Cơ bản

3
Jason; bản cập nhật của bạn phải là một câu hỏi mới, có thể là trên Webmaster vì nó không liên quan (về mặt kỹ thuật) với câu hỏi ban đầu của bạn. Nhưng có lẽ các tờ phong cách của bạn đến từ một miền không an toàn.
Mark Henderson

Câu trả lời:


316

Các [R]lá cờ riêng của nó là một 302chuyển hướng ( Moved Temporarily). Nếu bạn thực sự muốn mọi người sử dụng phiên bản HTTPS của trang web của bạn (gợi ý: bạn làm), thì bạn nên sử dụng [R=301]để chuyển hướng vĩnh viễn:

RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R=301,L] 

A 301giữ cho tất cả các pageranks google-fu và kiếm được của bạn còn nguyên vẹn . Đảm bảo mod_rewriteđược bật:

a2enmod rewrite

Để trả lời câu hỏi chính xác của bạn:

Có phải là xấu khi chuyển hướng http sang https?

Trời ơi không. Nó rất tốt.


3
Cảm ơn thông tin, ông chủ của tôi đang cho tôi biết lý do anh ta chỉ chạy https trên một số trang nhất định trên trang web của mình, là vì nó sử dụng nhiều tài nguyên máy chủ hơn để chạy nó trên mỗi trang. Bạn có biết gì về điều đó hoặc nếu điều đó đúng?
JasonDavis

9
@jasondavis Chỉ khi bạn không dành vài phút để tối ưu hóa nó .
Michael Hampton

10
"nó sử dụng nhiều tài nguyên máy chủ hơn để chạy nó trên mỗi trang." Các CPU hiện đại có các tính năng tăng tốc mã hóa giúp SSL gần như miễn phí. Đừng lo lắng về chi phí.
Adam Davis

41
@AdamDavis Thuật toán tiền điện tử có thể nhẹ, nhưng chi phí bắt tay vẫn tồn tại. Ngoài ra, HTTPS ngăn các proxy HTTP lưu trữ nội dung của bạn. Trong hầu hết các trường hợp, chi phí hoạt động của HTTPS là tối thiểu và đáng giá, nhưng hãy cẩn thận về việc khái quát hóa quá mức.
200_success

6
Nó giết bộ nhớ đệm được chia sẻ, rất hữu ích cho một số kiểu sử dụng của trang web và thường bảo vệ rất ít (điều quan trọng là mọi người có thể biết bạn đã truy cập trang web, nhưng không phải là chi tiết về những gì bạn đã làm? Đó là tình huống duy nhất mà SSL hữu ích). Ưu điểm chính của SSL trên mọi tài nguyên không phải là bạn cần "bảo mật", ví dụ như mọi người đang xem "về chúng tôi", nhưng bạn không thể trượt lên và không sử dụng nó trong trường hợp bạn nên.
Jon Hanna

49

Trong khi tôi ủng hộ ý tưởng về các trang web chỉ SSL, tôi sẽ nói một nhược điểm là chi phí phụ thuộc vào thiết kế trang web của bạn. Ý tôi là ví dụ nếu bạn đang phục vụ nhiều hình ảnh riêng lẻ trong thẻ img, điều này có thể khiến trang web của bạn chạy chậm hơn rất nhiều. Tôi sẽ khuyên bất cứ ai sử dụng máy chủ chỉ SSL để đảm bảo chúng hoạt động như sau.

  1. Kiểm tra toàn bộ trang web để biết các liên kết nội bộ và đảm bảo tất cả chúng đều sử dụng HTTPS nếu bạn chỉ định tên miền riêng của mình trong các liên kết, do đó bạn không gây ra chuyển hướng của riêng mình.
  2. Cập nhật của bạn <meta property="og:url"để sử dụng phiên bản https của tên miền của bạn.
  3. Nếu bạn sử dụng <base href=lại cập nhật để sử dụng HTTPS.
  4. Cài đặt giao thức SPDY nếu có thể
  5. Đảm bảo sử dụng các hình ảnh CSS Image nếu có thể, để giảm số lượng yêu cầu.
  6. Cập nhật sơ đồ trang web của bạn để chỉ ra trạng thái https, do đó, các con nhện theo thời gian tìm hiểu thay đổi này.
  7. Thay đổi tùy chọn Công cụ tìm kiếm như Công cụ quản trị trang web của Google để ưu tiên HTTPS
  8. Trường hợp có thể giảm tải bất kỳ phương tiện chiến thuật nào đến các máy chủ HTNPS CDN.

Nếu những điều trên được giải quyết, thì tôi nghi ngờ bạn sẽ có nhiều vấn đề.


SPDY là một gợi ý tốt; có thậm chí dường như là một mô-đun thêm hỗ trợ SPDY để Apache 2.x .
Calrion

18
Sử dụng "//yourserver.com/some-uri" thay vì " mineerver.com/some-uri " giải quyết vấn đề (1) vì trình duyệt sẽ chọn lược đồ phù hợp (http hoặc https) tùy thuộc vào lược đồ mà trang được tải .
MauganRa

1
@MauganRa Tất nhiên trừ khi đó là một liên kết từ trang bài viết http đến trang đăng nhập https chẳng hạn.
Mołot

4
Google thấy URL mà ai đó đang truy cập thông qua Referertiêu đề. Ví dụ: trang web này sử dụng jQuery từ CDN của Google và trình duyệt của tôi sẽ gửi yêu cầu tới Google mỗi khi tôi tải lại trang web. Do đó, một Referertiêu đề cũng được gửi tới Google, được đặt thành URL của trang web này. Vì vậy, Google có thể theo dõi các trang web tôi truy cập trong thời gian địa chỉ IP của tôi không thay đổi (và nếu tôi sử dụng dịch vụ của Google trong thời gian này, Google cũng có thể kết nối thông tin này với tài khoản Google của tôi).
Stephan Kulla

1
Đối với 1) Tôi vừa thực hiện tìm kiếm và thay thế trong cơ sở dữ liệu MySQL của mình http thành https ... Tôi đang sử dụng WordPress để giúp cập nhật hàng trăm liên kết thực sự dễ dàng
JasonDavis

38

Tôi đã thiết lập https thì bạn nên sử dụng nó ở mọi nơi trên trang web. Bạn sẽ tránh được rủi ro về các vấn đề nội dung hỗn hợp và nếu bạn có sẵn các công cụ cần thiết, tại sao không làm cho toàn bộ trang web an toàn?

Về chuyển hướng từ http sang https, câu trả lời không đơn giản.

Chuyển hướng sẽ giúp người dùng của bạn dễ dàng hơn rất nhiều, họ chỉ cần nhập vào anysite.com và được chuyển hướng đến https.

Nhưng. Điều gì sẽ xảy ra nếu người dùng đôi khi ở trên một mạng không an toàn (hoặc gần với Troy Hunt và Dứa của anh ta )? Sau đó, người dùng sẽ yêu cầu http://whthingsite.com thoát khỏi thói quen cũ. Đó là http. Điều đó có thể bị xâm phạm. Chuyển hướng có thể trỏ đến https://whthingsite.com.some.infr Hạ tầng.long.strange.url.hacker.org . Đối với một người dùng bình thường, nó sẽ trông khá hợp pháp. Nhưng giao thông có thể bị chặn.

Vì vậy, chúng tôi có hai yêu cầu cạnh tranh ở đây: Để thân thiện với người dùng và được an toàn. May mắn thay, có một phương thuốc được gọi là tiêu đề HSTS . Với nó, bạn có thể kích hoạt chuyển hướng. Trình duyệt sẽ chuyển đến trang web bảo mật, nhưng nhờ tiêu đề HSTS cũng nhớ nó. Khi người dùng gõ vào anysite.com ngồi trên mạng không an toàn đó, trình duyệt sẽ truy cập https ngay lập tức mà không chuyển qua chuyển hướng qua http. Trừ khi bạn xử lý dữ liệu rất nhạy cảm, tôi nghĩ đó là sự đánh đổi công bằng giữa bảo mật và khả năng sử dụng cho hầu hết các trang web. (Khi gần đây tôi thiết lập một ứng dụng xử lý hồ sơ y tế, tôi đã truy cập tất cả https mà không cần chuyển hướng). Thật không may, Internet Explorer không hỗ trợ HSTS ( nguồn), vì vậy nếu đối tượng mục tiêu của bạn chủ yếu sử dụng IE và dữ liệu nhạy cảm, bạn có thể muốn tắt chuyển hướng.

Vì vậy, nếu bạn không nhắm mục tiêu người dùng IE, hãy tiếp tục và sử dụng chuyển hướng, nhưng cũng bật tiêu đề HSTS.


Nhiều người cần phải chú ý đến điều này là tốt. Một điều nữa là mọi người cho rằng họ an toàn vì điểm cuối là HTTPS, bỏ qua thực tế là tất cả thông tin được gửi đến trang trong GET hoặc POST đều ở dạng văn bản thuần túy.
Velox

3
@Velox - Tôi không nghĩ hàm ý "mọi người cho rằng họ an toàn vì điểm cuối là HTTPS, bỏ qua thực tế là tất cả thông tin được gửi đến trang trong GET hoặc POST đều ở dạng văn bản thuần túy" là khá chính xác. Mặc dù có một số vấn đề, các thông số truy vấn GET không di chuyển rõ ràng trong quá trình vận chuyển qua HTTPS. Xem ví dụ: stackoverflow.com/questions/323200/ Tải trọng POST POST cũng được bảo vệ, trong khi cũng không dễ bị đăng nhập và tiêu đề người giới thiệu.
mã hóa

@codingoutloud Đó là quan điểm của tôi. Qua HTTPS, chúng được mã hóa, nhưng trong yêu cầu ban đầu đến trang HTTP thì không.
Velox

1
@Velox - Nếu toàn bộ trang web đang chuyển hướng đến HTTPS, thì không có khả năng bất kỳ tham số GET nào sẽ được gửi trước khi HTTPS khởi động (và mọi thứ sẽ ở lại HTTPS sau thời điểm đó). Vẫn còn một yêu cầu ban đầu nơi cookie sẽ được gửi, có thể được khắc phục bằng HSTS ... và một cửa sổ tấn công nhỏ cho SSLStrip, có thể bị JavaScript đánh bại, nhưng đó là cuộc chạy đua vũ trang của riêng nó.
Brilliand

@Brilliand Điểm công bằng, nhưng một điểm yếu trong bảo mật làm cho toàn bộ điều yếu. Luôn luôn đáng xem xét.
Velox

22

Không có gì sai với điều này, và trên thực tế, đó là cách tốt nhất (đối với các trang web nên được phục vụ qua kết nối an toàn). Trên thực tế, những gì bạn đang làm khá giống với cấu hình tôi đang sử dụng:

<VirtualHost 10.2.3.40:80>
  ServerAdmin me@example.com
  ServerName secure.example.com
  RedirectMatch 301 (.*) https://secure.example.com$1
</VirtualHost>

# Insert 10.2.3.40:443 virtual host here :)

Các 301mã trạng thái cho thấy sự vĩnh cửu chuyển hướng, hướng dẫn khách hàng có khả năng sử dụng các URL an toàn cho các kết nối trong tương lai (ví dụ như cập nhật các bookmark).

Nếu bạn sẽ chỉ phục vụ trang web qua TLS / SSL, tôi khuyên bạn nên sử dụng một chỉ thị tiếp theo để bật HTTP Strict Transport Security (HSTS) trong máy chủ ảo an toàn của bạn :

<IfModule mod_headers.c>
  Header set Strict-Transport-Security "max-age=1234; includeSubdomains"
</IfModule>

Tiêu đề này hướng dẫn các khách hàng có khả năng (hầu hết trong số họ hiện nay, tôi tin rằng) họ chỉ nên sử dụng HTTPS với tên miền được cung cấp ( secure.example.com, trong trường hợp này) trong những 1234giây tiếp theo . Các ; includeSubdomainsphần là tùy chọn và chỉ ra rằng chỉ áp dụng không chỉ để tên miền hiện tại, nhưng bất kỳ dưới nó (ví dụ alpha.secure.example.com). Lưu ý rằng tiêu đề HSTS chỉ được các trình duyệt chấp nhận khi được phân phối qua kết nối SSL / TLS!

Để kiểm tra cấu hình máy chủ của bạn theo thông lệ tốt nhất hiện tại, một tài nguyên miễn phí tốt là dịch vụ Kiểm tra máy chủ SSL của Qualys ; Tôi đang nhắm đến việc đạt ít nhất điểm A- (bạn không thể nhận được nhiều hơn thế với Apache 2.2 do thiếu hỗ trợ cho mã hóa đường cong elip).


Tôi nên thêm, gửi tiêu đề Strict-Transport-Security: max-age=0sẽ phủ nhận bất kỳ chỉ thị nào trước đó; như mọi khi, điều này phải được gửi qua HTTPS để được chấp nhận, nhưng đó là cách hủy bỏ mọi thứ hữu ích nếu bạn quyết định bạn cũng cần sử dụng HTTP trên miền.
Calrion

5

Ồ chuyển hướng HTTP sang HTTPS là một điều rất tốt và tôi không thể thấy bất kỳ nhược điểm nào cho việc đó.

Chỉ cần đảm bảo khách hàng của bạn có CA phù hợp để tránh những cảnh báo không thân thiện với người dùng về chứng chỉ trong trình duyệt.

Ngoài ra, cách bạn đã thiết lập Apache để chuyển hướng đến HTTPS có vẻ ổn.


5

Có phải là xấu khi chuyển hướng http sang https?

Không hoàn toàn không. Trên thực tế, đó là một điều tốt để làm!

Trên chuyển hướng:

Nó có thể hiệu quả hơn, bằng cách loại bỏ hoàn toàn các bản viết lại . Đây là cấu hình của tôi trong một tình huống tương tự ...

<VirtualHost *:80>
  ServerName domainname.com

  <IfModule mod_alias.c>
    Redirect permanent / https://domainname.com/
  </IfModule>
</VirtualHost>

4

HTTPS không chính xác hoàn toàn. Tất nhiên, thông thường buộc HTTPS là một điều tốt. Nó ngăn chặn tội phạm bình thường làm bất cứ điều gì xấu cho người dùng của bạn.

Nhưng hãy nhớ kiểm tra Cài đặt SSL của bạn như cài đặt SSLCiphers. Vô hiệu hóa những thứ như tiền điện tử RC4, giao thức SSLv2 và SSLv3. Ngoài ra, bạn nên tìm hiểu xem liệu các hệ thống mã hóa hệ thống mã hóa của hệ thống của bạn có hỗ trợ TLS1.2 hay không (đó là thứ bạn muốn có;))

Bật SSL, đó là một điều tốt.


Entropy không được sử dụng hết ( ít nhất là nếu bạn phòng thủ chống lại những kẻ tấn công trên Trái đất thay vì làm voodoo ). Hoặc bạn bắt đầu với entropy không đủ, và bạn không thể làm bất cứ điều gì đòi hỏi sự ngẫu nhiên, hoặc bạn bắt đầu với entropy đủ, và bạn tiếp tục có đủ entropy cho dù bạn tạo ra bao nhiêu ngẫu nhiên.
Gilles

Xin lỗi, cái gì ? Có một số hoạt động trên Linux nhấn mạnh vào entropy mạnh có nguồn gốc từ phần cứng thay vì entropy có thể đủ tốt dựa trên PRNG và chúng thực sự có thể chặn nếu độ sâu của nhóm thấp. Chắc chắn có thể bắt đầu với entropy đủ trên một hệ thống Linux, nhưng bằng cách sử dụng quá mức để thoát hồ bơi, khiến một số hoạt động bị chặn.
MadHatter

3

Cá nhân tôi hoàn toàn sử dụng SSL để bảo mật các kết nối trên web, tuy nhiên tôi cảm thấy một điểm mà tất cả các câu trả lời khác ở đây đã bỏ lỡ là không phải mọi thiết bị và phần mềm có khả năng kết nối HTTP đều có thể sử dụng SSL, do đó tôi sẽ xem xét việc cung cấp một số cách để người dùng tránh nó nếu nó không được hỗ trợ cho họ. Cũng có thể mọi người ở một số quốc gia nơi công nghệ mã hóa là bất hợp pháp sau đó sẽ không được phép truy cập trang web của bạn. Tôi sẽ xem xét việc thêm một trang đích không được mã hóa với một liên kết để buộc phiên bản không an toàn của trang web nhưng trừ khi người dùng chọn cụ thể như bạn đã nói và chỉ chuyển tiếp chúng đến phiên bản HTTPS.


Một vấn đề với các giải pháp như có một trang đích HTTP đơn giản, ngay cả khi được phân tách hợp lý, là trang này bị bỏ ngỏ để thao tác. Tức là, không có gì đảm bảo thực tế rằng liên kết cho phiên bản HTTPS của trang web được phân phối nguyên vẹn cho khách truy cập.
Håkan Lindqvist

3

Dưới đây là một số vấn đề về bàn chải rộng:

  • MITM / SSLSTRIP : Đây là một cảnh báo lớn. Nếu bạn sẽ phục vụ trang web của mình qua HTTPS, thì hãy tắt HTTP trên trang web . Mặt khác, bạn để người dùng của mình mở các cuộc tấn công trung gian khác nhau bao gồm SSLSTRIP, sẽ chặn các yêu cầu và lặng lẽ phục vụ họ qua HTTP, chèn tập lệnh phần mềm độc hại của riêng họ vào luồng. Nếu người dùng không thông báo, thì họ sẽ nghĩ rằng phiên của họ an toàn khi thực sự không có.

    • Tuy nhiên, vấn đề với điều này là nếu trang web của bạn là một trang web công cộng và bạn vô hiệu hóa HTTP một cách bất thường, bạn có thể mất rất nhiều khách truy cập. Nó có thể sẽ thậm chí không xảy ra đối với họ để thử HTTPS nếu trang web sẽ không tải với HTTP.
  • Nếu trang web của bạn yêu cầu đăng nhập an toàn, thì toàn bộ phiên người dùng sẽ được bảo mật. Không xác thực qua HTTPS, sau đó chuyển hướng người dùng trở lại HTTP. Nếu bạn làm như vậy, một lần nữa, bạn sẽ khiến người dùng của bạn dễ bị tấn công MITM. Cách tiếp cận tiêu chuẩn để xác thực những ngày này là xác thực một lần, sau đó chuyển mã thông báo xác thực qua lại (trong cookie). Nhưng nếu bạn xác thực qua HTTPS thì chuyển hướng sang HTTP thì một người trung gian có thể chặn cookie đó và sử dụng trang web như thể họ là người dùng được xác thực của bạn, bỏ qua bảo mật của bạn.

  • Các vấn đề "hiệu suất" với HTTPS dành cho tất cả các mục đích thực tế giới hạn trong việc bắt tay liên quan đến việc tạo kết nối mới. Hãy làm những gì bạn có thể để giảm thiểu nhu cầu cho nhiều kết nối HTTPS từ một URL và bạn sẽ có dặm về phía trước. Và điều đó hoàn toàn đúng ngay cả khi bạn đang phục vụ nội dung của mình qua HTTP. Nếu bạn đọc trên SPDY, bạn sẽ nhận ra rằng mọi thứ nó làm đều hướng đến việc cố gắng phục vụ tất cả nội dung từ một URL qua một kết nối. Có, sử dụng HTTPS ảnh hưởng đến bộ nhớ đệm. Nhưng có bao nhiêu trang web chỉ là nội dung tĩnh, có thể lưu trong bộ nhớ cache ngày nay? Bạn có thể nhận được nhiều tiền hơn cho việc sử dụng bộ nhớ đệm trên máy chủ web của mình để giảm thiểu các truy vấn cơ sở dữ liệu dư thừa, truy xuất dữ liệu không thay đổi nhiều lần và ngăn chặn các đường dẫn mã đắt tiền thực thi thường xuyên hơn mức cần thiết.


Điều bạn có thể làm để thực sự giải quyết sslstrip là sử dụng HSTS (tốt nhất là cài đặt sẵn các cài đặt HSTS của bạn ). Cho dù bạn có chấp nhận các yêu cầu qua HTTP đơn giản hay không thực sự không quan trọng trong vấn đề này, MITM có thể trả lời qua HTTP đơn giản (có thể ủy quyền cho trang web HTTPS của bạn) ngay cả khi bạn chỉ chấp nhận các yêu cầu HTTPS.
Håkan Lindqvist

@ HåkanLindqvist Tôi thực sự kiếm được một downvote từ bạn? Tôi đã đưa ra lời khuyên tồi hay lời khuyên tốt liên quan đến việc không xác thực qua HTTPS sau đó chuyển sang HTTP cho phần còn lại của phiên? Tôi có cung cấp tư vấn xấu liên quan đến huyền thoại hiệu suất HTTPS không? Ngoài ra, nếu khách hàng ban đầu cố gắng kết nối bằng HTTPS, MITM không thể chặn và trả lời mà không kích hoạt cảnh báo trong trình duyệt, vì chứng chỉ của họ sẽ không khớp trừ khi họ bị đánh cắp hoặc giả mạo chứng chỉ thành công. Mặt khác, nếu trang web chấp nhận kết nối HTTP, việc chặn bắt sẽ dễ dàng hơn. Dù bằng cách nào, HTTPS tăng thanh.
Craig

.. và tất nhiên tôi đồng ý hết lòng với việc sử dụng HSTS.
Craig

Vấn đề của tôi với câu trả lời là mục đầu tiên trong danh sách tuyên bố giải quyết sslstrip trong khi nó thực sự không (nói về thần thoại). Điều tôi đã cố gắng nhận được trong nhận xét ban đầu của mình là nếu bạn có một MITM đang hoạt động (đó là thứ bạn cần cho sslstrip ở nơi đầu tiên), kẻ tấn công về cơ bản có thể là "trang web" theo quan điểm của khách hàng; đó là kẻ tấn công quyết định xem họ có muốn chấp nhận các kết nối HTTP đơn giản từ máy khách hay không, cách máy chủ web thực tế của bạn hoạt động trong vấn đề đó không ảnh hưởng đến những gì kẻ tấn công có thể hoặc sẽ làm.
Håkan Lindqvist

@ HåkanLindqvist Ngoại trừ việc nếu khách truy cập cố tình kết nối với HTTPS, kẻ tấn công không thể đáp ứng yêu cầu đó mà không ném cờ trong trình duyệt, trừ khi họ đã đánh cắp chứng chỉ máy chủ hoặc bằng cách nào đó họ sẽ giả mạo thành công làm để chuyển kết nối sang HTTP. HTTPS vẫn tăng thanh. Tất nhiên, nếu khách truy cập thực hiện thử kết nối ban đầu qua HTTP, tất cả các cược đã hoàn toàn tắt.
Craig

1

Về mặt kỹ thuật, đây không phải là câu trả lời cho câu hỏi ban đầu của bạn, nhưng nếu bạn sử dụng tiện ích mở rộng Google Chrome HTTPSEverywhere (Tôi chắc chắn có các tiện ích mở rộng tương tự trên các trình duyệt khác), tiện ích mở rộng sẽ tự động chuyển hướng các trang web có HTTP sang cùng một trang với HTTPS. Tôi đã sử dụng nó một lúc và tôi không gặp vấn đề gì (ngoại trừ có thể bị chậm lại, nhưng tôi chưa kiểm tra điều đó). HTTPSEverywhere có thể được thay đổi bởi một số quy tắc nhất định ở phía máy chủ, nhưng vì tôi chưa làm được gì nhiều trong khu vực đó, tôi không chắc chắn về các chi tiết chính xác.

Quay trở lại câu hỏi thực tế của bạn, nếu bạn sử dụng một cái gì đó như HTTPSEverywhere, thậm chí còn ít khuyến khích sử dụng chỉ HTTP, mặc dù tôi tưởng tượng rằng thật khó để thiết lập các quy tắc chính xác khi bạn cần chúng.


1

kỹ thuật duy nhất rút lại cho HTTPS qua HTTP là việc xử lý các yêu cầu HTTPS tốn kém hơn về mặt tính toán so với HTTP đơn giản

Tuy nhiên, do hầu hết các máy chủ hiện đại đều có CPU có công suất cao, tác động này thường không đáng kể trừ khi bạn ở mức lưu lượng cực cao, tại thời điểm đó bạn có nhiều khả năng sử dụng bộ cân bằng tải hơn

Với sự ra đời của các giao thức như SPDY yêu cầu SSL / TLS hoạt động, điều này thực sự chống lại chi phí tính toán đã nói ở trên bằng cách cải thiện hiệu suất đáng kể liên quan đến nhiều yêu cầu và nhận tài sản cho khách hàng nhanh hơn.


Vấn đề với hiệu suất HTTPS là việc thiết lập kết nối mới tốn kém hơn vì có nhiều chuyến đi khứ hồi hơn và vì mã hóa / giải mã bất đối xứng đắt hơn rất nhiều so với mã hóa / giải mã đối xứng. Khi bắt tay kết nối thiết lập khóa mã hóa đối xứng được chia sẻ, chi phí hoạt động liên tục hầu như không liên quan (rất nhỏ). Nếu bạn đọc trên SPDY, bạn sẽ thấy rằng mục tiêu của tất cả những thứ ưa thích mà nó thực chất là để phục vụ tất cả nội dung từ một URL qua một kết nối duy nhất, giảm thiểu chi phí bắt tay kết nối.
Craig

1

Rất tốt để chuyển hướng sang https, nhưng tôi đọc nó cũng phụ thuộc vào cách bạn tổ chức chuyển hướng.

Tạo một máy chủ ảo chuyên dụng để chuyển hướng các yêu cầu http đến kết nối https của bạn như được đề xuất trong câu trả lời trên security.stackexchange.com nghe có vẻ rất thông minh và sẽ đóng một số mối đe dọa bảo mật bổ sung. Một cấu hình trong Apache sẽ trông giống như thế này:

# Virtual host for rerouting
<VirtualHost *:80>
    ServerName www.example.com
    Redirect permanent / https://www.example.com/
</VirtualHost>

# Virtual host for secure hosting on https
<VirtualHost *:443>
    ServerName www.example.com
    SSLEngine on
    Header set Strict-Transport-Security "max-age=8640000;includeSubdomains"

    ...site settings...

</VirtualHost>
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.