CloudFlare &Let's Encerypt를 통해 인증서에 응답할 수 없습니다.

개시하다
서비스 SSL 인증서가 갑자기 중단됨
정기적으로 renew를 위해cron을 설정했습니다. 무슨 일이 일어났는지...
어쨌든 해결됐으니 공유하자
요점
일단은 certbot 업데이트.
yum install -y --enablerepo=epel certbot
인증서의 인증 그룹 설치
yum install -y ca-certificates
마지막으로 CloudFlare 설정 화면에서 유연성 선택

↑ 이걸 눈치채지 못했어...
문제가 생기다
한밤중에 갑자기 인증서 만료 LINE 발견
공포.
crontab로certbot을 이동하고 있습니다. 지금까지 이동하고 있습니다. 하지만...
밤에 끊겨서 다행이다...
확인 후 다음과 같이 설정된crontab 동작이 좋지 않음
vi /etc/cron.d/certbot
0 0 18 * * root /bin/certbot renew --force-renew --post-hook "systemctl reload httpd"
따라서 상술--dry-run을 더해서 집행해 보다
/bin/certbot renew --force-renew --dry-run
Starting new HTTPS connection (1): acme-staging-v02.api.letsencrypt.org
Failed to renew certificate foo.bar with error: __str__ returned non-string (type Error)
이러한 오류로 인해 fullchain.pem 업데이트가 없는 것 같습니다.
일지를 보다
less /var/log/letsencrypt/letsencrypt.log
한 마디로 하면 API 접근에 실패하여string에 들어가야 할 곳에 아무것도 없다는 것을 발견하였다
  • Connection error on "acme-v02.api.letsencrypt.org" - Help - Let's Encrypt Community Support
  • 여기 보니까 프로그램 라이브러리에 문제가 있는 것 같지만 아쉽게도 이쪽 환경은 pip로 설치되어 있지 않아서 버전을 변경할 수 없어요...
    그럼 문제urllib3에서 오류문을 찾아봤어요.
  • Need to update error handling for pyOpenSSL · Issue #556 · urllib3/urllib3
  • 인증국의 인증서 그룹을 설치했으면 좋겠어요.
    yum install ca-certificates
    
    그리고 다시 --dry-run 구현
    /bin/certbot renew --force-renew --dry-run
    
    그래서 순조롭게 진행되었다.
    그래서 renew 실행.
    /bin/certbot renew --force-renew --post-hook "systemctl reload httpd"
    
    cloudflare까지 방문했지만 오류가 바뀌었습니다. 이번에는 524 오류입니다.
    Starting new HTTPS connection (1): api.cloudflare.com
    Failed to renew certificate foo.bar with error: 524 Server Error:
    
    어쨌든bar를 방문했을 때timeout에 있는 것 같아요.
  • Troubleshooting Cloudflare 5XX errors – Cloudflare Help Center
  • 문제점을 발견하기 전에 조사한 내용
    certbot은 인증서를 발행할 때 서비스의 URL을 방문할 때https가 아니라 http로 방문하는 것 같습니다
    http→https로 방향을 바꾸면 인증서를 잘 업데이트하지 못할 것 같다는 기사를 봤기 때문이죠. 그건가요?추측하다
    좋은 것으로 추정되지만 웹 서버의 conf에서 리셋 설정이 진행되지 않았습니다 (Apache)
    그러니까 Clouflare 측의 설정인가요?이렇게 생각하면서 콘솔에 로그인해 보니 SSL의 설정 항목에 다음과 같은 내용이 있음을 발견하였다.

    원래'Full'을 선택했는데 오리진 서버에 인증서의 달 요청을 한 것 같았는데 이번에는'유연함'으로 바뀌었다.
    여기서 다시 certbot의renew를 실행합니다.
    /bin/certbot renew --force-renew --post-hook "systemctl reload httpd"
    
    정상적으로 실행되면 서버도 다시 시작하여 SSL 액세스가 올바른지 확인합니다.
    감상
    어쨌든 한 시간 반 정도면 해결할 수 있는데 밤에는 라인이 무서워요.
    최근 문제가 발생하면 바로 Qiita에 기재되기 때문에 이 투고 시간과 문제 발생 시간은 차이가 많지 않다.
    같은 일로 괴로워하는 사람이 있다면 이 기사를 도울 수 있다면 기쁠 거예요.
    안녕히 주무세요.

    좋은 웹페이지 즐겨찾기