Codit Develop
Codit Develop
Codit Develop
전체 방문자
오늘
어제
  • 분류 전체보기 (146)
    • IT (1)
      • 스마트폰 (1)
    • Game (59)
      • DNF (0)
      • StarCraft2 (11)
      • LostArk (45)
      • Minecraft (3)
      • Elyon (0)
    • Develop (43)
      • Web (15)
      • PHP (2)
      • Laravel (0)
      • C# (11)
      • NodeJS (1)
      • Java (2)
      • Python (1)
      • Cordova (3)
      • Android (0)
      • WPF (1)
      • PowerShell (5)
      • Other (2)
      • Javascript (0)
    • OS (17)
      • Windows (6)
      • Linux (11)
    • Product (17)
      • Docker (10)
      • GitLab (3)
      • NuGet (2)
      • Git (1)
      • Nginx (1)
    • DB (7)
      • All-DB (2)
      • MariaDB (2)
      • MySQL (2)
      • Oracle (0)
      • MSSQL (1)
      • Cubrid (0)
    • PC (2)
      • 견적함 (2)
      • 정보 (0)

블로그 메뉴

    공지사항

    인기 글

    태그

    • 몬스터
    • jQuery
    • JavaScript
    • 모험의
    • c#
    • 유디아
    • 뷰포인트
    • docker
    • html
    • 개복디
    • 서
    • MySQL
    • 디펜스
    • 로스트아크
    • css
    • 모험의서
    • 구릉지
    • 히든
    • 개인복권디펜스
    • 모험의 서
    • 오즈혼
    • db
    • web
    • 조합
    • 아르테미스
    • 스타2
    • Linux
    • 숨겨진
    • 모코코
    • 씨앗

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    Codit Develop
    OS/Linux

    [Linux] NGINX HTTPS 인증서 설정 및 자동갱신 (SSL, CertBot)

    [Linux] NGINX HTTPS 인증서 설정 및 자동갱신 (SSL, CertBot)
    OS/Linux

    [Linux] NGINX HTTPS 인증서 설정 및 자동갱신 (SSL, CertBot)

    2021. 1. 12. 10:50
    반응형

    CertBot

    Let's Encrypt 무료 인증서 자동 발급 프로그램.

    실행 조건

    • Domain이 정상적으로 생성되어 있으며, 해당 도메인을 소유하고 있어야 함.
    • Linux 동작. (Windows에서는 테스트 X)

    유의사항

    아래의 자료는 CentOS 8 기준으로 작성됨. (CentOS 7 이상은 원활하게 작동될 것으로 예상)

    CertBot 설치

    # Extra Packages for Enterprise Linux 설치
    yum install epel-release 
    
    # CertBot 설치
    yum install certbot 
    
    # NGINX 호환 모듈 설치
    yum install python3-certbot-nginx

    HTTPS(SSL) 설정

    HTTPS 인증서 설치 시 여러 작업 방식이 존재

    NGINX에 Domain 설정

    Nginx.conf 또는 conf.d 폴더에 *.conf 형식으로 도메인이 미리 선언되어야함.
    (일반 http:80만 선언되어 있어야 함. https:443 선언 존재 시 충돌 가능성 있음)

    # Sample Config
    server {
            listen       80 ;
            listen       [::]:80 ;
            server_name  admin.dev.kr;
    
            location / {
                proxy_pass https://proxy_webserver;
                proxy_redirect     off;
                proxy_set_header   Host $host;
                proxy_set_header   X-Real-IP $remote_addr;
                proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            }
    
            error_page 404 /404.html;
                location = /40x.html {
            }
    
            error_page 500 502 503 504 /50x.html;
                location = /50x.html {
            }
    }
    
    sudo certbot --nginx

    :기본

    별도의 작업 없이 NGINX config 설정까지 동시에 진행하는 명령어

    # certbot --nginx -d [Domain Name] --no-eff-email --agree-tos -m [Admin Email]
    certbot --nginx -d admin.dev.kr --no-eff-email --agree-tos -m Admin@gmail.com
    • --no-eff-email : Let's Encrypt 이메일을 받지 않음
    • --agree-tos : 각종 체크 항목 전체 승인
    • -m : 관리자 이메일 지정

    :STANDALONE

    NGINX 서비스를 이용하여 발급.
    NGINX 서비스를 내리고 실행해야 함으로 서비스를 내리지 못할 시 사용 불가
    해당 작업 시 Nginx Config를 수동으로 수정해야 함

    # certbot certonly --standalone -d [Domain Name] --no-eff-email --agree-tos -m [Admin Email]
    certbot certonly --standalone -d admin.dev.kr --no-eff-email --agree-tos -m Admin@gmail.com

    작업 후 Nginx Config

    # Sample Config
    server {
            server_name  admin.dev.kr;
            root         /usr/share/nginx/html;
    
            # Load configuration files for the default server block.
            include /etc/nginx/default.d/*.conf;
    
            location / {
                proxy_pass https://proxy_webserver;
                proxy_redirect     off;
                proxy_set_header   Host $host;
                proxy_set_header   X-Real-IP $remote_addr;
                proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            }
    
            error_page 404 /404.html;
                location = /40x.html {
            }
    
            error_page 500 502 503 504 /50x.html;
                location = /50x.html {
            }
    
        listen [::]:443 ssl; # managed by Certbot
        listen 443 ssl; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/admin.dev.kr/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/admin.dev.kr/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
    
    }
    
    
        server {
        if ($host = admin.dev.kr) {
            return 301 https://$host$request_uri;
        } # managed by Certbot
    
    
            listen       80 ;
            listen       [::]:80 ;
            server_name  admin.dev.kr;
        return 404; # managed by Certbot
    
    
    }
    

    자동 갱신

    갱신 테스트

    certbot renew --dry-run

    갱신 명령어

    certbot renew
        --pre-hook "nginx -s stop" --post-hook "nginx"

    Crontab 스케줄러 설정

    # Crontab config 편집기 실행
    sudo crontab -e 
    
    # 아래 명령어 추가
    # 매월 1일 00:00 실행 설정
    0 0 1 * * /usr/local/bin/certbot renew --pre-hook "nginx -s stop" --post-hook "nginx"

    분기 설정 참조 : crontab.guru

    SSL 평가 Site

    Qualys SSL Labs

     

    SSL Server Test (Powered by Qualys SSL Labs)

    SSL Server Test This free online service performs a deep analysis of the configuration of any SSL web server on the public Internet. Please note that the information you submit here is used only to provide you the service. We don't use the domain names or

    www.ssllabs.com

     

    반응형
    저작자표시 비영리 변경금지 (새창열림)

    'OS > Linux' 카테고리의 다른 글

    [Linux] 자동 로그아웃 설정  (0) 2021.07.21
    [Linux] ping 차단  (0) 2021.07.21
    [Linux] OpenSSL - Root CA 생성 및 SSL 인증서 발급  (0) 2020.09.21
    [Linux] CentOS 8 firewalld 설치 및 사용법  (0) 2020.04.06
    [Linux] CentOS 8 firewalld 비활성화 / iptables 활성화  (0) 2020.04.06
    • NGINX에 Domain 설정
    • :기본
    • :STANDALONE
    • 작업 후 Nginx Config
    • 갱신 테스트
    • 갱신 명령어
    • Crontab 스케줄러 설정
    'OS/Linux' 카테고리의 다른 글
    • [Linux] 자동 로그아웃 설정
    • [Linux] ping 차단
    • [Linux] OpenSSL - Root CA 생성 및 SSL 인증서 발급
    • [Linux] CentOS 8 firewalld 설치 및 사용법
    Codit Develop
    Codit Develop
    내가 보려고 만든 개발 블로그

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.