AWS EC2 certbot ssl 인증

Date:     Updated:

카테고리:

태그: , , ,

1. certBot 설치 동기

아이피로 접속하고, 도메인으로 접속하는 알수 없는 위협이 뜨고, Code-server도 접속이 자주 끊어 진다. 확인 결과 SSL인증서를 권장하고 인증되지 않을 경우 지속적으로 검사를 하고 조금이라도 민감함 정보가 전송이 된다면 차단된다. 그래서 무료 인증을 위해 Certbot을 설치해서 간단하게 달려고했다. 그런데 Amazon linux 2023에서 설치가 안된다. 시행 착오 끝에 설치 했지만 그 과정이 험난하여 기록을 남기고자 한다.

2. CertBot 설치시작

일단 쉽게 생각하고 설치를 진행했다.

sudo yum install -y certbot
Last metadata expiration check: 1:34:35 ago on Mon Apr 10 05:06:50 2023.
No match for argument: certbot
Error: Unable to find a match: certbot

패키지를 못 찾는다. 설치가 안된다. 하지만 이것은 리눅스다. 패키지 경로만 알면 다운받아서 설치하면 된다.

sudo wget -r --no-parent -A 'epel-release-*.rpm' http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/
sudo rpm -Uvh dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-*.rpm

패키지 다운로드는 된다. 그런데 설치가 안된다. epel-release가 이전에도 올렸지만 amazon linux 2023에는 설치가 안된다. 검색하고 또 검색했다. 결론은 아마존에서 보안정책이 변경되면서 기존 설치 방법으로는 안된다.

참조문서 : https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/SSL-on-amazon-linux-2023.html#letsencrypt-2023

image

CertBot amazon linux 2023 설치하기

정말 다행스럽게 설치 가이드가 존재했고 응용하여 설치가 가능했다.

# pip를 이용하여 python3 패키지를 직접 설치한다.
sudo dnf install -y python3 augeas-libs pip

# Python의 가상환경을 설정한다.
sudo python3 -m venv /opt/certbot/

여기서 부터 차이가 발생한다. 이 설치 방법과 환경은 아파치 환경에서 httpd 환경에서 certbot를 동작하기 위함이다.

sudo /opt/certbot/bin/pip install --upgrade pip
sudo /opt/certbot/bin/pip install certbot
sudo ln -s /opt/certbot/bin/certbot /usr/bin/certbot
sudo systemctl stop httpd
sudo certbot certonly --webroot

이것을 이전에 code-server를 기동하기 위해 nginx 환경을 구성하였다. 그렇다면 환경 또 한 certbot-nginx로 구성해야한다. 명령어를 변경하자.

#pip로 certbot-nginx의 최종 버전을 Install 한다.
sudo /opt/certbot-nginx/bin/pip install --upgrade pip

#Install certbot-nginx.
sudo /opt/certbot-nginx/bin/pip install certbot

# 동작을 위한 링크파일을 생성한다.
sudo ln -s /opt/certbot/bin/certbot-nginx /usr/bin/certbot-nginx

# 동작 중인 nginx 서비스를 중지한다.
sudo systemctl stop nginx

# nginx에 인증을 한다.
sudo certbot certonly --nginx

# nginx 서비스를 재시작한다.
sudo systemctl start nginx

image

도메인으로 접속해보면 인증되었음을 확인 할 수 있다.

3. nginx code-server 도메인으로 접속하게하고 아이피 접근 차단

sudo vi /etc/nginx/sites-available//code-server.conf

를 실행하여 가이드 문서을 수정한다.

server {
    listen 80;
    listen [::]:80;
	server_name testsub0410.duckdns.org;   #본인 도메인을 입력한다.

    location / {
      proxy_pass http://localhost:8080/;
      proxy_set_header Host $host;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection upgrade;
      proxy_set_header Accept-Encoding gzip;
    }
}

수정한 후 실제 동작 설정 파일을 갱신한다.

sudo ln -s ../sites-available/code-server /etc/nginx/sites-enabled/code-server

#nginx 서비스 재실행
sudo systemctl stop nginx
sudo systemctl start nginx

IP로 접근했을 때 아래와 같이 404에러가 발생한다.

image


개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
댓글 또는 메일로 알려주시면 감사하겠습니다.

맨 위로 이동하기

aws 카테고리 내 다른 글 보러가기

댓글 남기기