우선 처음 NGINX를 써봐서 너무너무 어렵고 원리도 몰라서 힘들었다... 정말 3일 밤낮으로 난리란 난리를 치면서 문제를 해결하려고 했고..
나의 친구 GPT와 학교 선배와... 지인과.. 여럿에게 물어보면서 해결한 것 같다.
SSL인증을 위해서 필요한 것부터 정리해보자.
SSL을 인증하기 위해서 필요한 것
1. 도메인
먼저 SSL은 Domain에 기반하여 인증하는 것이기 때문에 도메인을 사야한다. 본인은 가비아에서 할인 행사하는 550원짜리 도메인을 샀다.
2. NGINX + certbot
NGINX는 웹 서버로서 클라이언트의요청에 따라 HTML, CSS, JS, 이미지 파일과 같은 정적 파일을 응답하여 제공하는 소프트웨어라고 한다. 웹서버는 HTTP 프로토콜을 사용하여 클라이언트와 통신한다. 그래서 여기서 HTTPS로 적용해주는 것이다.
정확한 내용은 좀 더 시간을 가지고 공부해봐야 할 것 같다.
그래서 Let's Encrypt SSL 무료 인증서를 발급받아서 사용한다. 이를 위해서 certbot이 필요하다.
그럼 이제 NGINX설치와 도메인 구매 클라우드 설정까지 봐보겠다.
정말 이 과정을 수행하기 위해서 얼마나 많은 글을 찾아봤는지...
도메인 구매
우선 도메인이 있어야 SSL인증서 발급과정을 실행할 수 있기 때문에 도메인을 먼저 구매하였다.
본인이 도메인을 구매한 곳은 가비아이다.
가비아에 들어가서 원하는 도메인을 검색하여 구매하면 된다.
들어가서 검색하면 제각각의 다양한 비용의 도메인이 나온다. 그중에서 사용할 도메인을 구매하여 결제까지 진행하면 된다.
들어가면 이런 선택지가 있고, 본인은 가비아 네임서버 사용을 눌러서 구매했다. 사실 별 상관없을 것 같다. 나중에 관리창에서 수정해주면 된다.
안전 잠금 서비스는 안전을 위해 신청했다.
그래서 이렇게 도메인을 구매했다.
그럼 이제 서버에가서 연결할 서버의 네임서버를 가져와서 입력해주자.
본인은 네이버 클라우드를 사용하였다.
네이버 클라우드 접속하여 네임서버 주소 알아오기
본인은 centOS기반의 micro서버를 사용하고있다.
기존에 네이버클라우드에서는 DNS라는 서비스를 제공했지만 이제는 Deprecated되었다. 그리고 이제는 Global DNS를 사용하라고 권장한다.
그래서 본인은 이 Global DNS를 사용하였다. 비용이 크지 않아서 사용한다.
여기에 이제 레코드를 추가할 것이다.
들어가면 도메인을 추가 버튼이 있다.
도메인 추가 버튼을 누르면 위와 같은 창이 나오고 이름은 도메인 이름을 작성한다. ex)lion.store, lion.com, lion.net 등등
그리고 설명은 알아서 작성한다. 그러면 일단 도메인 연결을 위한 첫번째 준비를 한 것이고 이렇게 추가한 도메인에 레코드를 추가하는 작업 또한 해주어야한다.
레코드 추가 버튼을 누르면 위와 같은 화면이 나온다. 그러면 여기서 레코드명은 www로 하고 A타입으로 레코드 값은 서버의 공인 IP를 입력한다. 그러면 이제 클라우드와 도메인을 구매한 곳에서 해야할 일을 거의 다 한 것이다.
이제 우리가 클라우드 서버에 온 원래의 목적을 이루어보자.
네임서버 연결하기
위에 보이는 사진에서 등록기관 설정 정보를 열어보면 ns1-1.ns-ncloud.com ns1-2.ns-ncloud.com 이런 레코드 값들이 있을 것이다.
이것들을 복사해서 이제 도메인을 구매한 가비아의 네임서버를 채워줄 것이다.
다시 가비아 홈페이지로 넘어가서 My가비아에 서비스 관리를 들어간다.
그러면 위와 같은 창이 나올 것이다. 여기서 도메인 통합 관리툴을 연다.
그러면 통합 관리툴에서 도메인 정보 변경에 들어가서 네임서버 버튼을 누르면 네임서버를 지정할 수 있다.
이곳에 네이버 클라우드의 네임서버 레코드값을 가져와서 붙여 넣으면 끝이다.
그럼 이제 서버에 NGINX를 설치하겠다.
NGINX 설치 centOS기반
일단 yum 저장소에는 nginx가 없기 때문에 외부 저장소를 추가해야했다.
vi /etc/yum.repos.d/nginx.repo
그래서 /etc/yum.repos.d경로에 위와 같은 nginx.repo파일을 추가하여 작성했다.
그 다음 아래 명령어를 실행하여 nginx를 설치했다.
yum install -y nginx
방화벽 설정
sudo yum install firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld // firewalld활성화
sudo firewall-cmd --zone=public --permanent --add-service=http
sudo firewall-cmd --zone=public --permanent --add-service=https // 방화벽 규칙 설정
sudo firewall-cmd --reload // 변경 사항 적용
sudo firewall-cmd --list-all // 규칙 확인
이렇게 방화벽 설정까지 하고, 이제는 certbot을 설치한다.
certbot 설치
yum install certbot
yum install python2-certbot-nginx //Ubuntu18.04이상은 Python3로 대체
설치가 안된다면 gpt에게...물어보면 알려줄거에요.. 여러개 나오더라구요
NGINX SSL 인증서 발급
sudo certbot --nginx -d lion.com -d www.lion.com
이메일 주소 입력하라고 나오고 서비스 약관 동의 나오면 확인하면 된다.
안되는 경우나 오류가 같이 뜨는 경우가 있다. 아래의 문구만 나오면 인증서 발급에는 상관없는 것 같다.
-------------------------------------------------------------------------------------
IMPORTANT NOTES:
Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/lion.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/lion.com//privkey.pem
Your cert will expire on 2017-12-12.
공식 문서에서는 domain-name.conf라는 설정 파일을 만들지만 certbot을 통해 인증서를 받고 NGINX도 다운했으면,
/etc/nginx/conf.d/default.conf의 경로로 설정파일이 생기는 것 같다. 본인은 이 파일을 설정했다.
server {
# https(ssl) 접속에 대한 설정.
listen 443 ssl http2;
server_name lion.com www.lion.com;
# 기본 웹 콘텐츠 디렉토리 설정
root /var/www/html;
# 발급 받은 인증서 파일에 대한 경로 설정.
ssl_certificate /etc/letsencrypt/live/lion.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/lion.com/privkey.pem;
charset utf-8;
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log warn;
location / {
try_files $uri $uri/ =404;
}
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
# http로 접속 시에 (일반적으로 80포트) https로 리다이렉트 되도록 설정.
server {
listen 80;
server_name lion.com www.lion.com;
return 301 https://lion.com$request_uri;
}
이렇게 설정파일을 만들어서 ssl을 적용하였다.
설정파일 작성은 gpt의 도움을 받았다..
그리고 본인의 기본 웹콘텐츠 티렉토리를 테스트를 위해 /var/www/html로 설정해주었다.
그 다음 이곳에 index.html파일을 생성하였다.
그리고 나서 NGINX를 실행시켜 보자. 아래는 nginx의 명령어들이다.
sudo systemctl start nginx // 시작
sudo systemctl restart nginx // 재시작
sudo systemctl stop nginx // 정지
service nginx -t // 설정 검사
service nginx status // 상태확인
그래서 결과적으로 아래와 같은 화면을 https로 확인할 수 있었다.
아래에는 참고했던 글들을 적어보았다.
[Nginx] SSL 설정(HTTPS 적용)
1. 개요 기존에 웹 사이트를 HTTP로 운영하고 있다가, 사용자의 정보같은 민감한 정보를 사용하게 될 경우에는 SSL 인증서를 사용한 보안처리를 해야합니다. 웹서버에 SSL 인증서를 사용해 웹사이
narup.tistory.com
[NCP] 네이버 클라우드 도메인 설정
목표: http://000.000.00.56:8000/ -> http://medidid.com:8000 접근성공 ㅇ 네이버 클라우드 설정 1. Products & Services -> Global DNS 클릭 2. 도메인 추가 클릭 후 이름, 설명 작성 후 '추가' 클릭 3. 레코드 추가(버튼 활
racoonlotty.tistory.com
https://gist.github.com/woorim960/dda0bc85599f61a025bb8ac471dfaf7a
Nginx를 이용하여 https 적용하는 법
Nginx를 이용하여 https 적용하는 법. GitHub Gist: instantly share code, notes, and snippets.
gist.github.com
https://velog.io/@coastby/Nginx-SSL-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0
[Nginx] SSL 적용하기
SSL(Secure Socket Layer) 또는 TLS(Transport Layer Security)은 전송계층 상에서 클라이언트, 서버에 대한 인증 및 데이터 암호화를 수행한다. 클라이언트와 서버 양단 간 응용계층 및 TCP 전송계층 사이에서
velog.io
Let’s Encrypt 인증서로 NGINX SSL 설정하기
이 모범 사례에서는 Let’s Encrypt 클라이언트를 사용하여 인증서를 생성하는 방법과 이를 사용하도록 NGINX 오픈소스 및 NGINX Plus를 사용하여 nginx ssl 설정을 자동으로 구성하는 방법을 다룹니다.
nginxstore.com
https://www.whatsmydns.net/#A/likelion-running.store
DNS Propagation Checker - Global DNS Checker Tool
Instant DNS Propagation Check. Global DNS Propagation Checker - Check DNS records around the world.
www.whatsmydns.net
https://brunch.co.kr/@topasvga/1938
36.(30분 공부)네이버 클라우드 DNS 사용해 보기
네이버 클라우드 DNS서비스인 Global DNS 서비스 설정법을 알려드립니다. <1> Global DNS = 도메인 네임 서비스이다. <2> Global DNS 사용법과 도메인 연결하기 <3> 기존에 네임서버가 있는 경우 서브도메
brunch.co.kr
Linux/CentOS 7 Nginx 설치 및 설정
Overview CentOS 7 서버 환경에 Nginx를 설치하고 기본 설정 방법에 대해 정리했습니다. 1. yum 외부 저장소 추가/설치 yum 저장소에는 nginx가 없기 때문에 외부 저장소를 추가해야 한다. sudo vim /etc/yum.repos
deoking.tistory.com
https://www.nginx.com/blog/using-free-ssltls-certificates-from-lets-encrypt-with-nginx/
Update: Using Free Let’s Encrypt SSL/TLS Certificates with NGINX - NGINX
Learn how to use the Let’s Encrypt client to generate RSA certificates and automatically configure NGINX to use the newly issued certificates.
www.nginx.com
https://dejavuhyo.github.io/posts/nginx-install-on-centos/
CentOS 7 Nginx 설치
1. 외부 저장소 추가 yum 저장소에는 nginx가 없기 때문에 외부 저장소를 추가 한다.
dejavuhyo.github.io
[SSL] Let's Encrypt SSL 인증서 설치 Centos8 , crontab
센토스8 에서 홈페이지 https 를 위한 Let's Encrypt 설치 방법 간단하게 포스팅합니다. Let's Encrypt 설치 sudo dnf install epel-release 혹시 아래처럼 오류 뜨면서 안되면 Failed to set locale, defaulting to C.UTF-8 CentO
bug41.tistory.com
'LikeLion🦁' 카테고리의 다른 글
おはよう~ 이번엔 일본 여행🇯🇵 (3) | 2024.02.01 |
---|---|
뛰슈 NGINX+Docker+Spring boot 설정 (0) | 2023.11.05 |
뛰슈 - 이메일 인증 (0) | 2023.09.09 |
또 떠나는 여행 이번엔 경주유🚋 (13) | 2023.09.01 |
뛰슈 - JWT (0) | 2023.08.31 |