본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

아파치 웹 서버의 기본 인증(Basic 인증)에 사용할 사용자 이름과 비밀번호 파일을 만들고 관리한다.

  • 경로 : /usr/bin/htpasswd
  • 패키지 : httpd-tools
  • 비밀번호 파일은 보통 웹 문서 디렉터리 밖에 둔다. (예: /etc/httpd/.htpasswd)
# htpasswd [-c] [-m | -B | -s | -d | -p] 파일 사용자
# htpasswd -b [-c] [-m | -B | -s | -d | -p] 파일 사용자 비밀번호
# htpasswd -n [-m | -B | -s | -d | -p] 사용자
  • -c : 비밀번호 파일을 새로 만든다. 파일이 이미 있으면 내용을 지우고 다시 쓰므로 첫 사용자를 만들 때만 쓴다.
  • -b : 비밀번호를 대화형으로 묻지 않고 명령행에서 받는다. 명령 기록에 비밀번호가 남으므로 주의한다.
  • -i : 비밀번호를 표준 입력에서 확인 없이 읽는다.
  • -n : 파일을 수정하지 않고 결과를 표준 출력으로 출력한다.
  • -m : MD5(아파치 전용 apr1 형식)로 암호화한다. (기본값)
  • -B : bcrypt로 암호화한다. 가장 안전한 방식이다.
  • -C 비용 : -B와 함께 bcrypt 계산 비용(기본 5)을 지정한다. 값이 클수록 안전하지만 느려진다.
  • -s : SHA-1로 암호화한다. 안전하지 않다.
  • -d : crypt()로 암호화한다. 안전하지 않다.
  • -p : 암호화하지 않고 평문으로 저장한다.
  • -D : 지정한 사용자를 파일에서 삭제한다.
  • -v : 사용자의 비밀번호가 맞는지 확인한다.

htpasswd로 만든 파일은 httpd.conf나 .htaccess에서 다음과 같이 지정한다.

<Directory "/var/www/html/admin">
    AuthType Basic
    AuthName "Admin Area"
    AuthUserFile /etc/httpd/.htpasswd
    Require valid-user
</Directory>
  • .htaccess에서 인증을 설정하려면 해당 디렉터리에 AllowOverride AuthConfig(또는 All)가 허용되어 있어야 한다.
  • 특정 사용자만 허용하려면 Require user 사용자1 사용자2 형식을 쓴다.
# 비밀번호 파일을 새로 만들고 첫 사용자를 등록한다.
# htpasswd -c /etc/httpd/.htpasswd admin

# 기존 파일에 사용자를 추가한다. (-c를 쓰면 기존 사용자가 지워진다.)
# htpasswd /etc/httpd/.htpasswd kait

# bcrypt 방식으로 사용자를 추가하면서 비밀번호를 명령행에서 지정한다.
# htpasswd -bB /etc/httpd/.htpasswd user2 'P@ssw0rd'

# 사용자를 삭제한다.
# htpasswd -D /etc/httpd/.htpasswd user2

# 설정 문법을 검사한 뒤 아파치를 재시작한다.
# apachectl configtest
# systemctl restart httpd
  • 최초 생성 시에만 -c를 쓰고, 사용자를 추가할 때는 -c 없이 실행해야 한다는 점이 자주 출제된다.
  • AuthType Basic, AuthName, AuthUserFile, Require valid-user로 이루어진 인증 설정 블록을 완성하는 문제가 나온다.
  • htpasswd는 httpd-tools 패키지에 들어 있다.