어플리케이션 서버에서 SSL로딩하지 않고 Nginx에서 대신해준다고 해서 Offloading 이라는 용어로도 쓰고 SSL termination이라고 쓰기도 한다.
HTTPS 등 SSL 인증 요청이 들어왔을때, nginx 에서 인증서로 인증을 하고, proxy 하는 서버로는 ssl이 없는 요청을(http) 전달할 수 있다. 이렇게 했을 때 장점으로는
SSL 인증할 때 추가적인 핸드쉐이킹이 일어나는데 그것을 Nginx에서 해줬기 때문에 어플리케이션 서버는 그 로직을 타지 않기 때문에 응답 시간을 좀 더 빠르게 할 수 있는 장점이 있다.
그리고 인증서같은 경우는 자주 변경되는 값이 아니죠 사설상 정적인 파일이고 갱신 주기마다 갱신을 해 주면 되는 거여서 nginx에서 대신해주기도 적절하다. (+ 정적파일 서빙 개념)
sudo mkdir /etc/nginx/ssl

sudo openssl req -x509 -days 30 -nodes -newkey rsa:2048 \
-keyout /etc/nginx/ssl/nginx-ssl.key \
-out /etc/nginx/ssl/nginx-ssl.crt
해당 스크립트 입력하면 설명이 나고오 너의 정보를 입력해. Certification에 들어갈 정보를 입력해. 라고 하는데 이 부분들은 우리가 상용 서비스를 할 게 아니라 실습용이기 때문에 임의의 값을 입력하면 된다. 상용서비스를 이용하는 경우에는 유료 공인 인증된 기관에서 발급받아서 그 certify를 다운로드 받아서 써야 함. 실제 로컬에서는 private ket 정도만 발급을 하고 우선은 여기서

KR, Seoul, enter(공백)

도메인 Your name에다가 내가 사용할 EC2 인스턴스에 public dns 이름을 입력.
전부 입력하고 ls ssl 을 확인해보자.

certified랑 key 파일이 생성되었다. 그 다음엔 nginx ssl을 설치해야함.
cd conf.d 로 이동해서 sudo vi ssl.conf

server_name에는 내 ec2 도메인 넣고
certificate 가 위치한 경로,
certificate_key (private key)가 위치한 경로 입력해주면 된다.
그리고 ssl, https같은 경우엔 443포트를 쓰는 게 혼동이 없기 때문에 좋다.
설정이 완료되었다면 reload 해주자.
sudo nginx -s reload
그러면 아까 내 도메인주소로 , HTTPS 브라우저 접속하면 어떻게 되는지 한 번 보자.

Your connection is not private 으로 문제가 있는 것 처럼 나온다.
보면

자세히 보면 Cert 가 없는 건 아니고
net::ERR_CERT_AUTHORITY_INVALID.
크롬이라는 브라우저가 똑똑해서 이 인증 기관이 공식 인증된 기관이냐, 글로벌하게 등록된 거냐. 그걸 확인을 해준다. 그래서 그걸 확인했을 때 너는 공식 인증서가 아닌데 라고 되어 있다.
근데 어쨌든 요 안에 내용을 보면 발급자가 요거고 여 기서 여기 누르신 다음에 Gertification is not valid 여기 들어가시면 내가 설정한 내 organization 이름으로 이렇게 정보가 설 정된 걸 볼 수 있고

certificate detail 들어가서 보면

내가 설정한 Organization (O) 이름으로 , 되어있고 어쨌든 Nginx는 SSL인증서를 제대로 넣어준 것이 확인디 된 것이다.
실습에서 사용한 crt 는 임의로 생성한 것이고 공임 CA에서 받은 인증서가 아니기 때문에, 브라우저에서는 unsafe 하다는 경고가 뜬다. detail 로 들어가서 내가 cert 를 생성할때 입력한 정보가 나온다면, nginx상에서 ssl 정보는 잘 세팅해준 것으로 이해하면 된다.
공인인증된 Certification을 넣으면 잘 될 것이다.