Ubuntu18.04 nginx에 SSL인증서 등록하기.(Let's encrypt)

Let's Encrypt

네트워크 구상도에서 프록시 서버로 쓸 서버에 SSL 인증서를 등록해주고자 한다.

간단하게 등록하는 방법만적겠다.

먼저 apt 의 repo에 설치를 위한 certbot을 업데이트 한다.

add-apt-repository ppa:certbot/certbot

[ENTER] 눌러서 진행하자.

등록후에는 apt-get update 명령어로 업데이트를 하자. 그리고 바로 설치.

apt-get install certbot

Let’s encrypt에는 두가지 방식으로 설치가 되는데 standalone 과 webroot 방식이다.

standalone 방식의 경우 nginx 서버를 꺼서 인증을 받고 켜야하는 번거로움이 있으므로 한번만 귀찮은 webroot 방식으로 진행하려고한다.

webroot에 인증서를 만들어달라고 요청을하면 내 nginx 서버로 질의를 보내는데 거기서 location분기문을 통해 webroot.conf로 갈수있도록 해주면 된다. (-p옵션을 통해 한번에 폴더를 만들수있)

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

그리고 nginx에 웹루트의 경로를 알려줄 location을 추가시켜준다

vi /etc/nginx/sites-available/default

도메인 밑에 아래와 같은 location문구를 삽입해주자.
작성후에 nginx -t 로 테스트후 service nginx restart로 재시작하자.

certbot certonly –webroot -w /var/www/webroot –email test@test.com –d 도메인

Agree, Yes(No) 를 누르면 Congratulations!가 나온다.

인증서가 제대로 발급됐는지 확인하려면 파일을 확인해야 하는데 다음과같이 확인하도록 한다.

ls /etc/letsencrypt/live/도메인이름 을 치면

와 같이 나오면 성공한거다.

인증서 생성후에 openssl을 통해서 dhparam.pem 인증서를 만들어줘야하는데 나는 암호화 강도가 높은 4096bit로 암호화 했다. (꽤 오래걸린다)

openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096

생성후에는 권한변경 chmod 600 /etc/ssl/certs/dhparam.pem

이제 vi /etc/nginx/site-available/default 설정값에 집어넣자

server {
    listen 443 ssl http2;
    listen [::]:443 http2;
    server_name dalso.iptime.org;
    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;
    ssl on;
    ssl_certificate /etc/letsencrypt/live/dalso.iptime.org/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/dalso.iptime.org/privkey.pem;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout 1440m;
    ssl_buffer_size 8k;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'kEECDH+ECDSA+AES128 kEECDH+ECDSA+AES256 kEECDH+AES128 kEECDH+AES256 kEDH+AES128 kEDH+AES256 DES-CBC3-SHA +SHA !aNULL !eNULL !LOW !kECDH !DSS !MD5 !EXP !PSK !SRP !CAMELLIA !SEED';
    ssl_prefer_server_ciphers on;
    ssl_trusted_certificate /etc/letsencrypt/live/dalso.iptime.org/chain.pem;
    ssl_stapling on;
    ssl_stapling_verify on;
}

Let’s encrypt 인증서의 경우 90일마다 다시 재인증을 받아줘야하는데 crontab을 이용해서 넣도록하겠다.

vi /etc/crontab 에서 직접 수정해줬다.
2달마다 1일 새벽 5시 0분에 인증서를 리뉴시켜준다.

이렇게하면 완성!

추가적으로 위의 방법이 안되고 _acme-challenge에 TXT 레코드를 등록하라고 할경우. 서비스 도메인으로 들어가서 TXT 레코드에

sudo certbot certonly –manual -d *.dalso.org -d dalso.org -m dalso@gmail.com –agree-tos –manual-public-ip-logging-ok –preferred-challenges dns-01 –server https://acme-v02.api.letsencrypt.org/directory

명령어를 쳐서 나오는 “hARgQNvBy1ZIPJsFBM3X8C1dKeAeTFGkyIK9wroJakw” 을넣어주고 시간이 조금 지난뒤에 엔터버튼을 눌러서 진행해주면 완료된다.

 

————————————————–

사이트 리뉴얼중입니다~

서버(Linux, ESXi), NAS(헤놀로지, ESXi 및 IT관련 정보, 기타 등등을 공유하는 커뮤니티 SVRFORUM을 새로 만들었습니다.
많은 가입(?) 부탁드립니다~
https://svrforum.com

이전글들은 모두 상단 메뉴의 Blog 글 모음에있습니다!

답글 남기기

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

홈서버 IT 커뮤니티 SVRFORUM
Link