최근 오픈소스 기반 플랫폼에 앱을 배포하면서 인증서 발급 과정을 진행하게 됐다. 정확히 말하면 .csr을 생성해 인증서를 신청하고, 발급받은 .crt 파일과 앱 코드를 묶어서 PR로 제출하는 구조였다.

 

과정 자체는 복잡하지 않지만 생소한 명령어들이 많았고, 나중에 또 쓰게 될 가능성이 높아서 흐름 위주로 정리해 두려고 한다.

 

 

openssl 인증서 기반 배포시 알아야할 명령어

 

openssl로 CSR 생성부터 파일 서명까지, 한 번에 정리하기

 

1. openssl 이란?

openssl

 

openssl은 오픈소스 기반의 암호화 라이브러리이자, 커맨드라인 도구다.
주로 아래 작업에 쓰인다:

 

  • 키 생성 (공개키/비공개키)
  • CSR (인증서 요청) 생성
  • 인증서 확인
  • 디지털 서명/검증
  • SSL 통신 테스트 등

웹 서버 설정, 앱 인증, 보안 처리 등 꽤 넓은 분야에서 기본 도구처럼 쓰인다.
여기선 인증서 발급용으로만 다루게 된다.

 

 

2. 인증서 발급 절차에서의 openssl 명령어 흐름

 

(1) 비공개 키 생성

openssl genrsa -out myapp.key 4096
  • RSA 비공개키 생성.
  • 4096은 비트수로 보안 강도. 일반적으로 2048 이상 권장.
  • 생성된 .key 파일은 절대 외부에 노출되면 안 됨.

 

(2) CSR (인증서 요청서) 생성

openssl req -new -key myapp.key -out myapp.csr
  • 비공개 키 기반으로 CSR 생성.
  • 생성 시 도메인명, 조직명 등 정보를 입력하게 됨.
  • .csr 파일은 인증서 발급을 위해 외부에 제출할 수 있음.

 

(3) 서명 생성 (배포할 파일에 대해)

openssl dgst -sha512 -sign myapp.key myapp.tar.gz > myapp.tar.gz.sig
  • dgst: 파일 해시 생성 및 서명.
  • -sha512: 사용할 해시 알고리즘.
  • -sign: 비공개 키로 서명.
  • 결과는 .sig 파일로 저장됨.

이 서명은 인증서 발급 기관 측에서 검증할 수 있게 된다.

 

 

3. tar 명령어 정리

앱 소스코드를 .tar.gz 형태로 압축해서 제출하는 경우가 많은데, 그때 쓰는 명령어들. tar.gz 형태로 압축한 파일을 타르볼이라는 귀여운 이름으로도 부른다. 

 

 

압축하기

tar -cvzf myapp.tar.gz ./myapp/
  • c: 새 아카이브 생성
  • v: 작업 진행 출력
  • z: gzip 압축 사용
  • f: 결과 파일 이름 지정

즉, myapp 폴더를 묶어서 gzip으로 압축하고 myapp.tar.gz로 저장하는 명령.

 

 

압축 해제

tar -xvzf myapp.tar.gz
  • x: 압축 풀기
  • 나머지는 동일

압축파일 포맷 자체가 .tar.gz로 널리 쓰이다 보니, 이 명령도 자주 접하게 된다.

 

 

4. 기타 자주 썼던 명령어들

echo -n

echo -n "myapp" | openssl dgst -sha512 -sign myapp.key
  • 문자열을 출력할 때 줄바꿈 없이 처리 (-n)
  • openssl에 입력값으로 넘기기 위해 자주 사용
  • 파이프(|)를 통해 바로 다음 명령에 전달

cat

cat myapp.crt
  • 파일 내용을 단순 출력
  • 인증서가 정상적으로 발급되었는지, 내부 필드 확인 시 유용

 

리디렉션 관련

  • >: 명령어 출력 결과를 파일로 저장
    예: > myapp.tar.gz.sig
  • |: 명령어 연결 (출력 → 입력)
    예: echo -n "abc" | openssl dgst -sha256

 

5. 마무리

 

처음에는 하나하나 찾아보며 복사해서 쓰는 수준이었지만, 흐름을 이해하고 나니 각 명령어가 어떤 역할을 하는지 꽤 명확해졌다.

 

특히 openssl 명령어는 형식이 일정하기 때문에 자주 쓰다 보면 자연스럽게 익숙해질 듯.
이런 류의 인증서 기반 프로세스는 다른 플랫폼이나 보안 연동 작업에서도 반복될 수 있어서, 지금 정리해두는 게 꽤 의미 있다고 생각한다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기