인증 방식 종류
인증하는 방식은 3가지가 있다.
1. standalone 방식
letsencrypt 가 별도의 웹서버를 띄워 인증하는 방식. 기존 서버를 중지하고 해야 하기 때문에 비효율적임.
와일드카드를 사용할 수 없음
2. webroot 방식
실제 서비스 되고 있는 사이트의 디렉토리내에 특정파일로 검증하는 방식
모든 서브도메인이 하나의 디렉토리를 이용하고 있어야만 함
와일드카드 사용할 수 없음
3. DNS 방식
DNS 레코드에 TXT 타입의 값을 입력하여 해당 도메인의 소유자를 확인하여 인증서를 발급해주는 방식
와일드카드를 사용할 수 있다
내꺼고 내가 인증 받을 수 있다면 나는 webroot 방식이 제일 쉽게 간편한것 같다.
그래서 webroot 방식으로 진행하였다.
참고로 ubuntu, nginx 를 사용중이다.
1. certbot install
sudo apt-get update
sudo apt-get install certbot
2. nginx modify (letsencrypt add)
80 server쪽에 아래 코드 추가
server {
listen 80;
server_name test.myurl.com;
...
# ssl webroot방식 인증용
location /.well-known/acme-challenge/
default_type "text/plain";
root /var/www/letsencrypt;
}
}
3. 인증서 발급
나는 서브도메인인 test.mydomain.com 에 하려고 한거지만
본 도메인인인 mydomain.com으로 할땐 그냥 mydomain.com 으로 하면 된다.
- /var/www/mydomain: 웹 서버의 루트 디렉토리
- sub.mydomain.com : 인증서를 발급하려는 도메인
# sudo certbot certonly --webroot -w /var/www/mydomain -d sub.mydomain.com
sudo certbot certonly --webroot -w /var/www/mydomain.com -d test.domain.com
4. nginx modify (ssl 인증서 add)
내 도메인에 개인키를 등록하는 작업이다.
certbot을 이용하면 자동으로 해주기도 하지만 안되었을 경우 수동으로 추가해준다.
server {
listen 443 ssl;
server_name test.mydomain.com;
# 키 등록
ssl_certificate /etc/letsencrypt/live/test.mydomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/test.mydomain.com/privkey.pem;
# 나머지 설정
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
보안 강화
include /etc/letsencrypt/options-ssl-nginx.conf;:
Let's Encrypt가 제공하는 기본 SSL 설정을 포함하는 라인입니다. 이 파일은 일반적으로 안전한 SSL 설정과 관련된 다양한 옵션을 포함하며, 이를 직접 입력하지 않고 포함시키기 위해 사용됩니다. 이를 통해 SSL/TLS 프로토콜의 안전한 버전, 안전한 암호화 스위트 등을 설정할 수 있습니다.
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;:
Diffie-Hellman(DH) 그룹을 지정하는 데 사용됩니다. DH는 키 교환 알고리즘 중 하나로, 통신 세션마다 고유한 공유 비밀을 생성합니다. 이를 통해 Forward Secrecy를 구현할 수 있는데, 만약 개별 세션의 키가 노출되더라도 다른 세션의 키는 안전하게 유지됩니다.
/etc/letsencrypt/ssl-dhparams.pem 파일은 DH 파라미터를 포함하며, 이 파일을 생성하려면 다음 명령을 실행할 수 있습니다.
sudo openssl dhparam -out /etc/letsencrypt/ssl-dhparams.pem 2048
DH 파라미터의 크기는 보안 수준에 따라 선택됩니다. 2048 비트는 현재 일반적으로 안전한 크기로 간주됩니다.
이 두 설정은 모두 웹 서버의 SSL/TLS 보안을 강화하는 데 기여합니다. Let's Encrypt와 함께 사용할 때 Certbot이 자동으로 이러한 설정을 추가하기도 합니다.
5. nginx restart
sudo nginx -t
sudo systemctl restart nginx
# or
sudo service nginx restart
6. 접속확인
접속 잘 되는지, 인증서 잘 입력됬는지 확인한다.
참고
'프로젝트 설정 > 서버' 카테고리의 다른 글
[NGINX] 로그(log) 저장 경로 변경 후 분할 되도록 수정 (feat. logrotate) (0) | 2023.08.17 |
---|---|
[NginX] url의 특정 부분을 argument로 받기 (feat. chatGPT) (0) | 2023.02.22 |
[NginX] 도메인(domain) 연결하기 (feat. Godaddy) (0) | 2022.11.25 |
[SSH] ssh 터널링 (포트 포워딩) (feat. VSCode Good) (0) | 2022.10.07 |
[nginx] nginx 설치 (feat. ubuntu 18.04 & 20.04) (0) | 2022.08.08 |