Công cụ dành cho nhà phát triển / 24

Trình tạo .htpasswd cho Apache / Nginx

Tạo dòng xác thực .htpasswd và giá trị băm mật khẩu cho Apache, Nginx ngay trong bộ nhớ phía máy khách.

Trình tạo .htpasswd cho Apache / Nginx: TOEA ghi ra dòng mà Apache và nginx yêu cầu cho xác thực cơ bản HTTP. Mặc định là định dạng $apr1$ của Apache: mật khẩu được thêm tám ký tự ngẫu nhiên làm salt rồi xử lý qua một nghìn vòng, giống với kết quả của htpasswd -m và được cả hai máy chủ đọc. Chạy 100% cục bộ trong trình duyệt của bạn, không có tệp nào được tải lên máy chủ.

Lượt chạy
Trong trình duyệt của bạn
Chi phí
Miễn phí · không cần đăng ký
Trạng thái khả dụng
Sẵn sàng sử dụng

Đưa dòng này vào máy chủ

Lưu dòng này trong một tệp bên ngoài thư mục gốc web, mỗi dòng một user:hash. Với nginx, thêm auth_basic "Restricted"; và auth_basic_user_file /etc/nginx/.htpasswd; vào khối location hoặc server. Với Apache, dùng AuthType Basic, AuthName, AuthUserFile kèm đường dẫn đầy đủ đến tệp và Require valid-user. Sau đó tải lại máy chủ; lỗi cú pháp sẽ khiến mọi yêu cầu đều thất bại, không chỉ yêu cầu đăng nhập.

Dấu đô la và HTTP thuần

Giá trị băm chứa rất nhiều ký tự $, còn tệp Docker Compose, tệp .env và một số nhãn proxy xem $ là ký hiệu bắt đầu biến. Trong Compose, hãy viết mỗi $ thành $$; nếu không, giá trị băm sẽ âm thầm bị rút ngắn và không mật khẩu nào khớp.

Xác thực Basic gửi tên người dùng và mật khẩu trong mọi yêu cầu, được mã hóa theo kiểu biểu diễn nhưng không được mã hóa bảo mật. Hãy đặt nó sau HTTPS và xem đây là cổng bảo vệ cho trang staging cùng các đường dẫn quản trị, không phải hệ thống đăng nhập cho khách hàng.

Cách sử dụng

  1. Nhập tên người dùng và mật khẩu.
  2. Giữ thuật toán Apache MD5, trừ khi bạn có lý do để chọn thuật toán khác.
  3. Sao chép dòng đã tạo vào tệp .htpasswd của bạn.

Quyền riêng tư và giới hạn

Mật khẩu được băm trong trình duyệt của bạn và không bao giờ được gửi đi đâu. Không có gì được ghi nhật ký; salt lấy từ nguồn ngẫu nhiên mật mã riêng của trình duyệt, vì vậy hai người tạo dòng cho cùng một mật khẩu sẽ không nhận được cùng một giá trị băm.

Công cụ liên quan

Câu hỏi thường gặp

Tôi nên chọn thuật toán nào?

Apache MD5 ($apr1$), là lựa chọn mặc định ở đây. Thuật toán này sử dụng salt và lặp nhiều vòng; cả Apache lẫn nginx đều chấp nhận. Tùy chọn {SHA} là giá trị băm SHA-1 không có salt, chỉ được giữ lại cho các hệ thống cũ bắt buộc phải dùng — công cụ htpasswd của Apache đánh dấu tùy chọn này là không an toàn, vì các mật khẩu giống nhau tạo ra các giá trị băm giống nhau và bảng tra cứu có thể phá vỡ chúng.

Cách này có mạnh bằng bcrypt không?

Không. bcrypt là lựa chọn mạnh hơn và Apache hỗ trợ, nhưng không thể tạo bằng công cụ này — bcrypt cần một chương trình triển khai Blowfish, đồng thời sẽ đòi hỏi một lượng mã lớn để cung cấp và kiểm tra độ tin cậy. Nếu muốn dùng bcrypt, hãy chạy htpasswd -B -n username cục bộ rồi dán kết quả vào.

Tôi có thể kiểm tra một dòng trước khi sử dụng không?

Có, và bạn nên làm vậy. Lưu dòng đó vào một tệp rồi chạy htpasswd -vb yourfile username password — Apache sẽ cho bạn biết dòng đó có xác thực thành công hay không. Các dòng này đã được đối chiếu với cả htpasswd và openssl passwd -apr1.

Công cụ miễn phí · trong trình duyệt của bạn lượt chạy · không cần tài khoản