Chrome: Trang web sử dụng HSTS. Lỗi mạng, trang này có thể sẽ hoạt động sau


161

Tôi đang phát triển chống lại localhost. Sáng nay ngay sau khi tôi sử dụng fiddler, tôi bắt đầu gặp lỗi này trên chrome (hoạt động chính xác trong firefox)

"Bạn không thể truy cập localhost ngay bây giờ vì trang web sử dụng HSTS. Các lỗi và tấn công mạng thường là tạm thời, vì vậy trang này có thể sẽ hoạt động sau." nhập mô tả hình ảnh ở đây

Bây giờ localhost chỉ hoạt động trong chrome nếu fiddler đang chạy. Tôi đã chắc chắn rằng các chuyển hướng proxy mà fiddler thực hiện được sửa chữa khi fiddler tắt.

Tôi cũng đã thử nhập chứng chỉ vào root đáng tin cậy của mình và khởi động lại trình duyệt (và cả máy).


2
Tôi gặp phải vấn đề này khi quản trị viên CNTT thay đổi chính sách của họ. Tất cả mọi thứ tôi cần làm là chạy lệnh: gpupdate / force
Jacob Phan

Câu trả lời:


189

Một cách rất nhanh xung quanh vấn đề này là, khi bạn đang xem màn hình "Kết nối của bạn không riêng tư":

kiểu badidea

loại thisisunsafe(ghi có vào The Java Guy để tìm cụm mật khẩu mới)

Điều đó sẽ cho phép ngoại lệ bảo mật khi Chrome không cho phép ngoại lệ được đặt qua lần nhấp, ví dụ: đối với trường hợp HSTS này.

Rõ ràng, điều này chỉ được khuyến nghị cho các kết nối cục bộ và các máy ảo mạng cục bộ, nhưng nó có lợi thế là làm việc cho các VM được sử dụng để phát triển (ví dụ như trên các kết nối cục bộ chuyển tiếp cổng) và không chỉ các kết nối localhost trực tiếp.

Lưu ý: các nhà phát triển Chrome đã thay đổi cụm mật khẩu này trong quá khứ và có thể làm lại như vậy. Nếu badideangừng hoạt động, vui lòng để lại một ghi chú ở đây nếu bạn học cụm mật khẩu mới. Tôi sẽ cố gắng làm như vậy.

Chỉnh sửa: kể từ ngày 30 tháng 1 năm 2018 cụm mật khẩu này dường như không còn hoạt động.

Nếu tôi có thể săn lùng một cái mới, tôi sẽ đăng nó ở đây. Trong thời gian chờ đợi, tôi sẽ dành thời gian để thiết lập chứng chỉ tự ký bằng phương thức được nêu trong bài đăng stackoverflow này:

Làm thế nào để tạo chứng chỉ tự ký với openssl?

Chỉnh sửa: kể từ ngày 1 tháng 3 năm 2018 và Phiên bản Chrome 64.0.3282.186 cụm mật khẩu này hoạt động trở lại cho các khối liên quan đến HSTS trên các trang web .dev.

Chỉnh sửa: kể từ ngày 9 tháng 3 năm 2018 và Phiên bản Chrome 65.0.3325.146 badideacụm mật khẩu không còn hoạt động.

Chỉnh sửa 2: rắc rối với chứng chỉ tự ký dường như là, với các tiêu chuẩn bảo mật được siết chặt trong hội đồng quản trị ngày nay, chúng gây ra lỗi của chính họ (ví dụ, nginx từ chối tải chứng chỉ SSL / TLS bao gồm chứng nhận tự ký trong chuỗi thẩm quyền, theo mặc định).

Giải pháp tôi đang sử dụng bây giờ là trao đổi tên miền cấp cao nhất trên tất cả các trang web phát triển .app và .dev của tôi với .test hoặc .localhost. Chrome và Safari sẽ không còn chấp nhận các kết nối không an toàn cho các tên miền cấp cao tiêu chuẩn (bao gồm .app).

Danh sách hiện tại của các tên miền cấp cao tiêu chuẩn có thể được tìm thấy trong bài viết Wikipedia này, bao gồm các tên miền sử dụng đặc biệt:

Wikipedia: Danh sách các tên miền cấp cao nhất trên Internet: Tên miền sử dụng đặc biệt

Các tên miền cấp cao nhất này dường như được miễn trừ khỏi các hạn chế chỉ dành cho https mới:

  • .local
  • .localhost
  • .kiểm tra
  • (bất kỳ tên miền cấp cao nhất tùy chỉnh / không chuẩn)

Xem câu trả lời và liên kết từ mã hóa đến câu hỏi ban đầu để biết thêm thông tin:

câu trả lời từ bảng mã


18
không bao giờ nghe bất cứ điều gì như thế này nhưng vì lý do nào đó nó hoạt động! cảm ơn!
Alexey

giúp đỡ rất nhiều! Cảm ơn bạn rất nhiều!
RHSmith159

Tôi thậm chí không thể tin điều này hoạt động nhưng nó. Tôi không chắc là tôi nên vui hay bực mình vì điều này không được ghi nhận; Tôi đã dành GIỜ trong nhiều năm để đối phó với thứ nhảm nhí này trên môi trường Dev.
Scott Byers

7
Sử dụng thisisunsafeinsread của badidea. Điều này đã được thay đổi với phiên bản mới
The Java Guy

nó hoạt động +1, tuy nhiên chrome thực sự nên thêm một tùy chọn để tiếp tục cảnh báo, thay vì chỉ chặn
5413668060

186

Khi bạn đã truy cập https: // localhost trước đây tại một số điểm, nó không chỉ truy cập kênh này qua kênh bảo mật (https chứ không phải http), nó cũng nói với trình duyệt của bạn, sử dụng tiêu đề HTTP đặc biệt: Strict-Transport-Security (thường được viết tắt là HSTS ), rằng CHỈ nên sử dụng https cho tất cả các lượt truy cập trong tương lai.

Đây là một tính năng bảo mật mà các máy chủ web có thể sử dụng để ngăn chặn mọi người bị hạ cấp xuống http (do cố ý hoặc bởi một bên xấu nào đó).

Tuy nhiên, nếu sau đó bạn tắt máy chủ https của bạn và chỉ muốn duyệt http bạn không thể (theo thiết kế - đó là điểm của tính năng bảo mật này).

HSTS cũng ngăn bạn chấp nhận và bỏ qua các lỗi chứng chỉ.

Để đặt lại điều này, vì vậy HSTS không còn được đặt cho localhost, hãy nhập thông tin sau vào thanh địa chỉ Chrome của bạn:

chrome://net-internals/#hsts

Nơi bạn sẽ có thể xóa cài đặt này cho "localhost".

Bạn cũng có thể muốn tìm hiểu những gì đã được thiết lập để tránh vấn đề này trong tương lai!

Lưu ý rằng đối với các trang web khác (ví dụ www.google.com), những trang này được "tải sẵn" vào mã Chrome và do đó không thể xóa được. Khi bạn truy vấn chúng tại chrome: // net-internals / # hsts, bạn sẽ thấy chúng được liệt kê dưới dạng staticcác mục HSTS.

Và cuối cùng lưu ý rằng Google đã bắt đầu tải trước HSTS cho toàn bộ tên miền .dev: https://ma.ttias.be/chrome-force-dev-domains-https-via-preloaded-hsts/


Tôi đang nhận được điều này cho gmail.com. Tôi đã truy cập chrome: // net-internals / # hsts và truy vấn gmail.com, đã tìm thấy: static_sts_domain: gmail.com static_upTHER_mode: STRICT Đã thử xóa tên miền, nhưng vẫn gặp sự cố.
paiego

Câu trả lời này có ý nghĩa với tôi. Vấn đề của tôi là tôi đã thay đổi một máy chủ tên trang web từ wordpress (lưu trữ wordpress) sang máy chủ của tôi (tự lưu trữ) và bây giờ nhận được điều này và có lẽ tất cả khách truy cập Chrome cũng vậy. Bất kỳ ý tưởng làm thế nào để có được xung quanh nó cho khách truy cập mà không cần họ xóa bộ nhớ cache của họ?
TomC

2
Về cơ bản chỉ có câu trả lời là sử dụng HTTPS trong tương lai hoặc hy vọng người dùng không lưu vào bộ nhớ cache. HTTPS là con đường phía trước và miễn phí từ LetsEncrypt. Bạn cũng nên kiểm tra xem ai đó đã tải trước trang web của bạn tới mã trình duyệt nhưng đoán không nếu bạn có thể tự đặt lại. Không biết Wordpress tự động thêm HSTS nên tự hỏi làm thế nào mà nó có trên đó.
Barry Pollard

Cảm ơn @BazzaDP - không thể thấy cách này. Tôi có thể phải thay đổi máy chủ tên trở lại, tìm hiểu những gì trên trang web cũ đã buộc HTTPS sau đó thử và di chuyển lại. Bạn không thể đơn giản FTP từ Wordpress lưu trữ blog đến trang web mới, đó là lý do tại sao đây là vấn đề đối với tôi và chủ sở hữu trang web mới không có chứng chỉ SSL (mặc dù nghiêm túc xem xét việc nhận một trang nào)
TomC

2
Như tôi đã đề cập trong câu trả lời của mình, các mục nhập được tải sẵn (hoặc STS tĩnh) không thể bị xóa vì chúng tồn tại trong mã Chrome và không có trong danh sách được duy trì cục bộ. Và theo dòng cuối cùng trong câu trả lời của tôi, Google đã quyết định tải trước toàn bộ tên miền dev.
Barry Pollard

22

Nhấp vào bất cứ nơi nào trong cửa sổ chrome và nhập thisisunsafe(thay vì badideatrước đó) trong chrome.

Cụm mật khẩu này có thể thay đổi trong tương lai. Đây là nguồn

https://chromium.googlesource.com/chromium/src/+/master/components/security_interstitials/core/browser/resource/interstitial_large.js#19

Theo dòng đó, nhập window.atob('dGhpc2lzdW5zYWZl')vào bảng điều khiển trình duyệt của bạn và nó sẽ cung cấp cho bạn cụm mật khẩu thực tế.

Lần này mật khẩu là thisisunsafe.


19

Tôi gặp vấn đề này với các trang web chạy trên XAMPP với tên máy chủ riêng. Không quá riêng tư, hóa ra! Chúng là tất cả domain.dev, mà Google hiện đã đăng ký là một gTLD riêng và đang buộc HSTS ở cấp tên miền. Đã thay đổi mọi máy chủ ảo thành .devel(eugh), khởi động lại Apache và tất cả đều ổn.


Tôi có thể xác nhận sự cố này với Opera 50.0.2762.9 và việc chuyển miền phát triển của tôi .devsang .develhoạt động xung quanh hạn chế.
Courtney Miles

5
RFC 2606 bảo lưu một số tên miền cấp cao nhất để ngăn xung đột với thử nghiệm riêng. Có vẻ như đó .testlà điều đúng đắn nhất để chuyển sang môi trường phát triển.
Courtney Miles

Điều này thực sự đã cứu mạng tôi sau nhiều ngày không thể hiểu tại sao chrome lại hoạt động như vậy trên .devmiền localhost của tôi ... Chúa ơi, ai biết ...
D. Petrov

Chà, thực ra .test chỉ được khuyến nghị sử dụng để kiểm tra mã liên quan đến DNS hiện tại hoặc mới.
Alexey

Điều này ở đây đã giải quyết vấn đề của tôi. Tôi đang sử dụng Laragon cho môi trường phát triển của mình.
Craig

12

Gần đây tôi có cùng một vấn đề trong khi cố gắng truy cập các lĩnh vực sử dụng CloudFlare xứ CA .

Cách duy nhất tôi tìm thấy để khắc phục / tránh ngoại lệ chứng chỉ HSTS trên Chrome (bản dựng Windows) là làm theo các hướng dẫn ngắn trong https://support.opendns.com/entries/66657664 .

Giải pháp thay thế:
Thêm vào Chrome tắt cờ --ignore-certificate-errors, sau đó mở lại và lướt đến trang web của bạn.

Nhắc nhở: Chỉ
sử dụng cho mục đích phát triển.

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


Có lẽ hãy thử trong Google Canary xây dựng google.com/chrom/browser/canary.html
Binyamin

Giả sử bạn không có trang web gây ra lỗi cert. Sau đó, làm thế nào bạn sẽ kiểm tra nếu giải pháp của bạn hoạt động? Không giúp được gì ở đây - stackoverflow.com/questions/41902367/
Kẻ

Làm thế nào về các phiên bản mac?
Chàng trai Java


3

Gặp phải lỗi tương tự. đặt lại chrome: // net-internals / # hsts không hoạt động với tôi. Vấn đề là đồng hồ vm của tôi bị lệch theo ngày. Đặt lại thời gian đã làm việc để giải quyết vấn đề này. https://support.google.com/chromals/4454607?hl=vi


2

Tôi gặp lỗi tương tự và chế độ ẩn danh cũng có vấn đề tương tự. Tôi giải quyết vấn đề này bằng cách xóa lịch sử Chrome.


2

Tôi đã chịu đựng vấn đề này trong một thời gian rất dài. Tôi không thể mở các trang web như GitHub. Tôi gần như đã thử tất cả các câu trả lời trên web và không ai làm việc. Đã thử cài đặt lại chrome. Tôi tìm thấy giải pháp cho việc này từ anh chàng mạng của chúng tôi và nó đã hoạt động. Có một sửa chữa trong registry sẽ giải quyết lỗi này cho cơ sở vĩnh viễn.

  1. Nhấn phím Windows + R để mở hộp thoại chạy
  2. gõ: regedit và nhấn enter để mở registry
  3. Trong chế độ xem dạng cây ở nhấp chuột trái qua đường dẫn sau HKEY_LOCAL_MACHINE> PHẦN MỀM> CHÍNH SÁCH> Microsoft> SystemCertert> Authroot
  4. Bây giờ, nhấp đúp chuột vào DisableRootAutoUpdate ở bên phải và đặt thành 0 (không) trong hộp thoại xuất hiện
  5. Khởi động lại PC của bạn để áp dụng các thay đổi đăng ký và bạn sẽ không gặp phải lỗi này nữa

Giải pháp trên là dành cho Windows 8. Nó gần như giống hệt trong các phiên bản sau nhưng tôi không chắc chắn cho các phiên bản trước như XP và vista. Vì vậy, cần phải được kiểm tra.


Bạn có biết tùy chọn này có nghĩa là gì không?
MasterJoe2

@ người kiểm tra2: Không thưa ngài
Maulik Modi

1
Đã chịu đựng từ google-analytics.com này cùng với các tên miền google khác. Câu trả lời này đã giải quyết vấn đề của tôi.
Shawn

Bài viết tại support.microsoft.com/en-us/help/2813430/ trộm giải thích hành vi của các khóa được giới thiệu trong bản vá cho Windows Vista. Đặt giá trị cụ thể này thành 0 sẽ khiến các chứng chỉ gốc cập nhật được tự động tìm nạp từ Windows Update và được cài đặt trong cửa hàng ủy quyền chứng chỉ gốc đáng tin cậy. Trong môi trường doanh nghiệp, điều này có thể bị tắt như một biện pháp bảo mật; tuy nhiên, điều đó có nghĩa là ai đó nên quản lý Cơ quan chứng nhận gốc đáng tin cậy ở cấp doanh nghiệp.
JamieSee
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.