앞서 도메인을 발급받은뒤에 진행되어야할게 도메인에 대한 SSL 인증서를 발급받아 보안을 강화해주는것입니다.
요즘 구글 검색 혹은 기타 환경에서 https를 사용하지않는 부분은 없기때문에 거의 필수적이라고 보시면됩니다.
certbot으로 발급받을 수 있는 Let’s Encrypt 인증서의 경우 무료인증서중에는 1픽이기때문에 쉽게 따라해서 설치해주시면 되겠습니다.
certbot 및 Nginx용 패키지 설치하기
apt install certbot python3-certbot-nginx
패키지 설치가 완료되었으면 nginx 설정을 변경해주셔야 합니다.
2. Nginx 설정 변경하기
vi /etc/nginx/sites-available/defualt 혹은 [도메인]
파일에 들어가서 server_name
설정변경이 완료되었으면 service nginx restart 로 서비스를 재싲가 시켜주세요.
3. SSL 인증서 발급 및 암호키 생성하기.
이제 바로 SSL 인증서를 발급받아보겠습니다.
sudo certbot –nginx -d [도메인]
왠만한거는 다 Yes,Agree등을해주셔도 되고
아래 문항에 대해서는 http사용시 https로 강제리다이렉트를 시켜줄까? 라는 문항이기 때문에 한번생각해보시고 선택해주시면되겠습니다.
그럼 자동으로 ssl 인증서 발급이 완료됩니다.
중간의 경로에 인증키가 들어있는데 경로를 기억해두고 인증서에 사용될 암호키를 생성해보겠습니다..
암호키 생성은 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의 도메인에 넣어보겠습니다.
4. Nginx 설정 변경하기
앞서 nginx 설정을 변경했는데 또 바꿔야돼?? 라는 생각을 하실건데..
앞서 80번으로 접속을 받는 http만 설정했다면 이제 443으로 받는 https에 대한 설정과 보안키 등에 대한 설정이 필요합니다.
혹시 하시다가 잘 안되실거같으면 애초에 파일을 날려주시고 다시 만드시는걸추천드립니다.
/etc/nginx/sites-available/default
[도메인 이름] -> 요거를 실제 도메인 이름으로 넣어주시면 됩니다.
server {
listen 80 ;
listen [::]:80 ;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name [도메인 이름];
location / {
return 301 https://[도메인 이름]$request_uri; ###### HTTPS www로 리다이렉팅
}
}
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_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_stapling on;
ssl_stapling_verify on;
access_log /var/log/nginx/web.access.log;
error_log /var/log/nginx/web.error.log;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
}
}
완료 된 뒤에 시크릿 탭같은걸 띄워서 도메인 에 접근해보면 아래처럼 자동으로 https에 연결되고 인증서도 발급이 됩니다.