letsencrypt에서 무료 인증서를 는 사용기한이 3개월 단위로 발행하므로 업데이트 에 번거러움이 있습니다. acme.sh 로 https인증서를 관리하면 간단한 명령으로 관리 할수있습니다.
준비
- 확인 된 도메인 이름 (http로 액세스 가능)
- 서버의 443 포트 방화벽을 오픈하십시오.
1.acme.sh설치
먼저 acme.sh를 설치하십시오. 메일주소 도 지정해야됨
curl https://get.acme.sh | sh -s email=my@example.com
이 명령 후에 acme.sh가 ~/.acme.sh/
디렉토리에 설치되고
다시로드됩니다.~/.bashrc
source ~/.bashrc
2. 인증서 생성
acme.sh --issue -d www.your-domin.com --webroot /srv/your-domin.com/
이 명령의 의미는 /srv/your-domin.com/
웹 사이트의 루트 디렉토리 인 http를 사용하여 www.your-domin.com의 인증서를 생성하는 것 입니다. (이 과정에서 acme.sh
확인 파일이 자동으로 생성되어 웹 사이트의 루트 디렉토리에 놓인 다음 확인이 자동으로 완료됩니다. 마지막으로 확인 파일이 자동으로 삭제됩니다.)
————–아래3-6번 부분은 자동으로 설치될수있습니다. 설치 안될떄 참고
3. 인증서를 nginx 디렉토리에 설치하거나 복사.
기본적으로 생성 된 인증서는 설치 디렉토리 ~ / .acme.sh /에 있으며,이 디렉토리는 일반적으로 nginx 또는 Apache에서 직접 사용할 수 없습니다. 따라서 인증서를 지정된 디렉토리에 넣어야합니다. acme는 –installcert를 제공하여 인증서를 설치하고 대상 위치 만 지정하면 인증서 파일이 해당 위치로 복사됩니다.
먼저 /etc/nginx/ssl/
디렉토리 가 존재하는지 확인하십시오
mkdir /etc/nginx/ssl
인증서를 복사하고 nginx reload 명령을 지정하십시오.
acme.sh --installcert -d www.your-domin.com \
--key-file /etc/nginx/ssl/www.your-domin.com.key \
--fullchain-file /etc/nginx/ssl/fullchain.cer \
--reloadcmd "service nginx force-reload"
서비스 nginx 강제 재로드는 인증서가 유효하도록 acme가 자동으로 업데이트 될 때 nginx를 다시 시작하는 것입니다.
4. dhparam.pem 파일 생성
openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048
이 단계는 반드시 필요하지는 않지만 추가하는 것이 가장 좋습니다. 구성 후 ssllabs.com에서 확인합니다.이 단계에서 ssl_dhparam을 구성하지 않으면 ssllabs.com의 점수가 B로 떨어집니다.
5. nginx 구성
인증서가 설치되었습니다. 다음 단계는 nginx가이 인증서를 사용하도록하는 것입니다. 내 서버에는 여러 사이트가 있으며 현재 하나의 사이트에만 인증서가 구성되어 있으므로 현재 사이트의 conf 만 수정하십시오.
server {
listen 80;
server_name www.your-domin.com;
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
ssl_certificate /etc/nginx/ssl/www.your-domin.com.cer;
ssl_certificate_key /etc/nginx/ssl/www.your-domin.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
...
}
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
위 구성은 인증서 점수를 향상시킬 수 있습니다.이 파일은 네 번째 단계에서 생성됩니다.nginx -t
시험의 nginx 구성이 올바른지에, 다음, systemctl restart nginx당신이 사용할 수있는, 그것은 nginx에 다시 시작
6.인증서 업데이트
let’s encrypt 인증서는 90 일 동안 유효하며 정기적으로 다시 적용해야하지만 acme는 설치시 자동으로 업데이트되도록 설정되었으므로이 단계는 걱정할 필요가 없습니다.
# crontab -l
47 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
이 명령으로 인증서를 수동으로 갱신
acme.sh --cron -f
위3-6번 부분은 자동으로 설치될수있습니다. 설치 안될떄 참고
7.소프트웨어가 자동으로 업데이트되도록 설정
현재 acme 프로토콜과 letencrypt CA는 자주 업데이트되므로 동기화를 유지하기 위해 acme.sh도 자주 업데이트되므로 자동 소프트웨어 업데이트를 설정하고 다음 명령을 실행하는 것이 가장 좋습니다.
acme.sh --upgrade --auto-upgrade
**update 2020.12.20–
8.마지막으로 socat 패키지 설치
acme.sh는 통신원활하기위해 socat패키지로 설치해야됩니다.
apt install socat
acme.sh --issue -d domain.com -w nginx:$NGINX_HOME/conf/nginx.conf
nginx설치폴터가 다를떄 상기와 같이 지정해주시면 됩니다.