메뉴 여닫기
개인 메뉴 토글
로그인하지 않음
만약 지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

Ubuntu apache ssl letsencrypt 인증 설정 방법: 두 판 사이의 차이

데브카페
편집 요약 없음
42번째 줄: 42번째 줄:
사이트 디렉토리 내에 인증서 유효성을 확인할 수 있는 파일을 업로드하여 인증서를 발급하는 방법으로 서버 내에 .well-known이 있는 곳을 지정해 준다.
사이트 디렉토리 내에 인증서 유효성을 확인할 수 있는 파일을 업로드하여 인증서를 발급하는 방법으로 서버 내에 .well-known이 있는 곳을 지정해 준다.
(여기에서 설명하는 인증서 발급, 적용 환경은 Ubuntu, NginX 기준 )
(여기에서 설명하는 인증서 발급, 적용 환경은 Ubuntu, NginX 기준 )
 
<pre>
1) 특정 폴더를 만든다.
1) 특정 폴더를 만든다.
2) 이 특정 폴더에서 letsencrypt.conf 파일을 만든다.
2) 이 특정 폴더에서 letsencrypt.conf 파일을 만든다.
3) 이를 Nginx 설정 파일에서 이 파일을 읽어오도록 한다.
3) 이를 Nginx 설정 파일에서 이 파일을 읽어오도록 한다.
 
</pre>
먼저 특정 폴더를 만들어 준다.
먼저 특정 폴더를 만들어 준다.
# mkdir -p /var/www/letsencrypt/.well-known/acme-challenge
# mkdir -p /var/www/letsencrypt/.well-known/acme-challenge
65번째 줄: 65번째 줄:
* webroot-path는 웹서버 루트가 아닌 .well-known 폴더가 있는 곳이다.
* webroot-path는 웹서버 루트가 아닌 .well-known 폴더가 있는 곳이다.
# certbot certonly --webroot --webroot-path=/var/www/letsencrypt  -d [도메인]
# certbot certonly --webroot --webroot-path=/var/www/letsencrypt  -d [도메인]
 
=== webserver 를 통한 인증서 발급 ===
=== webserver 를 통한 인증서 발급 ===
   
   

2024년 11월 4일 (월) 01:35 판

https ssl 무료 인증 Let’s Encrypt SSL 무료 인증서 발급 방법

Let’s Encrypt 는 보안 웹사이트를 위한 전송 계층 보안 암호화(SSL, TLS) 를 위해 무료로 인증서를 제공해주는 인증 기관이다. 인증서 발급 시 유효기간 (90일)이 존재한다.(갱신을 주기적으로 해줘야함)

인증서 발급 사전 준비

먼저 인증서 발급 전 다음 조건이 필요하다. - 인증서 설치 서버 (root 권한 필요) - 공개 도메인 (Public Domain)

Let’s Encrypt SSL 인증서 발급은 Certbot을 이용하며, 인증서 설치를 위한 Certbot tool 을 먼저 설치해준다.

  • Certbot은 우분투 20.04에서 letsencrypt을 설치했다면 그 안에 포함되어 있기 때문에 별도 Certbot을 설치할 필요는 없음
  1. sudo apt update
  2. sudo apt-get install letsencrypt -y

웹서버에 맞는 Certbot을 추가 설치해준다. Certbot은 파이썬 2.7 또는 3.6버젼 이상을 지원하고 있어 python2 혹은 python3를 설치해주면 된다.

  • 권고사항은 python3

ubuntu에서 certbot 및 웹서버 플러그인 설치:

  1. sudo apt update
  2. sudo apt upgrade -y
  3. sudo apt install certbot python3-certbot-nginx (nginx webserver)
  4. sudo apt install certbot python3-certbot-apache (apache webserver)

centos에서 certbot 및 웹서버 플러그인 설치: 먼저 아래 명령어를 통해 리눅스 추가 패키지 저장소 EPEL Repo 활성을 시켜주어야 한다.

  1. yum install epel-release
  2. yum install certbot -y
  3. yum install python3-certbot-apache (apache webserver)
  4. yum install python3-certbot-nginx (nginx webserver)

인증서 발급을 위한 패키지 설치가 완료되었다면 인증서 발급을 진행하면 된다. certbot 을 이용한 인증서 발급 방법은 아래와 같이 크게 4가지 방법이 존재한다.

  1. webroot 를 이용한 인증서 발급
  2. webserver 를 통한 인증서 발급
  3. standalone 옵션을 이용한 인증서 발급
  4. dns 를 이용한 인증서 발급

webroot으로 SSL 인증서 발급

사이트 디렉토리 내에 인증서 유효성을 확인할 수 있는 파일을 업로드하여 인증서를 발급하는 방법으로 서버 내에 .well-known이 있는 곳을 지정해 준다. (여기에서 설명하는 인증서 발급, 적용 환경은 Ubuntu, NginX 기준 )

1) 특정 폴더를 만든다.
2) 이 특정 폴더에서 letsencrypt.conf 파일을 만든다.
3) 이를 Nginx 설정 파일에서 이 파일을 읽어오도록 한다.

먼저 특정 폴더를 만들어 준다.

  1. mkdir -p /var/www/letsencrypt/.well-known/acme-challenge

다음 webroot 경로를 알려주는 letsencrypt.conf 파일을 만든 후 편집기를 이용해서 새로 만들 파일을 열어준 후 아래 내용을 추가해 준다.

  • 이 파일은 일반적으로 /etc/nginx/snippets/ 위치에 만듦.
  1. nano /etc/nginx/snippets/letsencrypt.conf

>> location ^~ /.well-known/acme-challenge/ { default_type "text/plain"; root /var/www/letsencrypt; }

설정이 끝났다면 웹서버를 다시 시작해 주도록 한다.

  1. sudo service nginx restart

SSL 인증서 발급

  • webroot-path는 웹서버 루트가 아닌 .well-known 폴더가 있는 곳이다.
  1. certbot certonly --webroot --webroot-path=/var/www/letsencrypt -d [도메인]

webserver 를 통한 인증서 발급

Apache나 Nginx와 같은 웹서버 옵션을 이용해서 Let’s Encrypt SSL 인증서 발급받을 수도 있다. (여기에서 설명하는 인증서 발급, 적용 환경은 CentOS 7, Apache 기준 )

웹서버를 통한 SSL 인증서 발급은 standalone 방식과 달리 발급 받을 시 사이트 서비스를 중단하지 않아도 되며, 웹서버가 알아서 적절한 SSL 옵션을 제안해 적용해 준다.

웹서버를 이용하는 SSL 인증 방식 선택 시 Apache, Nginx 설정에서 도메인이 제대로 설정되어 있어야 하기 때문에 먼저, Apache, Nginx 설정에서 도메인이 제대로 설정되어 있는지 확인해야 한다.

  • 방화벽, iptables 등과 같은 접근 제어가 설정되어 있다면 서비스 및 포트 허용을 추가적으로 진행

아래 경로에서 servername이 등록되어 있는지 확인해준다.

  1. cat /etc/httpd/conf/httpd.conf

아래 명령어를 이용하여 인증서 발급을 시작한다. 명령어 수행 시 certbot 은 Apache 설정파일을 참조하여 등록된 모든 호스트에 대해 인증서 발급을 수행한다.

  • CentOS의 경우 /etc/httpd/conf/httpd.conf
  1. certbot --apache --email admin@[email_address] --agree-tos

호스트 설정을 하지 않았다면 아래 명령어로도 인증서 발급이 가능하다.

  1. certbot --apache certonly -d [도메인]

크론탭을 통해 자동 갱신이 설정되도록 설정할 수도 있다.

  1. sudo certbot renew --dry-run


standalone 옵션을 이용한 인증서 발급

standalone 옵션 적용 방식은 간편하고 빠르고 안정적이지만, 서비스를 중단해야하는 단점이 있다.

먼저 웹서버를 중단시킨다.

  1. systemctl stop httpd

certbot 명령을 이용해 SSL 인증을 시작해준다.

  1. certbot certonly --standalone -d [도메인]

인증이 완료되면 웹서버를 다시 가동시켜준다.

  1. systemctl restart httpd


DNS 를 이용한 인증서 발급

와일드 카드 방식으로 인증서 발급이 가능하며, 도메인이 연결된 DNS의 TXT레코드를 이용해 인증받는 방식이다. 때문에 서버 관리자가 도메인 DNS를 관리/수정할 수 있어야 한다.

  • 인증서 갱신 시마다 DNS에서 TXT값을 변경해야 함

인증서 발급 발급 시작:

  1. certbot certonly --manual -d *.[도메인] -d [도메인] --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory
(*.domain.com과 같이 와일드카드문자 *을 이용하면 어떠한 주소가 앞에 오더라도 똑같이 HTTPS를 적용할 수 있다.)

옵션: --manual : 수동으로 과정을 진행한다. -d : 등록할 도메인을 지정한다. 기존에 사용하던 도메인이름과 와일드카드 도메인 2개를 입력한다. --preferred-challenges : DNS를 이용한 인증서 발급방식을 사용하기 위한 옵션이다. dns-01 : DNS를 용한 preferred-challenges를 사용시 이 옵션을 사용해야 한다. --server : Let's Encrypt의 ACME(자동화된 인증서 관리 환경) 서버 주소 입력

위 명령을 수행하면 DNS서버에 _acme-challenge.domain.com 이름의 TXT레코드를 추가하라고 나오게 되는데 사용중인 도메인 서버에 TXT레코드에 아래 제시된 value를 추가한다.

  • 레코드 등록 이전에 엔터를 누르면 안됨
  • 여기서는 NCP의 Global DNS를 이용하여 TXT레코드를 등록하였다.


dig 또는 nslookup 등으로 TXT레코드가 설정되었는지 확인 후 진행하도록 한다.

  • ANSWER SECTION에 TXT레코드가 정상적으로 출력되는 것을 볼 수 있다.

레코드 등록 후 엔터를 눌러 발급을 진행해 주면 아래 경로에 인증서가 발급된 것을 확인할 수 있다.

  1. cd /etc/letsencrypt/archive

Comments