nginx와 dehydrated의 조합으로 ACME 클라이언트를 사용한 간편한 ssl 지원 웹 서버 구축 IPv6 전용
3755 단어 nginxacmeFreeBSDIPv6dehydrated
또 본 기사는 FreeBSD 경험자를 대상으로 쓰고 있으므로, 세세한 배려는 되어 있지 않습니다.
아래 준비
OS는 최신 패치가 적용되고 포트 skeleton도 가능한 최신 버전과 동기화됩니다.
IPv6에서 인터넷에 연결되어 있어야 합니다.
애플리케이션 도입
ports 로부터 다음의 패키지를 인스코 한다.
ports 로부터 다음의 패키지를 인스코 한다.
ACME 클라이언트 취득을 위한 계정 생성
다음 명령을 실행하여 ACME 계정을 발급합니다.
# dehydrated --register --accept-terms --ipv6 --domain %%HOSTNAME%% --ocsp --challenge http-01
%%HOSTNAME%% 의 부분은 향후 사용할 예정인 웹 서버 주소로, 실제로 인터넷망으로부터 액세스 할 수 있는 주소인 것.
이것이 할 수 없으면 앞으로는 진행할 수 없기 때문에 주의.
또한, %%HOSTNAME%% 는 모두 반각 소문자인 것에 주의.
일본어 도메인에서 이용하는 경우는 자동 변환하지 않기 때문에, 미리 IDN 로 Punycode 화한 도메인명을 지정하는 것.
ACME 클라이언트 인증에 사용되는 특정 디렉토리 설정
nginx 설정에서 server 절에 다음 alias를 추가합니다.
nginx.conf location ^~ /.well-known/acme-challenge/ {
alias /usr/local/www/dehydrated/;
}
인증서 발급 작업
# dehydrated --cron --ipv6 --domain %%HOSTNAME%% --ocsp --challenge http-01
문제가 없으면 이하의 디렉토리에 증명서와 개인키등이 작성되고 있을 것입니다.
/usr/local/etc/dehydrated/certs/%%HOSTNAME%%/
생성되는 파일 이름 (실제로 정적 링크)
# dehydrated --register --accept-terms --ipv6 --domain %%HOSTNAME%% --ocsp --challenge http-01
nginx 설정에서 server 절에 다음 alias를 추가합니다.
nginx.conf
location ^~ /.well-known/acme-challenge/ {
alias /usr/local/www/dehydrated/;
}
인증서 발급 작업
# dehydrated --cron --ipv6 --domain %%HOSTNAME%% --ocsp --challenge http-01
문제가 없으면 이하의 디렉토리에 증명서와 개인키등이 작성되고 있을 것입니다.
/usr/local/etc/dehydrated/certs/%%HOSTNAME%%/
생성되는 파일 이름 (실제로 정적 링크)
# dehydrated --cron --ipv6 --domain %%HOSTNAME%% --ocsp --challenge http-01
/usr/local/etc/dehydrated/certs/%%HOSTNAME%%/
nginx에 작성된 인증서를 작성하여 ssl 준비
이전에 server 절에 추가한 부분과는 별도로 server 절을 새로 작성합니다.
nginx.conf server {
listen [::]:443 ssl http2;
ssl_certificate /usr/local/etc/dehydrated/certs/%%HOSTNAME%%/fullchain.pem;
ssl_certificate_key /usr/local/etc/dehydrated/certs/%%HOSTNAME%%/privkey.pem;
ssl_trusted_certificate /usr/local/etc/dehydrated/certs/%%HOSTNAME%%/cert.pem;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_protocols tlsv1.1 tlsv1.2 tlsv1.3;
ssl_prefer_server_ciphers on;
ssl_stapling on;
ssl_stapling_verify on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";
resolver [2001:4860:4860::8844] [2001:4860:4860::8888] valid=60s ipv6=on;
resolver_timeout 5s;
}
nginx 재부팅
# service nginx reload
인증서 만료 날짜 자동 업데이트
매주 정기적으로 업데이트 스크립트를 실행하도록 설정합니다.
/etc/periodic.conf.localweekly_dehydrated_enable="YES"
weekly_dehydrated_flags="--ipv6 --domain %%HOSTNAME%%"
증명서의 자동 갱신 후, nginx 에게도 전해 주지 않으면 오래된 증명서를 잡은 채이므로, 배포 스크립트를 작성해, nginx 의 config 를 리로드 시킨다.
/usr/local/etc/dehydrated/deploy.sh#!/bin/sh
/usr/local/sbin/nginx -s reload
당연히 쉘 스크립트이므로 실행 권한도 부여하는 것을 잊지 않도록.
chmod +x /usr/local/etc/dehydrated/deploy.sh
방금 편집한 periodic.conf.local 에도 이 배포 스크립트를 지정시켜 둔다.
/etc/periodic.conf.localweekly_dehydrated_deployscript="/usr/local/etc/dehydrated/deploy.sh"
🙌
Reference
이 문제에 관하여(nginx와 dehydrated의 조합으로 ACME 클라이언트를 사용한 간편한 ssl 지원 웹 서버 구축 IPv6 전용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/je3kmz/items/6682283cc405c9b06621
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
server {
listen [::]:443 ssl http2;
ssl_certificate /usr/local/etc/dehydrated/certs/%%HOSTNAME%%/fullchain.pem;
ssl_certificate_key /usr/local/etc/dehydrated/certs/%%HOSTNAME%%/privkey.pem;
ssl_trusted_certificate /usr/local/etc/dehydrated/certs/%%HOSTNAME%%/cert.pem;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_protocols tlsv1.1 tlsv1.2 tlsv1.3;
ssl_prefer_server_ciphers on;
ssl_stapling on;
ssl_stapling_verify on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";
resolver [2001:4860:4860::8844] [2001:4860:4860::8888] valid=60s ipv6=on;
resolver_timeout 5s;
}
# service nginx reload
인증서 만료 날짜 자동 업데이트
매주 정기적으로 업데이트 스크립트를 실행하도록 설정합니다.
/etc/periodic.conf.localweekly_dehydrated_enable="YES"
weekly_dehydrated_flags="--ipv6 --domain %%HOSTNAME%%"
증명서의 자동 갱신 후, nginx 에게도 전해 주지 않으면 오래된 증명서를 잡은 채이므로, 배포 스크립트를 작성해, nginx 의 config 를 리로드 시킨다.
/usr/local/etc/dehydrated/deploy.sh#!/bin/sh
/usr/local/sbin/nginx -s reload
당연히 쉘 스크립트이므로 실행 권한도 부여하는 것을 잊지 않도록.
chmod +x /usr/local/etc/dehydrated/deploy.sh
방금 편집한 periodic.conf.local 에도 이 배포 스크립트를 지정시켜 둔다.
/etc/periodic.conf.localweekly_dehydrated_deployscript="/usr/local/etc/dehydrated/deploy.sh"
🙌
Reference
이 문제에 관하여(nginx와 dehydrated의 조합으로 ACME 클라이언트를 사용한 간편한 ssl 지원 웹 서버 구축 IPv6 전용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/je3kmz/items/6682283cc405c9b06621
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
weekly_dehydrated_enable="YES"
weekly_dehydrated_flags="--ipv6 --domain %%HOSTNAME%%"
#!/bin/sh
/usr/local/sbin/nginx -s reload
chmod +x /usr/local/etc/dehydrated/deploy.sh
weekly_dehydrated_deployscript="/usr/local/etc/dehydrated/deploy.sh"
Reference
이 문제에 관하여(nginx와 dehydrated의 조합으로 ACME 클라이언트를 사용한 간편한 ssl 지원 웹 서버 구축 IPv6 전용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/je3kmz/items/6682283cc405c9b06621텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)