Nouplo

htpasswd 생성

Apache 가 원하는 줄을, 내 컴퓨터 안에서.

예제는 입력과 설정을 일시적으로 바꿉니다. 이전 작업을 복원할 수 있습니다.

0자
출력
위에 붙여넣거나 입력하면 여기에 결과가 표시됩니다.

파일은 내 기기 밖으로 나가지 않습니다

이 도구는 브라우저 안에서만 작동합니다. 붙여넣은 내용은 기기에서 처리되고 서버로 전송되지 않으므로 토큰, 키, 공개 전 문서도 안심하고 사용할 수 있습니다.

사용 예시

예시: 스테이징 서버 /admin을 세 사람에게만 — bcrypt 세 줄과 한글 비밀번호 바이트

작은 팀이 Apache 스테이징 서버의 /admin 폴더 앞에 로그인 창을 걸려 합니다. 입력 칸에 minsu:Dalgona-Bus-2731, jiyeon:Pine7.Cloud.Ramen, qa:Kimbap#Orbit58 세 줄을 넣고, 설정은 bcrypt, 작업 계수 10, 접두어 $2y$(Apache) 그대로 둡니다.

  1. 「생성하기」를 누르면 사용자마다 한 줄씩, 이름 뒤에 콜론과 60자 bcrypt 해시가 나옵니다. 아래 칸에는 알고리즘 bcrypt, 비용 2^10, 줄 3이 표시됩니다.
  2. $2y$10$ 다음 22자가 솔트, 나머지 31자가 해시입니다. 솔트는 누를 때마다 새로 뽑히므로 다시 누르면 다른 줄이 나오지만 모두 똑같이 통과합니다.
  3. 줄들을 웹 공개 폴더 밖의 /home/example/.htpasswd에 저장하고, /admin/.htaccess에 AuthType Basic, AuthName "Admin", AuthUserFile /home/example/.htpasswd, Require valid-user 네 줄을 넣습니다.
  4. bcrypt는 비밀번호를 UTF-8로 72바이트까지만 읽습니다. 한글은 한 글자가 3바이트라 24자에서 한계에 닿습니다.
비밀번호 UTF-8 바이트 bcrypt가 읽는 부분
Dalgona-Bus-2731 (영문·숫자·기호 16자) 16전부
우리집강아지이름은초코2019 (한글 11자 + 숫자 4자) 37전부
한글 24자 72전부 (딱 한계)
한글 25자 75앞 72바이트(24자)만, 잘린 줄 수를 결과에 표시

minsu:$2y$10$LnCpKX6/688B9cZCYKHKLuawqXHY9nBWFSHZK4Q.l.a/OWY0h5qjW 같은 줄 세 개. 이제 /admin을 열면 브라우저 로그인 창이 뜨고, 한 사람을 빼려면 그 줄만 지우면 됩니다. 세 줄을 만드는 데 확인한 기기에서 계수 8은 약 0.03초, 10은 약 0.14초, 12는 약 0.56초 걸렸습니다.

사용 방법

  1. 한 줄에 사용자이름:비밀번호 형태로 입력합니다. 비밀번호만 쓰면 해시만 나옵니다.
  2. 기존 파일에 맞추는 경우가 아니면 bcrypt 그대로 두세요.
  3. 「생성하기」를 누릅니다. bcrypt 는 일부러 느리므로 잠시 걸립니다. 그것이 목적입니다.
  4. 나온 줄을 .htpasswd 에 붙여넣습니다.

자주 묻는 질문

비밀번호가 어디로 전송되나요?
전송되지 않습니다. 이 페이지가 있는 이유가 바로 그것입니다. 솔트는 브라우저 자체의 난수 생성기에서 가져오고 해시도 내 컴퓨터에서 계산되며 아무것도 전송되지 않습니다. 진짜 비밀번호를 남의 서버에 붙여넣는 일이야말로 피해야 할 일입니다.
왜 몇 초가 걸리나요?
bcrypt 가 그렇게 만들어졌기 때문입니다. 작업 계수는 2의 거듭제곱이라 하나 올리면 공격자의 수고가 두 배가 되고 동시에 내 대기 시간도 두 배가 됩니다. 10이 보통의 절충점이고 12는 약 네 배 걸립니다.
APR1 이나 SHA-1 을 써야 할 때가 있나요?
기존 파일에 맞출 때뿐입니다. APR1 은 Apache 의 솔트 붙은 MD5 로, 많은 환경에서 htpasswd 가 옵션 없이 쓰는 형식입니다. 여기서의 SHA-1 은 솔트가 없어 같은 비밀번호면 늘 같은 줄이 나오므로 새로 쓰면 안 됩니다.
bcrypt 가 긴 비밀번호의 일부를 무시한다는 게 사실인가요?
사실입니다. bcrypt 가 읽는 것은 최대 72바이트이고 그 뒤는 해시에 닿지 않습니다. 조용히 잘라내지 않고 건수를 세어 알려 줍니다.
한글 비밀번호도 되나요?
해시는 만들어집니다. 다만 bcrypt는 UTF-8로 72바이트까지만 읽고 한글은 한 글자가 3바이트라, 25자부터는 앞 24자만 해시에 들어갑니다. 그런 줄이 있으면 잘린 줄 수가 결과 아래 칸에 함께 표시됩니다. 영문·숫자·기호는 한 글자가 1바이트라 72자까지 읽힙니다.
기존 .htpasswd에 한 사람만 추가하려면?
그 사람의 사용자이름:비밀번호 한 줄만 넣고 생성한 줄을 기존 파일 맨 아래에 붙이면 됩니다. 다른 줄은 건드리지 않아도 되고, 같은 사용자이름이 두 줄 있지 않도록만 확인하세요.
무료인가요?
네, 전부 무료입니다.

관련 도구