본문 바로가기
클라우드노트/오라클클라우드(OCI)

(6) 오라클 클라우드에서 nginx https 사용을 위한 무료SSL인증서 설정

by 테크한스 2021. 11. 30.

1 (1) 오라클 클라우드 Free Tier 가입 (VM2개,100G 하드, 10TB 트래픽 평생무료)
2 (2) 오라클 클라우드 Free Tier 무료계정에 linux,nginx,mariadb,PHP,wordpress 몽땅 쓸어넣자
3 (3) 오라클 클라우드에서 unbuntu, nginx, php7 설치
4 (4) 오라클 클라우드에서 mariadb, phpmyadmin 설치
5 (5) 오라클 클라우드에서 도메인 설정, 샌드메일 설치
6 (6) 오라클 클라우드에서 nginx, https 사용을 위한 무료 SSL인증서 설정
7 (7) 오라클 클라우드에서 사용하는 워드프레스(wordpress) 설정
8 (8) 오라클 클라우드에서 무료로 사용하는 워드프레스, DB 백업과복구
9 (9) 오라클 클라우드에서 무료로 사용하는 오브젝트스토리지(S3)+아카이브 20G
10 (10) 오라클클라우드에서 무료로 제공하는 블록볼륨을 연결해 보자
11 (11) 오라클클라우드 프리티어 마지막 혜택 - Ampere A1 4CPU 24G
12 (12) 오라클 클라우드에서 무료로 제공하는 오라클 데이터베이스 ATP생성과 연결

 

이제 거의 반이상을 달려왔습니다.

정상에 오르려면 아직 한번의 큰산(?)이 남았습니다. 

설치된 nginx에다가 SSL 인증서를 설정하는 것입니다.

그것도 무료 SSL 인증서 입니다. 

 

가능할까요? 

 

어렵게 어렵게 진행해 보았습니다. 헉헉~

무료 SSL인증서 서비스를 해주는 곳은 Let's Encrypt라는 곳입니다. (저도 처음사용이라 ;;;)

 

(Let's Encrypt SSL 인증서 준비)

SSL 발급을 위해서는 /var/www/letsencrypt 라는 하단 디렉토리를 생성하고 ./well-known/acme-challenge를 만들어야 한다고 합니다.

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

그런후에 nginx 라우팅 설정 파일은 /etc/snippets/ 디렉토리에서 관리하며 그 하위에 letsencrypt.conf 파일을 만들고 해당 ubuntu 계정에 권한 및 파일 수정 권한을 부여하도록 하겠습니다.

sudo touch /etc/nginx/snippets/letsencrypt.conf
sudo chown root:ubuntu /etc/nginx/snippets/letsencrypt.conf
sudo chmod 775 /etc/nginx/snippets/letsencrypt.conf

해당 되는 파일(/etc/nginx/snippets/letsencrypt.conf) 을 열어보도록 하겠습니다.

그곳에 아래 내용을 붙여서 넣어 줍니다.

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

해당 파일을 저장하시면 됩니다.

그다음으로 지금 설정한 letsencrypt.conf 파일을 nginx라우팅 설정에 내용을 붙여주어야 합니다.

 

다시 /etc/nginx/sites-available/default 파일을 수정합니다.

	root /var/www/html;
	index index.php index.html index.htm index.nginx-debian.html;

	server_name XXXX.com;
    
    include /etc/nginx/snippets/letsencrypt.conf;   ### .well-know/acme-challenge 알림

이러면 완료되었고요. 반영을 위해 nginx를 아래와 같이 한번더 재기동합니다.

ubuntu@bluehorse:/etc/nginx/sites-available$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
ubuntu@bluehorse:/etc/nginx/sites-available$sudo service nginx restart

여기까지 Let;s Encrypt SSL 발급을 위한 환경준비였습니다.

이제부터가 진짜입니다. (@,.@)

 

(Let's Encrypt SSL 인증서 발급)

먼저 Let's Encrypt SSL 인증서를 다운받습니다.

wget https://dl.eff.org/certbot-auto -P /home/ubuntu/
chmod a+x certbot-auto
export LC_ALL="C"
/home/ubuntu/certbot-auto certonly --webroot --agree-tos --no-eff-email --email 본인메일주소 -w /var/www/letsencrypt -d 본인도메인 -d 본인도메인(www주소)

그런데 말입니다. 처음부터 wget 시에 해당되는 certbot 을 다운 받을 수가 없었습니다. (막혀있더라구요)

 

몇번을 실행해도 

Certbot cannot be installed.

Certbot cannot be installed.

Certbot cannot be installed.

Certbot cannot be installed.

Requesting to rerun /home/ubuntu/certbot-auto with root privileges...
Skipping bootstrap because certbot-auto is deprecated on this system.
WARNING: couldn't find Python 2.7+ to check for updates.
Your system is not supported by certbot-auto anymore.
Certbot cannot be installed.
Please visit https://certbot.eff.org/ to check for other alternatives.

여기서 좌절되나 싶었습니다. 거의 다 왔는데 ㅠ

 

다시 찾아보고 삽질 시작 ~~~ (언제 끝나나 ㅠ)

결국 snap 이라는 것으로 설치하라는 거였습니다. (막히긴 했지만 막힌게 아니었어요 ㅠ)

$ sudo snap install core; sudo snap refresh core
$ sudo apt-get remove certbot
$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
$ sudo certbot certonly --webroot --agree-tos --no-eff-email --email 이메일주소 -w /var/www/letsencrypt -d 도메인명 -d 도메인명(www포함)

이렇게 말입니다.

 

여기가 삽질의 백미(?) 였던 거 같습니다. 저렇게 실행하니

 

정상적으로 해당 파일을 저장 절차를 수행하더라구요

 

중간에도 After this operation, 194 MB of additional disk space will be used.
Do you want to continue? [Y/n]  y

 

나오면 계속 진행합니다.

Requesting to rerun /home/ubuntu/certbot-auto with root privileges...
Bootstrapping dependencies for Debian-based OSes... (you can skip this with --no-bootstrap)
Hit:1 http://ap-seoul-1-ad-1.clouds.archive.ubuntu.com/ubuntu bionic InRelease
Get:2 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]
Hit:3 http://ppa.launchpad.net/ondrej/php/ubuntu bionic InRelease
Get:4 http://ap-seoul-1-ad-1.clouds.archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]
Get:5 http://ap-seoul-1-ad-1.clouds.archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]
Fetched 252 kB in 2s (125 kB/s)
Reading package lists... Done
Reading package lists... Done

(중간생략)

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/itreport.tk/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/itreport.tk/privkey.pem
   Your cert will expire on 2020-08-31. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again. To non-interactively renew *all* of your certificates, run
   "certbot-auto renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

이제 SSL 사용을 위한 HTTPS 인증서 파일 및 개인암호키가 저장되었다고 나오며 인증서 만료일도 확인됩니다. (야호)

제대로 저장되었는지만 물리적인 pem 파일을 확인하겠습니다.

ubuntu@bluehorse:/etc/letsencrypt$ sudo ls -al /etc/letsencrypt/live/XXXX.com
total 12
drwxr-xr-x 2 root root 4096 Nov 29 12:47 .
drwx------ 3 root root 4096 Nov 29 12:47 ..
-rw-r--r-- 1 root root  692 Nov 29 12:47 README
lrwxrwxrwx 1 root root   35 Nov 29 12:47 cert.pem -> ../../archive/XXXX.com/cert1.pem
lrwxrwxrwx 1 root root   36 Nov 29 12:47 chain.pem -> ../../archive/XXXX.com/chain1.pem
lrwxrwxrwx 1 root root   40 Nov 29 12:47 fullchain.pem -> ../../archive/XXXX.com/fullchain1.pem
lrwxrwxrwx 1 root root   38 Nov 29 12:47 privkey.pem -> ../../archive/XXXX.com/privkey1.pem
ubuntu@bluehorse:/etc/letsencrypt$

야호~

 

인증서 만료일시를 확인하는 방법이라고 하는데 저는 안먹히네요 그러나 상관없습니다. 하하

아마도 certbot-auto로 설치한 것이 아니라 snap으로 설치해서 방식이 좀 다르지 않나 생각이 듭니다.

ubuntu@bluehorse:/usr/bin$ /home/ubuntu/certbot-auto certificates
Requesting to rerun /home/ubuntu/certbot-auto with root privileges...
Skipping bootstrap because certbot-auto is deprecated on this system.
WARNING: couldn't find Python 2.7+ to check for updates.
Your system is not supported by certbot-auto anymore.
Certbot cannot be installed.
Please visit https://certbot.eff.org/ to check for other alternatives.

여기 부분이 상당한 삽질이 들어간 부분입니다.

아직도 아찔하네요 그나마 빨리 해결된 편입니다. ㅠ

 

제가 snap으로 설치한 certbot의 버전은 아래와 같습니다.

ubuntu@bluehorse:~$ /usr/bin/certbot --version
certbot 1.21.0
ubuntu@bluehorse:~$

 

(update) 현재 시점에서 certbot 자동설치 버전이 2.X로 올라왔기에

ubuntu@instance:~$ /usr/bin/certbot --version
certbot 2.2.0
ubuntu@instance:~$

만약 설치된 certbot 이 2.X 이상이라면

 

아래서 설정으로 최종으로 브라우져에서 보면

이 메시지로 에러가 발생합니다.

 

ERR_SSL_VERSION_OR_CIPHER_MISMATCH

 

이것을 방지하기 위해 한가지 추가해 주어야 합니다. (바로 tls 버전)

ubuntu@instance:/etc/nginx/snippets# ls -rlat
total 24
-rw-r--r-- 1 root root    217 Apr  6  2018 snakeoil.conf
-rw-r--r-- 1 root root    422 Apr  6  2018 fastcgi-php.conf
-rwxrwxr-x 1 root ubuntu  107 Jan 27 20:40 letsencrypt.conf
drwxr-xr-x 8 root root   4096 Jan 27 20:50 ..
-rw-r--r-- 1 root root    594 Jan 27 21:35 ssl.conf
drwxr-xr-x 2 root root   4096 Jan 27 21:35 .

ssl.conf를 열고 아래와 같이 수정해 줍니다.

 

(기존)

ssl_protocols TLSv1 TLSv1.1 TLSv1.2
(아래와 같이 추가)
TLSv1.3 추가해 주어야 브라우져에서 에러가 발생하지 않습니다.  (중요!)

ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;

(Let's Encrypt SSL 인증서 갱신)

 

이부분은 아주 급한 부분은 아니지만 설정이라는 것이 안하고 놔두면 한참 까먹거던요

미리 설정을 고려해서 세트해보았습니다.

 

우선 루트 계정으로 변경 후 crontab에 해당되는 작업을 배치잡으로 등록하겠습니다.

sudo su
crontab -e
no crontab for root - using an empty one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/nano        <---- easiest
  2. /usr/bin/vim.basic
  3. /usr/bin/vim.tiny
  4. /bin/ed

Choose 1-4 [1]: 1

crontab 사용법은 간단하게

분(0~59) 시간(0~23) 일(1~31) 월(1~12) 요일(0~6 : 0은 일요일, 6은 토요일) 실행명령

이렇게 구성됩니다.

 

첫번째는 예를 들어 매일 새벽 2시에 certbot을 실행하여 갱신을 성공적으로 끝내면 그후에 nginx서버를 재시동

(--renew-hook 은 인증서갱신후, --pre-hook 인증서갱신전의 뜻임)

두번째는 매주 월요일 새벽 4시에 서버를 리부팅 

0 2 * * * /home/ubuntu/certbot-auto renew --renew-hook "sudo service nginx restart"
0 4 * * 1 root shutdown now -r

그러나 이부분은 현재는 /home/ubuntu/certbot-auto는 정상적으로 설치가 되지 않고, snap형태로 설치를 하여

ubuntu@bluehorse:~$ /home/ubuntu/certbot-auto
Requesting to rerun /home/ubuntu/certbot-auto with root privileges...
Skipping bootstrap because certbot-auto is deprecated on this system.
WARNING: couldn't find Python 2.7+ to check for updates.
Your system is not supported by certbot-auto anymore.
Certbot cannot be installed.
Please visit https://certbot.eff.org/ to check for other alternatives.
ubuntu@bluehorse:~$

명령어가 먹질 않고 있어서 추후에 인증서 갱신부분은 천천히 다시 봐야 할 거 같습니다.


 

그다음은 SSL 인증서를 감사하게 받았기 때문에 

웹서버 nginx에 적용해 보는 것입니다.

 

인증서를 적용하기 위해서 openssl을 이용하여 dhparam을 암호화합니다.

sudo openssl dhparam -out /etc/nginx/dhparam.pem 4096

 

수행시간이 거의 20분 넘는 거 같습니다.  (다른 용무를 보셔도 될 정도입니다.)

 

Generating DH parameters, 4096 bit long safe prime, generator 2
This is going to take a long time
..............................+...................................................
............................+.....................................................
..................................................................................
....+..+............................+.............................................
..................................................................................
..................................................................................
.........................+........................................................
...........................................................+......................

설치가 진행되는 동안 snap으로 설치한 것에 대해 내용을 정리해보았습니다.


(snap설치에 대한 참고사항)

여기서 한가지 snap에 대해 참고해야 할 부분이 있어서 참고사항을 기술합니다.

 

신규서버를 세팅하고 SSL추가 할때 아래와 같은 certbot-auto가 작동하지 않습니다.

Skipping bootstrap because certbot-auto is deprecated on this system.
Your system is not supported by certbot-auto anymore.
Certbot cannot be installed.
Please visit https://certbot.eff.org/ to check for other alternatives.

certbot-auto는 실행할 때 마다 자동 업데이트를 하는데 1.11버전이 되는 경우 발생하는 메시지입니다.

해결을 위해 링크를 리서치해보면 snap을 이용해 설치하라고 합니다.

snap은 yum이나 apt-get 같은 패키지 관리툴입니다.

 

centos 7이나 8이 epel-release가 설치되어 있다면 yum으로 snap을 설치할 수 있습니다.

yum install snapd
ln -s /var/lib/snapd/snap /snap
 
systemctl enable --now snapd.socket

snap install core
snap refresh core

이후 snap을 이용해서 certbot을 설치합니다.

여기서 기존의 yum이나 apt-get으로 설치된 certbot은 삭제하고 진행해야 함

 

snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot
 
certbot --version
certbot 1.14.0
 
### 버전이 확인 되지 않는 경우 아래와 같이 심볼릭 링크를 추가 해야 한다.
ln -s /usr/bin/snap /var/lib/snapd/snap/bin/certbot

/usr/bin 안으로 해당 certbot 링크를 생성하기 때문에 SSL 발급/삭제를 위해서는 아래 명령어를 실행

certbot certonly --server https://acme-v02.api.letsencrypt.org/directory \
--rsa-key-size 4096 --agree-tos --email 이메일@주소 --webroot -w /var/www/html \
-d www.도메인 -d 도메인
 
certbot revoke --cert-path /etc/letsencrypt/live/도메인/cert.pem

위의 스크립트에서 에러가 나면 아래 스크립트로 대체하세요

sudo certbot certonly --webroot --agree-tos --no-eff-email --email 이메일주소 -w /var/www/letsencrypt -d 도메인주소 -d www.도메인주소

 

snapd에서 sequence기능으로 설치되는 패키지를 자동으로 최신업데이트를 하는데

발급된 인증서의 renew 역시 자동으로 처리 (/var/lib/snapd/sequence/certbot.json)

 

- 기존에 git에서 clone 으로 사용한 경우 삭제 필요는 없고 renew인 경우 메세지 나오지만 갱신하는데 문제 없다?

- snap설치가 되지 않는 리눅스의 경우는 certbot-auto 구버전(1.9.0.dev0)의 실행파일만 overwrite하고 renew실행

 

acme api를 이용하는 bash, dash, sh 비공식 호환 스크립트를 참고하세요

https://github.com/acmesh-official/acme.sh

 

(snap설치에 대한 참고사항 끝)

 


(추가 - SSL 인증서 발급에 대한 참고사항)

 

해당 내용에 대해서 한가지만 기록으로 남깁니다. 

SSL 인증서 발급에 실행된 삽질 중에 아래에 히스토리는

 

(실패)

/home/ubuntu/certbot-auto certonly --webroot --agree-tos --no-eff-email --email 이메일주소 -w /var/www/letsencrypt -d 도메인명 -d 도메인명(www포함)

 

(성공)

$ sudo certbot certonly --webroot --agree-tos --no-eff-email --email 이메일주소 -w /var/www/letsencrypt -d 도메인명 -d 도메인명(www포함)

 

* 인증서 갱신이 필요한데 안될 경우 이 스크립트로 성공할 수 있습니다. (아래 스크립트 카피해서 넣으세요)

sudo certbot certonly --webroot --agree-tos --no-eff-email --email 이메일주소 -w /var/www/letsencrypt -d 도메인주소 -d www.도메인주소

 

 

(참조)

certbot certonly --server https://acme-v02.api.letsencrypt.org/directory --rsa-key-size 4096 --agree-tos --email 이메일@주소 --webroot -w /var/www/html -d www.도메인 -d 도메인

 


헉헉~ 힘드네요

아마도 SSL 인증 만료 시점에 다시 이글을 보러 제가 찾아오지 않을까 생각이 드네요 ;;

 

다시 이어서 계속해서 진행하겠습니다.

 

Generating DH parameters, 4096 bit long safe prime, generator 2
This is going to take a long time
..............................+...................................................
............................+.....................................................
..................................................................................
....+..+............................+.............................................
..................................................................................
..................................................................................
.........................+........................................................
...........................................................+......................

 

이렇게 진행바(?)가 진행되면서 마지막으로는

........+.........................................................................
..........................................................+.......................
................................................................+...+.............
................+.....................+...........................................
........................................................++*++*++*


++*++*++* <= 이게 보이면 끝입니다.

이게 모라고 ㅠ

 

자~ dhparam.pem이 이와같이 생성되었다면 이제는 ssl.conf를 생성해야 합니다.

sudo touch /etc/nginx/snippets/ssl.conf
sudo chmod 777 /etc/nginx/snippets/ssl.conf

ssl.conf에 보안설정 스크립트를 입력하기 위한 절차입니다.

/etc/nginx/snippets/ 로 가서 ssl.conf를 nano로 열어보겠습니다.

sudo nano /etc/nginx/snippets/ssl.conf

그곳에 아래의 내용을 카피하고 붙여 넣습니다.

ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_dhparam /etc/nginx/dhparam.pem;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
ssl_ecdh_curve secp384r1;
ssl_prefer_server_ciphers on;
ssl_stapling on;
ssl_stapling_verify on;

resolver 8.8.8.8 8.8.4.4;
add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload";
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options "SAMEORIGIN";

이렇게 되면 ssl.conf가 완성이 되었습니다.

이제 아무도 접근하지 못하게 권한 설정을 막겠습니다.

sudo chmod 644 /etc/nginx/snippets/ssl.conf

이제 마지막으로 nginx 에 라우팅을 적용하도록 하겠습니다.

 

HTTPS가 적용된 도메인으로 웹서버를 운영하기 위해서 /etc/nginx/sites-available/default 파일을 수정합니다.

SFTP등을 이용해서 많은 스크립트 내용을 overwrite해야겠습니다.

제가 추천한 SSH 프로그램 (MobaXterm) 이나 파일질라 도 좋고요 

 

인증서 작업은 오타가 나오면 안됩니다. 꼬입니다. 삽질이 끝이 안납니다

안전하게 카피 앤 페이스트 (copy & paste) 추천합니다. (복사붙여넣기 = 복붙 하시라고요)

 

/etc/nginx/sites-available/default 에 기존내용 대신에 아래내용을 엎어씁니다. 몽땅 다~~~ (헐~)

도메인 부분만 본의 도메인으로 바꾸어 주세요 (하기에 XXXX.com 라는 도메인으로 표기)

# Default HTTPS server configuration
server {
    listen 443 ssl http2 default_server;
    listen [::]:443 ssl http2 default_server;
    server_name XXXX.com;

    ssl_certificate /etc/letsencrypt/live/XXXX.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/XXXX.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/XXXX.com/fullchain.pem;
    include /etc/nginx/snippets/ssl.conf;

    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;

    location / {
        try_files $uri $uri/ =404;
        if (!-e $request_filename) { 
         rewrite ^.*$ /index.php last; 
       }
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
       fastcgi_read_timeout 300;
    }

    location ~ /\.ht {
        deny all;
   }
}

# HTTPS www. server configuration
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name www.XXXX.com;

    ssl_certificate /etc/letsencrypt/live/XXXX.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/XXXX.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/XXXX.com/fullchain.pem;
    include /etc/nginx/snippets/ssl.conf;

    location / {
        return 301 https://XXXX.com$request_uri;
    }
}


# Default server configuration
server {
    listen 80;
    listen [::]:80 default_server;
    server_name XXXX.com;

    include /etc/nginx/snippets/letsencrypt.conf;

    location / {
        return 301 https://XXXX.com$request_uri;
    }
}

# HTTP - CNAME Connect www.XXXX.com to XXXX.com
server {
    listen 80;
    listen [::]:80;
    server_name www.XXXX.com;

    include /etc/nginx/snippets/letsencrypt.conf;

    location / {
        return 301 https://www.XXXX.com$request_uri;
    }
}

 

정말 마지막으로 설정으로 적용하기 위해서

다시 한번 nginx를 restart 합니다. (서버 리부트 아닙니다 ㅎ)

sudo nginx -t 는 왜 실행하는지 아시죠? (수정한 conf 파일등이 오타등의 정합성을 확인)

ubuntu@bluehorse:/etc/nginx/sites-available$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
ubuntu@bluehorse:/etc/nginx/sites-available$sudo service nginx restart

이제 해당되는 도메인 주소로 브라우져를 여시면 아까와는 조금 다른 그 자물쇄가 보일 것입니다.

 

자물쇄를 찍어보세요

드디어 흑~ ㅠ  끝났다


(추가사항) 인증서 갱신 작업에 필요한 상세 내용

 

letsencrypt 인증서는 3개월마다 갱신을 시켜주어야 합니다. 현재는 3개월 후에 해당 도메인 페이지에 

NET::ERR_CERT_DATE_INVALID

다음과 같은 에러가 발생을 하였고 해당 페이지에 접속을 할수가 없는 상태입니다. 

한마디로 인증서 만료라는 이야기 이지요

 

아래와 같이 인증서 갱신서 작업을 해주어야 합니다.

 

1) 기존 인증서 삭제 ( 이 삭제 단계를 넘어가서 2번으로 renew 과정으로 가도 됩니다. 굳이 삭제 안해도 됨)

sudo certbot revoke --cert-path /etc/letsencrypt/live/도메인/cert.pem

 

2) 새로운 인증서 생성 (renew)

sudo certbot certonly --webroot --agree-tos --no-eff-email --email 이메일주소 -w /var/www/letsencrypt -d 도메인주소 -d www.도메인주소

renew 과정인 경우 명령어 실행후 아래 경과를 볼 수 있습니다.  (renew인 경우는 2번 선택)

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
An RSA certificate named jivepia.com already exists. Do you want to update its
key type to ECDSA?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(U)pdate key type/(K)eep existing key type:

암호화 키타입을 보통 RSA를 사용하도록 되어 있는데 

추가로 간혹 위의 문구가 나오면

(U)pdate Key를 선택하면 RSA->ECDSA로 변경되고

(K)eep 을 선택하면 기존의 RSA를 계속 사용하는 것이다.

어떤 암호 키타입을 선택할지는 추가로 인터넷에서 찾아보길 추천한다. (그러나 2개중 대충 아무거나)

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Certificate not yet due for renewal

You have an existing certificate that has exactly the same domains or certificate name you requested and isn't close to expiry.
(ref: /etc/letsencrypt/renewal/jivepia.com.conf)

What would you like to do?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Keep the existing certificate for now
2: Renew & replace the certificate (may be subject to CA rate limits)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Renewing an existing certificate for 도메인주소이름 and www.도메인주소이름

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/도메인주소이름/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/도메인주소이름/privkey.pem
This certificate expires on 2022-08-20.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 

3) nginx 재기동

sudo service nginx restart

 

 

이렇게 하면 다시 해당 도메인 페이지가 짠~ 하고 다시 보일것입니다.  (그러나 유효기간은 다시 3개월입니다.)

 

 


 

(참고) 무료클라우드에 대한 벤더별 비교 영상은 아래를 확인해 보세요

 

 

 

 

1 (1) 오라클 클라우드 Free Tier 가입 (VM2개,100G 하드, 10TB 트래픽 평생무료)
2 (2) 오라클 클라우드 Free Tier 무료계정에 linux,nginx,mariadb,PHP,wordpress 몽땅 쓸어넣자
3 (3) 오라클 클라우드에서 unbuntu, nginx, php7 설치
4 (4) 오라클 클라우드에서 mariadb, phpmyadmin 설치
5 (5) 오라클 클라우드에서 도메인 설정, 샌드메일 설치
6 (6) 오라클 클라우드에서 nginx, https 사용을 위한 무료 SSL인증서 설정
7 (7) 오라클 클라우드에서 사용하는 워드프레스(wordpress) 설정
8 (8) 오라클 클라우드에서 무료로 사용하는 워드프레스, DB 백업과복구
9 (9) 오라클 클라우드에서 무료로 사용하는 오브젝트스토리지(S3)+아카이브 20G
10 (10) 오라클클라우드에서 무료로 제공하는 블록볼륨을 연결해 보자
11 (11) 오라클클라우드 프리티어 마지막 혜택 - Ampere A1 4CPU 24G
12 (12) 오라클 클라우드에서 무료로 제공하는 오라클 데이터베이스 ATP생성과 연결

 

댓글