개발자 도구
.htpasswd 파일 생성기
Apache와 Nginx의 Basic 인증에 사용하는 .htpasswd 파일을 브라우저에서 안전하게 생성합니다. bcrypt, APR1-MD5, SHA-1을 지원하며 비밀번호는 서버로 전송되지 않습니다.
사용 팁
- bcrypt 사용을 권장합니다. 현재 가장 안전한 알고리즘으로 Apache 2.4+ 및 Nginx에서 사용할 수 있습니다. 비용 값이 높을수록 해시 계산이 느려져 브루트포스 공격에 강해집니다(일반적인 권장값은 10).
- APR1-MD5(
$apr1$)는 Apache 2.2 이하와의 호환성이 필요한 경우에 사용합니다. 거의 모든 Apache 및 Nginx 버전에서 동작합니다. - SHA-1(
{SHA})은 충돌 저항성이 낮아 권장하지 않습니다. 하위 호환성이 필요한 레거시 환경에서만 사용하세요. - .htpasswd 파일은 웹 루트(
DocumentRoot) 외부에 배치하여 웹에서 직접 접근할 수 없도록 하세요. - 항상 HTTPS와 함께 사용하세요. Basic 인증의 자격 증명은 Base64 인코딩만 되어 있고 암호화되지 않아 HTTP 연결에서는 평문으로 전송됩니다.
자주 묻는 질문
.htaccess 또는 httpd.conf에 아래 설정을 추가하고, AuthUserFile에 생성한 .htpasswd 파일의 경로를 지정하세요:AuthType Basic AuthName "Restricted Area" AuthUserFile /etc/apache2/.htpasswd Require valid-user
nginx.conf 또는 해당 server 블록에 추가합니다:location /admin {
auth_basic "Restricted Area";
auth_basic_user_file /etc/nginx/.htpasswd;
}Nginx는 bcrypt와 APR1-MD5를 모두 지원합니다.Apache 2.4+ 또는 Nginx 환경이라면 bcrypt를 강력히 권장합니다. APR1-MD5는 Apache 2.2 이하와의 호환성이 필요한 경우에만 사용하세요. SHA-1은 레거시 시스템에서 요구하는 경우가 아니라면 피하세요.
생성된 행(
사용자명:해시 형식)을 기존 파일 끝에 추가하면 됩니다. 각 행이 한 명의 사용자에 해당하며, 빈 행과 #으로 시작하는 주석 행은 무시됩니다.네. 모든 해시 계산은 브라우저 내에서 완전히 처리되며, 비밀번호 데이터는 서버로 전송되지 않습니다. 안전한 HTTPS 페이지에서 사용하시고 생성된 파일을 소중히 보관하세요.
여담 ― Basic 인증이 오래됐는데도 여전히 쓰이는 이유
HTTP Basic 인증은 1999년 RFC 2617(현재 RFC 7617로 업데이트)에서 정의된 매우 단순한 인증 방식입니다. 사용자명과 비밀번호를 :로 구분하고 Base64로 인코딩하여 Authorization 헤더에 담아 전송합니다.
단순함이 곧 장수 비결입니다. 스테이징 환경, 내부 도구, IP 허용 목록과 조합한 이중 방어 등 다양한 용도로 활용됩니다. 설정 두세 줄로 작동하며 추가 미들웨어나 데이터베이스가 필요하지 않습니다.
한계도 있습니다. 로그아웃 기능이 없고(브라우저를 닫을 때까지 세션 유지), 비밀번호 만료 관리나 다단계 인증도 기본 제공되지 않습니다. 실제 보안 요구사항이 있는 서비스에는 OAuth 2.0 또는 OIDC를 검토하세요.