개요
Synology DS220+ 구매한 뒤로 Bitwarden, WebDAV, … 다양한 용도로 사용하고있습니다.
lets encrypt를 사용하여 인증서를 생성한뒤, 작업 스케쥴러의 기능을 사용해서 3개월마다 갱신해서 사용하려 했으나 OTP 인증을 걸어놨던터라 매번 인증이 실패해서 제대로 갱신이 되지않았습니다.
DSM7과 최근 버전의 acme.sh에서 이러한 회피하여 인증서를 갱신할수 있게 되었습니다.
이 과정을 간단히 정리해보겠습니다.
알림
OTP를 사용하는 admin 계정에 한해서 입니다.
ACME.sh 업그레이드
그동안 사용해 오시던 acme.sh를 업그레이드 해야합니다.
https://github.com/acmesh-official/acme.sh?tab=readme-ov-file#14-how-to-upgrade-acmesh를 참고해서 진행하도록 합니다.
|
|
별다른 에러 없이 업그레이드가 되었다면, 다음 단계로 진행합니다.
Synology deployhook 달라진점
그동안 ACME.sh에서는 synology 인증서 갱신을 할때, OTP를 사용하는 경우에 대해서는 다음과 같은 환경 변수들을 사용했습니다.
SYNO_DEVICE_NAME
SYNO_DEVICE_ID
한번이라도 OTP를 사용해서 로그인한 뒤, 만들어진 Device id를 사용해 OTP를 대체하는 방법이었습니다. 하지만 이 방법은 갱신 시점이 되면 Device id가 유효하지않아서인지 실패했습니다.
다른 방법도 있긴한데, https://github.com/acmesh-official/acme.sh/wiki/deployhooks#about-the-authentication에서 제공하는 방법처럼 oauthtool을 설치해, OTP를 생성하는 방법도 있었습니다.
하지만 이 방법은 oauthtool을 설치해야할 뿐더러, TOTP SECRET도 저장해야하다보니 보안상 좋지않은 방법입니다.
다행히도 최근 버전에서는 SYNO_USE_TEMP_ADMIN
이라는 환경변수를 만들어서 사용할 수 있게 되었습니다.
동작하면서 출력되는 메시지를 보면 TOTP 인증을 일시적으로 해제한뒤, synology deploy hook을 호출한뒤 다시 TOTP 인증을 설정합니다.
일시적으로 해제된다는 점에서 걱정될 수도있겠지만, 실 해제 시간은 5~10초 정도밖에 되지않는다는 점에서 걱정할 필요는 없어 보입니다.
요약
- ACME.sh 업그레이드
- 작업 스케줄러에 추가한 인증서 갱신 스크립트에
export SYNO_USE_TEMP_ADMIN=1
추가