Let's Encrypt 인증서 생성
2024. 3. 1. 01:51ㆍ보안
# Let's Encript 클라이언트 설치
sudo apt-get install certbot -y
sudo apt-get install python3-certbot-nginx
# 설정 파일 수정
# default_server는 없어도 작동함
# 해당 도메인으로 인터넷에서 접속이 되어야 인증서를 만들 수 있음
# 도메인을 소유하고 있고, 적용하고자 하는 도메인이 DNS에 등록되어 nslookup에서 찾을 수 있어야 함
cd {nginx 설치위치}/sites-available
vi reverse-proxy.conf
----------------------------------
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
server_name {도메인1} {도메인2};
}
----------------------------------
# 인증서 생성
# 3개월 유지됨
# 도메인은 더 추가 가능
sudo certbot -v --nginx -d {도메인1}-d {도메인2}
# 인증서 확인
sudo certbot certificates
브라우져에서 인증서 유효일자 확인
인증서 갱신
인증서 갱신은 1달전부터 가능하다고 함
Trouble Shooting
- DNS problem: SERVFAIL looking up A for {도메인} - the domain's nameservers may be malfunctioning; DNS problem: SERVFAIL looking up {도메인 타입} for {도메인} - the domain's nameservers may be malfunctioning
인터넷에서 nslookup을 통해서 해당 도메인이 찾아지지 않는 경우 발생
외부 DNS 서버에 도메인이 등록되어 있어야 함
- {도메인에 연결된 IP}: Fetching http://{도메인}/.well-known/acme-challenge/xxxxxx: Timeout during connect (likely firewall problem)
인터넷에서 http로 nginx 서비스가 접속이 안되는 경우: http://{도메인}
내부에서는 접속이 잘되는데, 외부에 80 port가 막혀 있어서 열어줌
- {도메인에 연결된 IP}: Invalid response from http://{도메인}/.well-known/acme-challenge/xxxxx: 404
nginx를 http://{도메인}으로 접속했을 때, 404에러가 발생하는 경우
- An unexpected error occurred:
There were too many requests of a given type :: Error creating new order :: too many failed authorizations recently: see https://letsencrypt.org/docs/failed-validation-limit/
등록하려고 하는 도메인으로에러가 많이 발생하는 경우, 이런 에러가 발생함
iptime의 DDNS를 등록하려고 할때, 이 에러가 발생해서 포기한 적 있음
해당 도메인의 sub 도메인으로 진행하면, 이 에러 안나고, 그 이후 해당 도메인을 추가해서 진행하면 해결됨
# 자동 갱신 적용
# 매일 12시 작업
sudo crontab -e
--------------------------
0 12 * * * certbot renew
--------------------------
- [emerg] open() "/etc/nginx/nginx.conf" failed (2: No such file or directory)
해당 디렉토리에 nginx의 환경파일이 없어서 에러 발생함: 심볼릭 링크로 해결
sudo ln -s {실제 파일} /etc/nginx/nginx.conf
- nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /etc/nginx/nginx.conf:46
ssl 모듈이 없어서 생긴 문제, ssl 모듈을 포함해서 새로 컴파일하면 해결됨
# 컴파일
./configure \
--prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--modules-path=/usr/lib/nginx/modules \
--conf-path=/etc/nginx/conf/ngnx.conf \
--pid-path=/etc/nginx/nginx.pid \
--lock-path=/var/run/nginx.lock \
--with-stream \
--with-http_stub_status_module \
--with-http_ssl_module
# 설치
sudo make install
- nginx: [error] invalid PID number "" in "/etc/nginx/nginx.pid"
nginx.conf안에 pid 정보가 없어서 생긴 문제
# nginx.conf 위에 주석으로 되어 있는 부분을 활성화 및 정확한 위치 지정
pid {pid 파일 위치}/nginx.pid;
'보안' 카테고리의 다른 글
Let's encrypt 인증서 갱신 (0) | 2024.11.26 |
---|---|
openssl 명령어 (0) | 2023.05.27 |