nginx 로 https 연결 하기! (feat. cafe24)

김범식·2024년 3월 2일
0

nginx를 사용하면 간편하게 https 연결을 할 수 있다고한다. 실제로 backend에서 세팅하는것보다 쉬웠다!


개발 환경

  • 서버 : 카페24 호스팅 서버
  • 인증서 : 카페24에서 구매
  • 도메인 : 카페24에서 구매

개발 환경 자체가 카페 24 기반이다. 인터페이스 자체가 익숙하지 않고 메뉴가 워낙 많아서 더 헷갈렸다.



인증서 다운받기

인증서를 설치하기 전에 반드시 도메인 연결이 되어있어야함!

  • 경로 : 카페24 호스팅 로그인 > 나의서비스관리 > 인증서를 구매한 아이디 선택 > 인증서 관리

인증서를 구매하게 되면 이메일 인증을 하게되는데 그거 해줘야 인증서를 받을 수 있는 버튼을 볼 수 있다!

이제 전부 다운 받아두자



인증서 가공하기

인증서를 nginx에서 편하게 사용하기 전에 약간의 가공이 필요하다.

인증서 암호화 해제

openssl rsa -in ssl.key -out new_ssl.key
  • 이렇게 하지 않으면 nginx 다시 킬때마다 암호를 입력해야하니 번거롭지 않게 암호화를 해제해주자

인증서 합치기

cat ssl.crt chain_all_ssl.crt > final.crt

새롭게 파일이 추가된걸 볼 수 있다.



인증서 원격 서버로 이동하기

nginx와 함께 관리해주기 위해 etc/nginx/ssl 이라는 폴더를 따로 만들어 인증서를 보관했다.

scp new_ssl.key [사용자]@[원격 서버 ip]:/etc/nginx/ssl/  
scp final.crt [사용자]@[원격 서버 ip]:/etc/nginx/ssl/


nginx ssl 적용하기

두가지 설정을 추가했다.
1. http 로 오면 https 로 리다이렉트
2. 인증서 연결

더 많은 설정이 있지만 지금은 이것만으로도 https 연결이 끝난다!

server{
	listen 80;
	server_name example.com;
	return 301 https://$host$request_uri;  //http 요청오면 https로 보내기
}

server {
	listen 443 ssl;
	server_name example.com;

	// https 연결!!
	ssl_certificate /etc/nginx/ssl/final.crt;
	ssl_certificate_key /etc/nginx/ssl/new_ssl.key;


	location / {
 		// frontend 연결 코드.. 
	}

	location /api {
		// backend 연결 코드.. 
	}
}


혹시 에러가 나시나요?

코딩을 하다보면 정말 뜬금 없는곳에서 에러가 난다.

1. nginx한테 폴더 접근권한 주기

  • ssl 파일을 넣어놔도 폴더에 접근 권한이 없는경우 인증서에 접근할 수 없는경우가 생기기도 한다.
sudo chown -R nginx:nginx /etc/nginx/ssl
sudo chmod -R 755 /etc/nginx/ssl

2. 인증서 들여쓰기 오류

  • 아까 인증서를 병합할 때 인증서 사이에 줄바꿈이 일어나지 않는경우가 생겼다면 오류가 발생할 수 있다.
  • vi 혹은 vim으로 인증서를 열어보고 줄바꿈이 되어있지 않다면 사진처럼 바꿔주자
profile
frontend developer

0개의 댓글