콘텐츠로 건너뛰기

Amazon Linux 2023 SSL 인증서 발급-SSL(Let’s encrypt) 적용 가장 쉬운 완벽 가이드

SSL 인증서 발급은 까다로운 작업입니다. 검색에서 발견할 수 있는 방법 중에서 가장 쉬운 SSL(Let’s encrypt) 설치 적용하는 방법을 공유합니다.

SSL 인증서 발급 SSH(Xshell 이나 Termius)를 통해서 SSL 설정

Xshell이나 Termius를 통해서 SSH에 로그인을 합니다. 따로 폴더를 바꿀 필요 없이 그대로 진행하면 됩니다. 아래의 회색 부분의 문구 순서대로 복사 붙여넣기 합니다.

SSL 인증서 발급

Root 사용자로 전환:

sudo su

설명: 이 명령은 root 사용자로 전환하므로 다음 명령을 root 권한으로 실행할 수 있습니다.

필요한 패키지 설치:

dnf install openssl mod_ssl

설명: opensslmod_ssl 패키지를 설치합니다. mod_ssl은 Apache 웹 서버에서 SSL 및 TLS 암호화를 지원합니다.

Python3 및 관련 라이브러리 설치:

dnf install -y python3 augeas-libs pip

설명: python3, augeas-libs, 그리고 pip를 설치합니다. 이들은 certbot 설치 및 작동에 필요합니다.

Python 가상 환경 생성:

python3 -m venv /opt/certbot/

설명: /opt/certbot/ 디렉토리에 Python 가상 환경을 생성합니다.

가상 환경 내용 확인:

ls /opt/certbot

설명: /opt/certbot/ 디렉토리의 내용을 나열하여 확인합니다.

pip 업그레이드:

/opt/certbot/bin/pip install --upgrade pip

설명: 가상 환경에서 pip를 최신 버전으로 업그레이드합니다.

Certbot 설치:

/opt/certbot/bin/pip install certbot

설명: 가상 환경에서 Certbot을 설치합니다.

Certbot 바이너리 심볼릭 링크 생성:

ln -s /opt/certbot/bin/certbot /usr/bin/certbot

Apache 서버 중지:

systemctl stop httpd

설명: Apache 웹 서버를 중지합니다. --standalone 옵션을 사용하여 certbot을 실행하려면 웹 서버가 중지된 상태여야 합니다.

SSL 인증서 발급

certbot certonly --standalone

설명: --standalone 옵션을 사용하여 SSL 인증서를 발급 받습니다. 프롬프트가 나타나면 이메일 주소를 입력한 뒤 Y, N 입력 이후에 도메인 이름(들)을 입력합니다.

www.도메인명.com 과 도메인.com(www없이) 이렇게 두 개의 도메인에 둘 다 ssl 인증서를 발급 받습니다. 두개를 받는 이유는 오류가 나는 만약의 경우에 대비하기 위해서 입니다. 이메일 주소와 첫 번째 도메인을 입력한 뒤 다시 certbot certonly –standalone 입력하면 추가로 두 번째 도메인을 입력할 수 있습니다.

Apache 서버 시작:

systemctl start httpd

설명: Apache 웹 서버를 다시 시작합니다.

SSL 설정 파일 편집:

vi /etc/httpd/conf.d/ssl.conf

설명: Apache의 SSL 설정 파일을 열어 편집합니다. 여기에서 인증서 파일 경로, 개인 키 경로 등을 지정하고 다른 SSL 관련 설정을 조정할 수 있습니다. 위 명령어 입력이 잘되었으면 아래 처럼 편집 화면으로 넘어가게 됩니다. insert를 의미하는 i 를 눌러서 편집을 할 수 있습니다.

자세한 편집 명령어는SSL 설정 파일 편집 하단에 Xshell과 Termius 편집기 사용 방법에서 소개합니다.

SSL 설정 파일 편집:

ssl.conf 파일이 열리면 설정 파일이 열리면 페이지 다운 키(혹은 방향키)로 문서의 제일 하단으로 이동합니다. i 를 누르면 편집할 수 있습니다. i를 누르고 아래의 편집 문구를 도메인명을 넣어서 추가하면 됩니다. www.도메인명.com 과 도메인명.com 두 가지 경우 둘 다 설정하는 편집 문구입니다. 해당 자리에 본인 소유의 도메인 명을 넣으면 됩니다.

<VirtualHost *:443>
    DocumentRoot "/var/www/html"
    ServerName 도메인명.com

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/도메인명.com/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/도메인명.com/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/도메인명.com/chain.pem
</VirtualHost>

<VirtualHost *:443>
    DocumentRoot "/var/www/html"
    ServerName www.도메인명.com

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/www.도메인명.com/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/www.도메인명.com/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/www.도메인명.com/chain.pem
</VirtualHost>

<VirtualHost *:80>
    ServerName 도메인명.com
    ServerAlias www.도메인명.com
    Redirect permanent / https://도메인명.com/
</VirtualHost>

수정이 완료되면 esc 를 누른 후 :wq(콜론 wq) 를 눌러서 설정 파일에서 빠져 나옵니다. 그리고 Apache 서버를 재 시작 합니다.

Apache 서버 재시작:

sudo systemctl restart httpd

설명: Apache 웹 서버를 재 시작합니다. 설정 변경 후 서버를 재 시작하면 새로운 설정이 적용됩니다.

이렇게 설정하는 이유는 아래와 같습니다. 이렇게 했을 때 가장 오류가 없었습니다.

설명: Apache의 SSL 설정 파일을 열어 편집합니다. 여기에서 인증서 파일 경로, 개인 키 경로 등을 지정하고 다른 SSL 관련 설정을 조정할 수 있습니다.

Xshell과 Termius 편집기 사용방법

Xshell 와 Termius

Xshell에서 Vim 또는 Vi 편집기를 사용하고 있다면, 다음은 일반적인 단계입니다:

  1. i 키를 눌러 삽입 모드로 들어갑니다. 이후 원하는 수정을 합니다.
  2. 편집 완료 후 삽입 모드에서 나오려면 Esc 키를 누릅니다.
  3. :을 눌러 명령 모드로 들어갑니다.
  4. wq를 입력하고 Enter를 눌러 저장하고 나갑니다.

SSL 자동갱신 설정 방법

cronie-noanacron 패키지 설치:

sudo dnf install cronie-noanacron

설명: cronie-noanacron 패키지를 설치합니다. 이 패키지는 cron 작업 스케쥴러와 관련된 것으로, 주기적인 작업을 자동으로 실행하기 위해 사용됩니다. Is this ok 를 물으면 [y/N] y를 선택합니다.

crontab 파일 편집:

sudo vi /etc/crontab

설명: 시스템의 crontab 파일을 열어 편집합니다. crontabcron 작업 스케쥴러를 위한 설정 파일로, 이 파일을 통해 주기적으로 실행할 작업을 설정할 수 있습니다.

자동 갱신 설정 추가:

30 1 * * 2 root /usr/bin/certbot renew --post-hook "systemctl reload httpd"

설정이 완료되면 esc 를 누른 후 :wq(콜론 wq) 를 눌러서 설정 파일에서 빠져 나옵니다.

설명: 매주 화요일 새벽 1시 30분에 인증서 갱신을 시도하는 작업을 추가합니다.

  • 30 1 * * 2: 이 부분은 cron의 시간 및 날짜 표현 방식으로, 매주 화요일 새벽 1시 30분을 의미합니다.
  • root: 작업을 실행할 사용자를 의미합니다. 여기서는 root 사용자로 설정되어 있습니다.
  • /usr/bin/certbot renew: certbot을 사용하여 인증서 갱신을 시도합니다.
  • --post-hook "systemctl reload httpd": 인증서 갱신 후에 실행될 명령입니다. 여기서는 Apache 서버의 설정을 다시 불러오는 reload 명령을 실행하도록 설정되어 있습니다.

-학습자가 똑똑해지는 스마트 교육
스마트 교육의 정보를 공유합니다.
강의요청 jey78v@naver.com

“Amazon Linux 2023 SSL 인증서 발급-SSL(Let’s encrypt) 적용 가장 쉬운 완벽 가이드”의 4개의 댓글

  1. 선생님 이 명령어에 공백이 있다고 실행이 안되네요 다른분들 위해 수정해두시면 좋을거 같아요~ 감사합니다 도움이 많이 되었습니다.
    혹시 저처럼 복붙하시면 명령어 실행 안될분들 있을지도 모르니까 댓글 남겨요 ㅎㅎㅎ

    ln -s /opt/certbot/bin/certbot /usr/ bin/certbot

  2. 하하 선생님 맨 마지막에 자동갱신 설정 추가에 ” 하나 오타 났습니다 ㅎㅎ 수정하셔야할 것 같습니다.
    30 1 * * 2 root /usr/bin/certbot renew –post-hook “systemctl reload httpd” <—- 요부분

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Exit mobile version