자체 서명 SSL 인증서를 사용한 로컬 HTTPS 개발
로컬 웹 개발과 테스트에서는 실제 운영 환경의 HTTPS 연결을 시뮬레이션하는 것이 매우 중요합니다. 자체 서명 SSL 인증서는 공개 인증 기관(CA)에서 신뢰하지 않지만, 로컬 개발 환경에서 HTTPS를 실현하는 가장 간편한 방법입니다. 이 문서에서는 ServBay에 내장된 OpenSSL 도구를 사용하여 안전하고 효율적인 타원 곡선 암호화(ECC) 기반 자체 서명 SSL 인증서를 생성하고, 이 인증서를 ServBay에 로컬 웹사이트 구성에 적용하는 방법을 단계별로 설명합니다. 예시 도메인으로 servbay.demo
를 사용합니다.
HTTPS 구성을 이해하면 혼합 콘텐츠 경고, 쿠키 보안 플래그 등 보안 연결에서 사이트의 동작을 로컬에서 완벽히 테스트할 수 있습니다.
개요
자체 서명 인증서란, 신뢰받는 외부 CA가 아닌 사용자가 직접 생성하고 서명한 SSL 인증서를 의미합니다. 이는 다음과 같은 공개 신뢰가 필요 없는 상황에 적합합니다:
- 로컬 개발 환경
- 내부 테스트 서버
- 중요한 데이터가 없는 내부용 앱
ServBay는 OpenSSL 도구를 통합하여 터미널에서 쉽게 인증서 파일을 생성할 수 있도록 지원합니다.
사전 준비
- ServBay가 성공적으로 설치 및 실행 중이어야 합니다.
- 기본적인 커맨드라인 명령어 사용법을 알고 있어야 합니다.
1단계: 자체 서명 ECC SSL 인증서 생성
ECC 인증서는 전통적인 RSA 인증서에 비해 같은 수준의 보안성을 제공하면서도 더 작은 키, 빠른 서명 및 검증 속도, 더 적은 연산 자원을 요구합니다. 따라서 ECC 인증서를 사용하는 것을 권장합니다.
아래는 자체 서명 ECC SSL 인증서를 생성하는 방법입니다:
ECC 개인키 생성
터미널을 실행하여
prime256v1
곡선을 사용하는 ECC 개인키 파일servbay.demo.key
를 생성합니다.shopenssl ecparam -genkey -name prime256v1 -out servbay.demo.key
1openssl
: OpenSSL 도구 호출ecparam
: ECC 파라미터 관련 명령어-genkey
: 키 생성-name prime256v1
: 사용할 ECC 곡선 명칭 지정,prime256v1
(NIST P-256) 추천-out servbay.demo.key
: 출력될 키 파일명 지정
CSR(인증서 서명 요청) 생성
앞서 생성한 키(
servbay.demo.key
)를 사용하여 CSR(인증서 서명 요청) 파일servbay.demo.csr
을 만듭니다. CSR에는 인증서에 포함될 정보(도메인, 조직명 등)가 담기며, 개인키로 서명됩니다.shopenssl req -new -key servbay.demo.key -out servbay.demo.csr
1명령을 실행하면 OpenSSL에서 일련의 정보를 입력하라는 프롬프트가 나타납니다. 안내에 따라 입력하면 됩니다. 이때 가장 중요한 필드는
Common Name (e.g. server FQDN or YOUR name)
으로, 여기에 로컬 웹사이트에서 사용하는 도메인(예:servbay.demo
)을 입력해야 합니다. 그 외의 항목은 예시에 맞추거나 실제 정보로 작성하셔도 됩니다.아래는 입력 예시입니다:
Country Name (2 letter code) [AU]:CN # 국가 코드, 예: CN(중국) State or Province Name (full name) [Some-State]:Hong Kong # 주/성 Locality Name (eg, city) []:Kowloon # 도시명 Organization Name (eg, company) [Internet Widgits Pty Ltd]:ServBay # 조직명 Organizational Unit Name (eg, section) []:Development # 부서명 Common Name (e.g. server FQDN or YOUR name) []:servbay.demo # **중요: 로컬 도메인 입력** Email Address []:[email protected] # 연락 이메일 Please enter the following 'extra' attributes to be sent on in your certificate request A challenge password []: # 선택사항, 비워도 됨 An optional company name []: # 선택사항, 비워도 됨
1
2
3
4
5
6
7
8
9
10
11자체 서명 인증서 생성
앞 단계에서 만든 CSR(
servbay.demo.csr
) 및 개인키(servbay.demo.key
)로 자체 서명 SSL 인증서 파일servbay.demo.crt
를 만듭니다. 인증서 유효기간은 365일로 설정하겠습니다.shopenssl x509 -req -days 365 -in servbay.demo.csr -signkey servbay.demo.key -out servbay.demo.crt
1openssl x509
: X.509 인증서 관리 명령어-req
: CSR로부터 인증서 발행-days 365
: 인증서 유효기간(일)-in servbay.demo.csr
: 입력 CSR 파일 지정-signkey servbay.demo.key
: 인증서 서명에 사용할 개인키 지정-out servbay.demo.crt
: 생성될 인증서 파일명 지정
위의 과정을 모두 마치면 현재 디렉터리에
servbay.demo.key
(개인키),servbay.demo.csr
(서명 요청),servbay.demo.crt
(자체 서명 인증서) 세 개의 파일이 생성됩니다.
(이미지 설명: 터미널에서 OpenSSL 명령어로 인증서 파일을 생성하는 과정)
2단계: ServBay에서 자체 서명 SSL 인증서 설정
인증서 파일을 생성한 후, ServBay에서 접근 가능한 경로에 파일들을 배치하고, 사이트 설정에서 해당 인증서를 연결해야 합니다. ServBay에서는 /Applications/ServBay/ssl
디렉터리에 SSL 인증서 파일을 모아 관리하고, 도메인별로 하위 디렉터리를 만들어 저장할 것을 권장합니다.
인증서 파일 지정 경로로 이동
ServBay 권장 구조에 따라, 생성된 인증서 파일을
/Applications/ServBay/ssl/private/tls-certs/servbay.demo/
에 옮깁니다. 해당 디렉터리가 없으면 먼저 생성합니다.sh# 디렉터리가 없으면 생성 mkdir -p /Applications/ServBay/ssl/private/tls-certs/servbay.demo/ # 파일 이동 mv servbay.demo.key /Applications/ServBay/ssl/private/tls-certs/servbay.demo/ mv servbay.demo.crt /Applications/ServBay/ssl/private/tls-certs/servbay.demo/ # CSR 파일도 백업/기록용으로 함께 이동 가능 mv servbay.demo.csr /Applications/ServBay/ssl/private/tls-certs/servbay.demo/
1
2
3
4
5
6
7
8/Applications/ServBay/ssl/
: ServBay의 기본 SSL 파일 저장 경로private/tls-certs/
: 개인 TLS/SSL 인증서 저장을 위한 권장 하위 폴더servbay.demo/
: 도메인별로 생성한 하위 디렉터리, 여러 웹사이트 관리에 유용함
ServBay 관리 인터페이스 열기
ServBay 앱을 실행하고, 관리 대시보드를 엽니다.
사이트 설정 추가/수정
웹사이트(Websites) 탭으로 이동해,
servbay.demo
에 대한 사이트 구성이 없다면 **사이트 추가(Add Website)**를 클릭해 새로 생성하거나, 기존 설정을 편집합니다.SSL/HTTPS 설정
사이트 상세 설정에서 SSL/HTTPS 혹은 유사한 설정 영역을 찾습니다.
인증서 방식에서 Custom(사용자 지정) 선택
SSL 인증서 발급 방식 또는 타입에서 Custom(사용자 지정 인증서) 옵션을 선택합니다.
인증서 파일 경로 지정
각각의 입력란에 아래와 같이 앞서 이동한 인증서 파일 경로를 입력하거나 탐색해 선택합니다:
- Certificate Key File(인증서 개인키 파일):
/Applications/ServBay/ssl/private/tls-certs/servbay.demo/servbay.demo.key
- Certificate File(인증서 파일):
/Applications/ServBay/ssl/private/tls-certs/servbay.demo/servbay.demo.crt
- Certificate Key File(인증서 개인키 파일):
도메인 명시
사이트 설정의 도메인(Domain) 항목에
servbay.demo
가 정확히 입력되어 있는지 확인합니다.설정 저장 및 적용
변경 사항을 저장하고 ServBay의 안내에 따라 구성을 적용합니다. 적용 과정에서 웹 서버(Caddy, Nginx 등)의 재시작이 필요할 수 있습니다. 알림이 나오면 확인을 눌러 적용하세요.
(이미지 설명: ServBay 관리 화면에서 웹사이트 SSL 인증서 경로를 사용자 지정 설정하는 모습)
HTTPS 설정 확인
ServBay에서의 설정이 완료되면, 브라우저에서 https://servbay.demo/
로 접속하여 정상 동작 여부를 확인할 수 있습니다.
자체 서명 인증서는 공식 CA에서 신뢰하는 인증서가 아니기 때문에, 브라우저에서 인증서 신뢰 불가 및 개인정보 위험 메시지가 표시됩니다. 이는 정상적인 현상입니다.
(이미지 설명: 브라우저에서 자체 서명 인증서로 접속 시 표시되는 보안 경고)
"고급" 또는 "계속" 등의 옵션을 선택해 경고를 무시하고 사이트로 진입할 수도 있으며, 매번 경고를 피하려면 해당 인증서를 운영체제 신뢰 저장소에 추가할 수도 있습니다.
(이미지 설명: 브라우저에서 자체 서명 인증서 세부 정보를 확인하는 화면)
인증서 상세정보를 확인하면 브라우저가 실제로 설정한 servbay.demo
인증서를 사용하고 있음을 검증할 수 있습니다.
유의사항
- 개인키 보안:
.key
파일(개인키)은 매우 민감한 정보이므로 외부에 노출되지 않게 조심스럽게 관리해야 합니다. 로컬 개발 환경이라 하더라도 파일 권한을 ServBay 사용자만 접근할 수 있도록 제한하세요. - 파일 경로: ServBay 설정에 입력한 인증서 파일 경로가 올바르고 전체 경로인지 꼭 확인하세요.
- 도메인 일치: CSR 생성 시 CN(Common Name)에 입력한 도메인과 ServBay 사이트 설정에 입력한 도메인이 완전히 일치해야 하며, 달라질 경우 브라우저에서 도메인 불일치 오류를 표시합니다.
- 인증서 유효기간: 자체 서명 인증서는 생성 시 지정한
-days
값만큼 유효합니다. 기한이 만료되면 재생성 및 재설정이 필요합니다.
관련 주제 및 대안
자체 서명 인증서는 기본적인 로컬 HTTPS 테스트에 적합하지만, 공개 CA에 가까운 신뢰 체계를 로컬 환경에서도 경험하고 싶다면 ServBay에서 제공하는 다음과 같은 대체 방안을 고려할 수 있습니다:
- ServBay User CA: ServBay는 사용자용 CA 도구를 제공합니다. 이 도구로 생성한 CA를 운영체제의 신뢰 저장소에 추가한 뒤, CA로 로컬 사이트용 인증서를 발급 받을 수 있습니다. 이렇게 하면 자체 서명 인증서에 따른 경고 없이 운영체제와 브라우저에서 인증서를 신뢰하게 되며, OAuth 콜백이나 Webhook 등 인증서 신뢰가 요구되는 상황에서 유용합니다.
- ServBay Public CA: ServBay는 또한 퍼블릭 CA 기능도 제공하여, 로컬 도메인에 대해 인증서를 발급하고 시스템 신뢰를 자동으로 설정할 수 있습니다.
이러한 대안은 여러 로컬 사이트를 관리할 때 수동 발급 및 신뢰 설정보다 훨씬 편리합니다. 자세한 방법은 ServBay 공식 문서를 참고하세요.
자주 묻는 질문 (FAQ)
- Q: 인증서를 생성했는데 여전히 브라우저에 보안 경고가 뜹니다. 왜 그런가요?
- A: 자체 서명 인증서는 공개 CA에서 신뢰하지 않기 때문에 브라우저에서는 항상 보안 경고를 표시합니다. 경고를 피하려면 발급한 인증서 또는(ServBay User CA 같은) CA를 운영체제 신뢰 저장소에 추가해야 합니다.
- Q: RSA 인증서도 사용 가능한가요?
- A: 가능합니다. OpenSSL 명령어
openssl genrsa -out servbay.demo.key 2048
등으로 RSA 개인키를 생성한 뒤, CSR 및 인증서 발급 과정을 진행하면 됩니다. 하지만 성능면에서 ECC 인증서를 권장합니다.
- A: 가능합니다. OpenSSL 명령어
- Q: 자체 서명 인증서를 macOS 신뢰 저장소에 추가하는 방법은?
- A: "키체인 접근(Keychain Access)" 앱을 열고, "시스템" 또는 "로그인" 키체인을 선택합니다.
.crt
파일을 키체인으로 드래그하여 가져간 뒤, 인증서를 더블 클릭해 "신뢰" 항목을 펼치고 "보안 소켓 계층(SSL)"을 "항상 신뢰"로 설정합니다. 창을 닫고 필요시 암호를 입력한 다음, 브라우저를 재시작하세요.
- A: "키체인 접근(Keychain Access)" 앱을 열고, "시스템" 또는 "로그인" 키체인을 선택합니다.
정리
이 문서를 통해 ServBay의 OpenSSL 도구로 자체 서명 ECC SSL 인증서 생성 및 이를 ServBay 로컬 웹사이트에 적용하는 방법을 익힐 수 있습니다. 자체 서명 인증서는 주로 로컬 개발 및 테스트 목적으로 활용하지만, HTTPS 원리를 체험하고 로컬에서 보안 연결을 구현하는 첫 단계로 의미가 있습니다. 더 편리한 로컬 신뢰 관리가 필요하다면, ServBay의 User CA 및 Public CA 기능을 추가로 활용해 보십시오. 이 과정이 여러분의 로컬 웹 개발 업무에 실질적으로 도움이 되길 바랍니다.