HTTPS 에러 해결하기

오른쪽처럼 발행산 사이트에 자꾸 주의 요함이 발생한다.

원인은 이 사이트는 보안 연결이 사용되지 않았단다..

나는 EC2 에서 HTTPS 포트 설정이 안 돼서 그런 건가 싶었는데

그게 아니라, 그냥 사이트에 대한 몇 가지 인증이 필요한 거였다.

한 번 차근차근 해결해보자.

로드맵

  1. SSL/TLS 인증서 설치: 웹 서버에 SSL/TLS 인증서가 설치되어 있어야 합니다. Let’s Encrypt와 같은 서비스를 통해 무료 인증서를 발급받을 수 있습니다.

  2. 웹 서버(예: Nginx, Apache) 설정: 웹 서버가 SSL/TLS 인증서를 사용하도록 구성되어야 합니다. 이는 보통 웹 서버의 설정 파일에서 SSL 관련 지시어를 통해 이루어집니다.

  3. 443 포트에서의 웹 서버 리스닝: 웹 서버가 443 포트에서 리스닝하고 있어야 합니다. 이는 웹 서버의 설정 파일에서 확인할 수 있습니다.

  4. 방화벽 설정 확인: EC2 인스턴스 자체의 방화벽(예: iptables)이 443 포트를 차단하고 있지 않은지 확인합니다.

위와 같은 절차를 따라 진행하면 해당 오류를 해결할 수 있을 것 같다.

1번 부터 따라가며 진행해보자. 사실상 1번, 2번에서 작업은 끝난다.

1. SSL/TLS 인증서 설치

먼저 SSH 접속을 통해 EC2 에 접근하고,  아래의 명령어를 실행하겠습니다.

그런데, 이 과정을 따라하기 전에 먼저 

				
					cat /etc/os-release

				
			

위 명령어를 통해서 내 EC2 의 버전이 정확히 어떤 버전인지를 확인하고 가는 것이 좋습니다.

저는 Amazon Linux 2023 버전을 이용했습니다.

버전을 확인했다면 본인의 버전에 알맞은 명령어를 사용해야 합니다. 

보통은 sudo yum install … 문을 통하여 필요한 패키지를 설치하는 것이 정석인데, 

저는 자꾸 No match for argument 가 발생해서, 다음과 같이 설치를 진행합니다.

				
					sudo yum install python3-pip 


				
			

먼저 파이썬을 설치했습니다. 이때, 중간에 y 를 눌러 설치를 진행해줍시다.

				
					sudo pip3 install certbot


				
			

pip 를 이용해서 certbot 설치를 완료해줍시다.

				
					sudo systemctl stop nginx



				
			
				
					sudo certbot certonly --standalone -d your_domain.com



				
			

서버가 실행 중에는 해당 웹사이트에 대한 인증서를 발급 받을 수 없으니까
서버를 먼저 중단하고 인증서를 발급 받읍시다. your_domain.com 에 자신의 웹사이트 도메인을 넣어주면 됩니다.

2. 웹서버 설정

인증서 발급이 완료 되었다면, 해당 서버에 인증서 설정을 해줘야 합니다.

저는 Nginx 서버를 사용하고 있으니까 그에 맞춰 진행하겠습니다. 

				
					sudo nano /etc/nginx/nginx.conf


				
			

위 코드를 통해 편집기로 들어가 줍시다.

편집기에서 아래 방향키로 내려가주면, Server { 으로 시작하는 부분이 있을 건데요. 

거기서 내용을 편집해야 합니다. 

기존에 HTTP 설정을 해둔 Server 블록이 있을 건데, 그 아래로 내려가면 주석으로 처리가 된 새로운 Server 블록이 존재할 겁니다. 

바로 그 부분에 수정을 해야 한다는 겁니다. 

				
					server {
    listen 443 ssl;
    server_name example.com; # 여기에 도메인 이름을 넣으세요

    ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem;

    # 기타 설정...
}



				
			

여기서 제일 중요한 부분이 바로 ssl_certificate 와 ssl_certificate_key 에 올바른 경로를 집어넣어주는 것입니다.

위에서 your_domain 부분에 여러분의 웹사이트 도메인을 넣게 되면 그게 기본적으로 인증서가 저장된 경로입니다.

기본경로 설정으로 진행했지만, 혹시 경로르 변경한 경우라면 다음의 명령어를 통해서 인증서의 경로를 확인해주세요.

				
					sudo ls -l /etc/letsencrypt/live/



				
			

결과

결과적으로 우측과 같이

사이트에 접속했을 때 아주 잘 보안이 되었다고 나타나고 있습니다.^^

이제 결제라든지 보안과 관련된 옵션을 넣었을 때 잘 작동될 것 같습니다.