잠시만 기다려 주세요

     '월급 200 받는 사람이 국회의원 되는 그날까지... 슈퍼기득권 전부 아웃... 국회의원 봉사직 전환을 꿈꾸며... '
전체검색 :  
이번주 로또 및 연금번호 발생!!   |  HOME   |  여기는?   |  바다물때표   |  알림 (16)  |  여러가지 팁 (1059)  |  추천 및 재미 (156)  |  자료실 (22)  |  
시사, 이슈, 칼럼, 평론, 비평 (613)  |  끄적거림 (136)  |  문예 창작 (716)  |  바람 따라 (75)  |  시나리오 (760)  |  드라마 대본 (248)  |  
살인!


    리눅스 서버

리눅스 서버 - centos Let's Encrypt - 무료 SSL 인증서 발급받기, certbot 설치
이 름 : 바다아이   |   조회수 : 9079         짧은 주소 : https://www.bada-ie.com/su/?131591788041
“I’m using (Software) on (System)”을 시스템에 맞게 선택 하면은 설치 방법을 알려줍니다.
저는 위에 적힌 서버 환경대로 Software에서 Nginx를 선택 하고 System에서 CentOS/RHEL 7를 선택하였습니다.

주의

설치하기에 앞서 반듯이 EPEL repository가 활성화 되어 있어야 합니다.
만약 설치 하지 않았다면, sudo yum install epel-release로 설치하면 됩니다.

Certbot을 설치합니다.

$ sudo yum install certbot

인증서를 생성하는 방법은 다음과 같습니다.

$ sudo certbot certonly --standalone -d www.example.com

주의

Certbot이 인증을 하면서 443 포트를 사용합니다. (80 포트를 사용할 수도 있습니다.) 그래서 443 포트를 열어주어야 합니다.

$ sudo firewall-cmd --permanent --add-service=https
$ sudo firewall-cmd --reload

주의

만약 Nginx 또는 다른 어떤 프로그램이 443 포트가 사용중이라면, 다음과 같은 에러를 볼 수 있습니다.

$ sudo certbot certonly --standalone -d www.example.com

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org
Obtaining a new certificate
Performing the following challenges:
tls-sni-01 challenge for www.example.com
-------------------------------------------------------------------------------
Could not bind TCP port 443 because it is already in use by another process on
this system (such as a web server). Please stop the program in question and then
try again.
-------------------------------------------------------------------------------
(R)etry/(C)ancel:

443포트를 비워두고 Retry 또는 다시 명령어를 실행하면 됩니다.

nginx를 사용할 경우 다음과 같이 hook를 이용할 수 있습니다.

$ sudo certbot certonly --standalone -d gz.us.to --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx"


Nginx configuration

Nginx에 위에서 발급받은 SSL 인증서를 설정합니다.

$ sudo vi /etc/nginx/nginx.conf

server {
  listen 443 ssl;
  server_name www.example.com;
  ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
  location / {
    ...
  }
}

설정 정보를 적용합니다.

$ sudo systemctl reload nginx

아무런 메시지 없이 프롬프트로 떨어졌다면, 정상적으로 설정이 적용된 것입니다.

Proxy

API서버를 따로 두었을 경우 proxy를 이용하여 요청정보를 넘길 수 있습니다.

$ sudo vi /etc/nginx/nginx.conf

server {
  ...
  location /api {
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-NginX-Proxy true;
    proxy_pass http://localhost:3000/api;
    proxy_redirect off;
  }
}

이제 /api로 호출되는 모든 요청은 내부서버로 넘어가게 됩니다.

Renewing certificates

Let’s Encrypt로 발급받은 SSL 인증서는 유효기간이 90일 입니다.
그리고 재발급이 가능한 기간은 60일 이후 부터입니다.

먼저 --dry-run 옵션으로 재발급이 가능한지 테스트를 할 수 있습니다.

$ sudo certbot renew --dry-run

...
Congratulations, all renewals succeeded. The following certs have been renewed:
  /etc/letsencrypt/live/www.example.com/fullchain.pem (success)

위와 같이 success가 나온다면 60일 이후 certbot renew 명령으로 재발급을 받을 수 있습니다.

여기서도 문제가 발생할 수 있습니다.
처음에 인증서를 발급하면서 hook을 이용하지 않으셧을 경우 nginx가 켜져 있으면, 
위에서 발생했던 443 포트 문제가 다시 발생하게 됩니다.
그럴 경우 renewal파일에 hook을 추가해줍니다.

$ sudo vi /etc/letsencrypt/renewal/www.example.com.conf

...
# Options used in the renewal process
[renewalparams]
pre_hook = systemctl stop nginx
post_hook = systemctl start nginx
...

다시 명령어를 실행하면 성공으로 떨어지는 것을 확인할 수 있을 것입니다.

Crontab

Linux의 스케줄러인 Crontab에 등록해서 3달에 한번씩 자동 갱신하도록 작업을 추가합니다.

$ sudo crontab -e

0 4 1 */3 * certbot renew

1월, 4월, 7월, 10월 1일 4시 0분에 위 명령어가 실행됩니다.

Conclusion

정보가 중요한 시대인 만큼 보안은 필수입니다.
SSL을 적용함으로 써 속도가 느려지는 부분도 존재하지만, 그 부분은 매우 미미하다고 생각합니다.
옛날에는 SSL인증서 발급이 비싸서 주로 개인서명(Self Signed)를 많이 사용했지만, 
고맙게도 이렇게 무료로 인증서를 발급해주니 꼭 서버에 적용해서 안전한 서비스를 제공하시기 바랍니다.



출처 : https://gongzza.github.io/linux/install/install-letsencrypt-nginx/
| |





      1 page / 5 page
번 호 카테고리 제 목 이름 조회수
148 리눅스 서버 samba ... , ... 바다아이 517
147 리눅스 서버 postfix main.cf ... 바다아이 3584
146 리눅스 서버 /etc/crontab ... 바다아이 2303
145 리눅스 서버 - MEMTEST, , 바다아이 3466
144 리눅스 서버 top , top 바다아이 4294
143 리눅스 서버 , systemd-networkd, archlinux network setting 바다아이 5415
142 리눅스 서버 mirror .. ... 바다아이 5899
141 리눅스 서버 [Ubuntu] (swapfile) , ... 바다아이 5711
140 리눅스 서버 ufw , iptables 바다아이 7011
139 리눅스 서버 ... grub . submenu, grub-mkconfig 바다아이 5798
138 리눅스 서버 CentOS 7 Upgrade Kernel, centos 바다아이 7660
137 리눅스 서버 , dd , 바다아이 5721
136 리눅스 서버 ... ntp .. ... 바다아이 6757
135 리눅스 서버 archlinux netstat , netstat ... 바다아이 6501
134 리눅스 서버 ps , ps option 바다아이 6249
133 리눅스 서버 , swap , ... swap . 바다아이 6461
132 리눅스 서버 crontab , .... 바다아이 6427
131 리눅스 서버 ssh , ssh 바다아이 7494
130 리눅스 서버 SSH SSH , ssh-keygen rsa 바다아이 7078
129 리눅스 서버 , date : () , () , 바다아이 7270
128 리눅스 서버 aws lightsail, ssh .. .pem 바다아이 12286
127 리눅스 서버 , ubuntu generic kernel 바다아이 7645
126 리눅스 서버 .. apt ... 바다아이 7549
125 리눅스 서버 ... ubuntu kernel compile 바다아이 10185
124 리눅스 서버 nginx http2 , . 바다아이 8992
123 리눅스 서버 psql libreadline.so.7: cannot open shared object file: No such file or directory 바다아이 9357
122 리눅스 서버 ssh .bashrc , bash .. .bash_profile 바다아이 8681
121 리눅스 서버 , , 바다아이 7893
120 리눅스 서버 rc.local ... , 바다아이 8644
119 리눅스 서버 ? - IPv4 Subnetting, (Subnet Mask) 바다아이 8357
| |









Copyright ⓒ 2001.12. bada-ie.com. All rights reserved.
이 사이트는 리눅스에서 firefox 기준으로 작성되었습니다. 기타 브라우저에서는 다르게 보일 수 있습니다.
[ Ubuntu + GoLang + PostgreSQL + Mariadb ]
서버위치 : 오라클 클라우드 춘천  실행시간 : 0.0559
to webmaster... gogo sea. gogo sea.