HTTP, HTTPS 방화벽 오픈

$ sudo firewall-cmd --add-service=http
$ sudo firewall-cmd --add-service=https
$ sudo firewall-cmd --runtime-to-permanent

 

저는 이미 열려있다고 하네요.

 

인증서를 저장할 폴더를 만들고 일반사용자가 접근을 못하게 권한을 설정해줍시다.

$ sudo mkdir /etc/ssl/private
$ sudo chmod 700 /etc/ssl/private

 

자 이제 인증서와 키를 생성해봅시다.

$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt

 

 

Country Name 을 가져오라네요.

이 글을 보시는분은 한국인일거라 생각합니다.

Country Name : KR

State or Province Name : Seoul

Locality Name : SungDong-gu

Organization Name : 회사명

Organization Unit : 부서명
Common Name : 서버의 도메인

 

도메인을 등록하지 않은 분들은 도메인을 지정해줍시다.

 

기본값은 localhost.localdomain 가 들어가있군요.

$ sudo vi /etc/hostname 을 수정합시다.

 

수정해준 뒤 확인해보니 Static hostname 이 바뀐걸 확인할 수 있군요.

변경사항을 시스템에 저장하기 위해 hostname 서비스 데몬을 재시작 해줍시다.

$ sudo systemctl restart systemd-hostnamed

 

입력을 완료해주면 됩니다.

민감정보는 가려줬습니다 :)

 

Diffie-Hellman group 을 생성해줍니다.

해당 pem 파일로 Nginx 에서 https 설정을 잡아줄겁니다.

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

 

 

주르륵 주르륵 가더니 완료.

 

이제 Nginx ssl conf 파일을 작성해봅시다.

 

$ sudo vi /etc/nginx/conf.d/ssl.conf

 

server {
    listen 443 http2 ssl;
    listen [::]:443 http2 ssl;

    server_name server_IP_address;

    ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
    ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    ########################################################################
    # from https://cipherli.st/                                            #
    # and https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html #
    ########################################################################

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
    ssl_ecdh_curve secp384r1;
    ssl_session_cache shared:SSL:10m;
    ssl_session_tickets off;
    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 5s;
    # Disable preloading HSTS for now.  You can use the commented out header line that includes
    # the "preload" directive if you understand the implications.
    #add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
    add_header X-Frame-Options DENY;
    add_header X-Content-Type-Options nosniff;

    ##################################
    # END https://cipherli.st/ BLOCK #
    ##################################

    root /usr/share/nginx/html;

    location / {
    }

    error_page 404 /404.html;
    location = /404.html {
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    }
}

 

http 연결을 https 로 redirect 하는 설정을 만듭시다.

$ sudo vi /etc/nginx/default.d/ssl-redirect.conf

return 301 https://$host$request_uri/;

 

이제 Nginx 가 제대로 ssl 설정으로 실행되는지 확인해봅시다.

 

$ sudo nginx -t

 

 

CA의 인증을 받은게 아닌 사설 인증서라 warning 이 있네요.

상관없이 nginx 를 재시작해줍니다.

 

$ sudo systemctl restart nginx

 

이제 https 로 접속해봅시다.

 

위험한 페이지라고 경고를 주지만.

Advanced 로 들어가서

 

리스크를 무시하고 가봅시다.

 

잘열리는군요 :)

 

Virtualbox 를 사용중이시라면 443 포트도 열어줘야 외부에서 접근이 가능합니다.

 

 

 

반응형

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

CentOS 8 Docker 로 Nginx 설치하기  (0) 2020.04.14
CentOS 8 Nginx Load Balancing 설정  (0) 2020.04.07
CentOS 8 Nginx Flask 연동 (GET, POST)  (0) 2020.03.24
CentOS 8 Nginx Reverse Proxy Config  (0) 2020.03.24
CentOS 8 Nginx 설치  (0) 2020.03.17
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기