https://github.com/kyle-park-io/certbot
-
How
- certbot 을 사용해 인증서를 발급 받을 때 몇 가지 방법들이 있는데 해당 내용은 아래에 순번으로 기재하도록 한다.
- certbot 뿐 아니라 다른 acme client 에도 동일하게 적용되는 내용이기 때문에 잘 이해 해놓으면 큰 도움이 될 것이라 생각한다.
- 아래에 기재할 방법들은 결국 목적이 동일한데, 다음 조건을 만족하게 상황을 구현하는 것이 목적이다.
- certbot(client) 의 특정 요청(request) 을 잘 받아서 처리해줄 서버(로직)가 내 도메인 서버 안에 구현되어 있으면 된다.
-
Request
-
정리하면, certbot에 인증 요청 명령어를 입력하고 certbot에서 제시한 특정 파일(값)이 내 도메인 서버에 존재하면 되는 것이다. 이 과정을 이해하고 깃허브 내의 스크립트를 참고하면 많은 도움이 될 것이다.
-
이제 서버에 certbot 이 제시한 값을 생성하는 방법을 알도록 하자. 일반적으로 두 가지 방식이 있다.
-
Method
-
certbot (auto)
- 가장 보편적으로 사용하는 방식으로 도메인 서버에 certbot 을 설치하고 바로 여기에서 인증을 요청하는 방식이다.
- 도메인 서버에 바로 인증서가 저장되니 참 편리하다.
- 이 말은, 인증서를 다른 곳에서 발급받고 이를 서버에 직접 옮겨도 된다는 소리다.
- 대신, 이 경우에 인증서 경로를 서버에 알려줘야 할 수도 있다.
- 서버에 certbot을 설치하고 http, dns 중 요청 방식을 정해 명령어 입력 후 인증을 하는 방식
- certbot 홈페이지 상단에 나와있는 certbot + http 인증이 가장 쉽게, 그리고 가장 많이 인증을 이용하는 방식이 되겠다.
- 나는 GKE 내의 인그레스 서버에서 인증서를 발급해야 했는데 이 경우에 dns 인증을 사용한 방법이 http 인증보다 더 적합했다.
- dns 를 이용한 인증 방식은 꼭 기억해두도록 하자.
-
내 손 (manual)
- 보편적 상황에서의 http 인증, 그리고 조금 더 복잡한 상황에서의 dns 인증을 소개했다.
- 그런데, 본인 회사 서버는 더 복잡한 상황이고, 도저히 certbot을 이용해 자동으로 인증받기 어려운 상황이라고 하자.
- 이 때는 수동으로 인증 과정을 진행해야한다.
Example
Server
80 포트 서버를 하나 준비한다
https://github.com/kyle-park-io/certbot/blob/main/server/webroot.go