2012-04-10 31 views
5

Dưới đây là một số câu hỏi tôi có về SSL.Bắt buộc SSL qua HTaccess

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteCond %{REQUEST_URI} somefolder 
RewriteRule ^(.*)$ https://www.domain.com/somefolder/$1 [R,L] 
  1. Trên đây là mã để buộc tất cả mọi thứ để đi đến SSL thông qua .htaccess. Có cách nào tôi có thể hạn chế mã này đến một địa chỉ IP cụ thể. Tôi muốn ép buộc SSL chỉ với địa chỉ IP của tôi để tôi có thể kiểm tra kỹ lưỡng trang web bằng cách sử dụng các liên kết SSL mới và xem (chắc chắn) mọi thứ đang hoạt động trước khi đưa nó trực tiếp đến trang web trực tiếp. Thử nghiệm chỉ với IP của tôi sẽ dễ dàng hơn nhiều.

  2. SSL có ảnh hưởng đến bất kỳ bài đăng/nhận nào không? Có nghĩa là ... nếu tôi sử dụng mã đó ở trên và ai đó đang ở trên trang..và họ gửi biểu mẫu, nó sẽ buộc họ vào SSL, sẽ được coi là chuyển hướng và xóa mọi bài đăng/nhận biến ? Tôi chỉ muốn cố gắng tìm hiểu trước thời gian nếu nó sẽ làm hỏng mọi thứ tôi đang chạy.

  3. Có ai trong số các bạn có bất kỳ tình huống nào mà bạn buộc SSL sau đó có rất nhiều vấn đề với trang web không hoạt động đúng không?

+1

1) Sử dụng thêm một dòng RewriteCond và '% {REMOTE_ADDR}' biến để khớp với địa chỉ IP; 2) Đó là chuyển hướng - nó sẽ gây rối với dữ liệu POST (nhưng không phải với GET); 3) Đó là tất cả về cách bạn thiết kế trang web của mình - nếu tất cả bạn đã OK ở bên cạnh bạn (sử dụng các liên kết HTTPS nếu cần) nhưng ai đó vẫn cố sử dụng HTTP theo cách thủ công (đặc biệt là khi sử dụng POST - ví dụ như gửi biểu mẫu), sau đó chỉ cần ném một lỗi (anh ta làm nó trên mục đích, vì vậy nó là vấn đề của riêng mình). – LazyOne

+0

BTW - tùy thuộc vào nơi trang web này sẽ được triển khai vv - bạn có thể sử dụng 'RewriteCond% {HTTPS} = off [NC]' thay vì kiểm tra số cổng, vì bạn có thể dễ dàng đặt trang web trên cổng không chuẩn khác (ví dụ: 8080 vv). – LazyOne

Trả lời

2

Nếu bạn muốn chắc chắn rằng trang web của bạn hoạt động tốt với HTTPS, tắt HTTP đơn giản (giả sử nó cho toàn bộ máy chủ), hoặc sử dụng Apache httpd chỉ thị (trong .htaccess hoặc trong cấu hình chính) mà làm cho các trang cần được phân phối qua HTTPS trả lại lỗi (ví dụ: 404) khi chúng được truy cập qua HTTP thuần túy. Bạn có thể đạt được điều này cho một địa chỉ IP cụ thể bằng cách sử dụng Deny from xxxxxxx.

Không dựa vào mod_rewrite hoặc tương tự như chuyển hướng các yêu cầu HTTP thuần túy sang HTTPS tương đương của chúng. Điều này sẽ tốt nhất ẩn vấn đề và gây ra một cảm giác sai lầm về an ninh.

Lý do cho điều này là ngay cả khi chuyển hướng, các yêu cầu ban đầu được thực hiện rõ ràng trước khi được chuyển hướng: đảm bảo tất cả các tham chiếu sử dụng https:// URI trước khi sử dụng chúng. Bạn có thể tìm thêm chi tiết trong this answer.

+0

Rất tốt, cảm ơn bạn. Cuối cùng tôi đã nhận được tất cả hoạt động bằng cách thay đổi URL chính thành https. Khi ở HTTPS, họ vẫn ở trong giao thức đó. Vì vậy, khi đăng nhập, tôi chỉ cần đảm bảo rằng biểu mẫu được trỏ tới HTTPS, và họ vẫn như vậy trong suốt phần còn lại của trang web. Đây là một bảng quản trị nên không cần phải tắt HTTP ... nhưng cách bạn giải thích nó hoạt động tốt. Cảm ơn. – Ninjakreborn

Các vấn đề liên quan