구글 클라우드 플랫폼을 통한 웹 서버 운영하기 – 웹서버에 SSL 적용하기.

이렇게 워드프레스 설치까지 진행했는데 그대로 사용하게 되면 보안에 취약하다.

그래서 이번에는 Nginx 웹서버에 SSL를 적용해보도록하겠다.

요것도 마찬가지로 똑같은 Cent OS이기 떄문에 이걸보면 어느정도 이해도 되고 해결도 될거다.

wget https://dl.eff.org/certbot-auto

mv certbot-auto /usr/local/bin/certbot-auto
chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto

그리고 인증받을 서버의 주소와 nginx web servername을 일치시켜주자.

그리고 나서 service nginx restart

sudo /usr/local/bin/certbot-auto certonly -d 'dalso.duckdns.org'

위 명령어를 입력하게되면 인증서 발급을 위한 패키지도 설치되게 된다.

그리고 설치가 완료되면 바로 인증서 발급, 발급은 nginx 버전

동의도 해주고 이메일도 입력해주고

모든과정을 완료하면 Congratulations! 과함께 인증서 발급이 완료된다.

중간의 경로에 인증키가 들어있는데 경로를 기억해두고 인증서에 사용될 암호키를 생성해보자.

암호키 생성은 openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048 명령어로 하면된다.4096이 보안은 더 뛰어난데 오래걸림;

자 이제 정리해보면
생성한 SSL 인증서의 위치는 /etc/letsencrypt/live/도메인명/fullcahin.pem, /etc/letsencrypt/live/도메인명/ privkey.pem
암호키는 /etc/ssl/certs/dhparam.pem 에 위치한다.

이걸 nginx의 도메인에 넣으면 된다.

vi /etc/nginx/conf.d/default.conf

새로운 443포트의 서버를 만들어주자. (기존 80도 유지해야함)

server {
    listen 443 ssl http2;
    listen [::]:443 http2;
    server_name 도메인 이름;
    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;
    ssl on;
    ssl_certificate /etc/letsencrypt/live/도메인 이름/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/도메인 이름/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/도메인 이름/chain.pem;
    ssl_stapling on;
    ssl_stapling_verify on;

        access_log  /var/log/nginx/web.access.log  main;
        error_log /var/log/nginx/web.error.log;
        location / {
                try_files $uri $uri/ /index.php?$args;
                }
        error_page  404              /404.html;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
        root   /var/www/html;
        }
location ~ \.php$ {
    try_files $uri =404;
    fastcgi_cache off;
    fastcgi_split_path_info ^(.+\.php)(.*)$;
    fastcgi_index  index.php;
    include        fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    fastcgi_pass unix:/var/run/php-fpm/www.sock;
    include mime.types;
}
    location ~ /\.ht {
    deny all;
    }
}

작성하고 service nginx restart netstat -lntp 로 열려있나 확인하자

HTTPS 방화벽 오픈

http와 마찬가지로 https도 방화벽을 오픈해야 외부에서 접속할 수있다.

firewall-cmd --zone=public --permanent --add-port=443/tcp
firewall-cmd --reload

서버에서 오픈완료했으니 GCP에서도 방화벽 설정을 해주자.

관리콘솔 > VPC 네트워크 > 방화벽 규칙 > 방화벽 규칙만들기(https 추가)

SSL 확인하기(http확인)

웹으로 https://dalso.duckdns.org로 접근해보면 인증서가 되어있는걸 확인할 수있다.

 

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

사이트 리뉴얼중입니다~

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

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

2 thoughts on “구글 클라우드 플랫폼을 통한 웹 서버 운영하기 – 웹서버에 SSL 적용하기.”

  1. pi@pi-IdeaPad-L340-15IRH-Gaming:~$ wget https://dl.eff.org/certbot-auto
    –2021-07-19 11:19:10– https://dl.eff.org/certbot-auto
    dl.eff.org (dl.eff.org)을(를) 해석하는 중… 151.101.76.201, 2a04:4e42:12::201
    접속 dl.eff.org (dl.eff.org)|151.101.76.201|:443… 접속됨.
    HTTP 요청을 전송했습니다. 응답을 기다리는 중입니다… 404 Not Found
    2021-07-19 11:19:11 오류 404: Not Found.

    wget https://dl.eff.org/certbot-auto 를 입력하니까 404 에러가 뜹니다…
    좀 기다리면 될까요?

답글 남기기

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

홈서버 IT 커뮤니티 SVRFORUM
Link