회사 내 개발 서버를 사용하여 배포했었는데, webGPU는 https 에서만 적용되더라^^..
그래서 급하게 SSL 인증서 발급받고 적용했는데 안까먹으려고 작성한다!!!
SSL이란
서버와 사용자(브라우저) 간의 통신을 할 경우 정보를 암호화하고 도중에 해킹을 통해 정보가 유출된다 하더라도 내용을 보호할 수 있는 보안 인증 솔루션 기술
(보안 인증서가 적용되지 않은 HTTP 접속 시 각 브라우저는 '안전하지 않음', '주의 요함' 등의 반응을 보임)
개발 환경
도메인: cafe24에서 구매 (1년 550원 특가~)
인증서: zeroSSL (90일 무료 / 최대 3번까지 수동으로 연장 가능)
1. 도메인 구매
cafe24의 호스팅 센터로 로그인하고 메뉴에서 도메인을 찾아 들어간다. 검색창에 생성할 도메인을 입력하여 금액을 선택한 후 신청하면 끝!
[나의 서비스 관리] - [도메인 관리] 에 들어가면 도메인명, 만료일 등의 기본 정보를 확인할 수 있으며, [도메인 부가서비스] - [DNS 관리] 에서는 [호스트IP(A 레코드) 관리] 등을 통해 구매한 도메인과 매칭되는 IP 주소를 설정할 수 있다.
2. SSL 인증서 설정
1) 도메인 입력
라이브 서버도 아닌 개발 서버였기 때문에 무료인 곳을 찾아다녔고 zeroSSL이라는 홈페이지를 찾았다!
홈페이지에 들어가서 바로 보이는 입력 창에 가지고 있는 도메인 주소를 입력해준다.
2) 입력한 도메인에 대해 SSL 발급 가능한지 여부를 확인
3) 90일 선택해야 무료!
4) Add-Ons
아무것도 체크 안하고 다음 단계 클릭
5) CSR 및 연락처
자동 생성 클릭 후 다음 단계 이동
6) Finalize Your Order
무료로 인증서 발급 가능~
3. 도메인 확인
방법이 3가지가 제시되며 나는 2번째 DNS(CNAME) 인증으로 진행하였다.
도메인 네임서버에 직접 CNAME을 등록해서 인증하는 방식이다.
1) 도메인 정보 확인
2) 네임서버 등록
도메인을 구입한 사이트로 이동해서(나는 cafe24로 진입) 1번째 값을 도메인 별칭에, 2번째 값을 실제 도메인명에 입력하면 된다.
3) 도메인 인증
DNS 등록이 완료되면 [Verify Domain] 인증을 진행한다.
(바로 안될수도 있음 안되면 5~10분 기다렸다가 다시 확인)
4. 인증서 설치
1) 서버 선택 후 인증서 다운로드
나는 nginx를 사용하고 있으므로 nginx를 선택!
2) 인증서 설치
파일 압축을 풀면 인증서가 나온다.
certificate.crt
ca_bundle.crt
private.key
3) 인증서 원격 서버로 이동하기
nginx와 함께 관리해주기 위해 /etc/ssl/<추가 디렉터리>/ 폴더를 따로 만들어 인증서를 보관했다.
로컬에서 터미널을 열고 아래 코드를 입력해주면 원격 서버로 옮길 수 있다.(경로 잘 입력할 것!)
# scp [전송할 파일 경로] [사용자명]@[IP 주소]:[받을 경로]
scp ca_bundle.crt [사용자명]@[원격 서버 ip]:/etc/ssl/<추가 디렉터리>/
scp certificate.crt [사용자명]@[원격 서버 ip]:/etc/ssl/<추가 디렉터리>/
scp private.crt [사용자명]@[원격 서버 ip]:/etc/ssl/<추가 디렉터리>/
근데 사실 로컬에서 바로 /etc/ssl/<추가 디렉터리>/ 밑에 인증서를 옮기려고 하니까 권한 에러가 났었음.. 그래서 그냥 원격 서버의 홈 디렉토리(/home/[사용자명]/)에 옮기고 원격 서버 내에서 /etc/ssl/<추가 디렉터리>/ 밑으로 다시 옮겨줌 ㅎ
4) 인증서 병합
nginx는 SSL 설치를 허용하기 위해 모든 .crt 파일을 병합해야 한다. certificate.crt 및 ca_bundle.crt 파일을 병합하기 위해 아래 명령어를 실행해야 한다.
# .crt 파일 병합
cat certificate.crt ca_bundle.crt > nginx_ssl.crt
5. nginx ssl 적용
HTTP는 80으로 접속하지만, HTTPS는 443 포트로 접속하게 된다.
- http로 오면 https로 리다리엑트
- 인증서 연결
server {
listen 443 ssl;
server_name example.com;
// https 연결
ssl_certificate /etc/ssl/<추가 디렉터리>/nginx_ssl.crt;
ssl_certificate_key /etc/ssl/<추가 디렉터리>/private.key;
location / {
// frontend 연결 코드..
}
}
server{
listen 80;
server_name example.com;
location / {
return 301 https://$host$request_uri; //http 요청오면 https로 보내기
}
}
6. 서버 재실행
변경 사항 적용을 위해 nginx 서버를 재실행 해야 한다.
sudo systemctl restart nginx
마지막으로 도메인 주소를 입력해 연결된 모습을 확인해보자!
'Linux' 카테고리의 다른 글
[Linux] 윈도우 11에서 WSL 삭제 후 재설치하기 (0) | 2025.02.07 |
---|---|
[Linux] head, tail 명령어 (파일 시작, 끝 출력) (0) | 2024.12.08 |
[Linux] scp 명령어 사용법 (0) | 2024.11.26 |
[Linux] 디스크 공간 확인 명령어 (0) | 2024.11.15 |
[Linux] ubuntu 22.04 LTS server 설치 방법 및 ssh 설치, 접속 (7) | 2024.10.19 |