FortiGate는 FortiOS 7.0 버전 이후부터 ACME (Automated Certificate Management Environment) 를 이용하여 Let's Encrypt와 연동 후 SSL 인증서를 무료로 사용할 수 있는 기능을 제공하고 있습니다. 인증서는 90일 단위로 갱신이 필요하며 FortiGate는 자동으로 갱신 처리를 진행하기에 계속 인증서를 사용할 수 있습니다.

 

Let's Encrypt란? 

무료 인증서 보급을 통해 HTTPS를 확산시키겠다는 취지로 시작된 비영리 프로젝트입니다. 

 

사용하기 위한 제약조건은 아래와 같습니다.

  1. FortiGate는 공인 IP를 가지고 있어야 하며, 그 공인 IP와 매핑된 도메인이 필요합니다. (A 레코드)
  2. ACME 인터페이스는 인터넷 구간과 연동이 될수 있어야 하며, 80 (HTTP) 또는 443 (HTTPS) 포트에 대한 VIP 설정 (NAT, 포트포워딩) 이 없어야 합니다.
  3. SAN 필드가 매핑된 도메인으로 자동으로 설정되어 편집이 불가하기에 와일드카드도 사용 불가하며 여러 개의 SAN을 따로 추가할 수 없습니다.

Let's Encrypt를 통해 인증서를 발급받고 나면 할 수 있는 내용은 아래와 같습니다.

  1. 방화벽의 웹 인증서를 사설 인증서 -> Let's Encrypt로 발급받은 공인 인증서로 변경함으로서 웹 UI 접근 시 발생되는 보안 경고창 제거 가능
  2. FortiClient를 통한 SSL VPN 접속 시, 사설 인증서 사용으로 인해 사용자 연결 단계 40%에서 표출되는 신뢰할 수 없는 인증서 팝업 제거 가능
  3. HTTPS -> HTTP 리버스 프록시 구성을 통해 내부 서버에 대한 HTTP (비암호화) 통신을 HTTPS로 암호화 가능

 

그럼, 아래 과정을 통해 Let's Encrypt를 통해 인증서를 발급받고, 실제로 활용하는 방법에 대해서 다루도록 하겠습니다.

 

1. Let's Encrypt를 통해 FortiGate에서 인증서 발급

A. GUI에서 인증서 창 활성화를 위해 System -> Feature Visibility -> Certificates, Load Balance 활성화 후 "Apply' 클릭

B. System -> Certificates -> Create/Import -> Certificate 클릭

 

C. Use Let's Encrypt 클릭

D. 아래 정보들을 적당히 입력한 후, Create 버튼을 클릭합니다.

1) Certificate name: 인증서 이름을 자유롭게 입력

2) Domain: 도메인 주소 입력 (A 레코드 등록 필요) ex) abc.co.kr

3) Email: 관리 이메일 입력 필요 (적당히 입력)

 

E. ACME 인터페이스는 외부 인터페이스 (wan) 으로 설정한 뒤 대기

F. 문제가 없을 경우 시간이 흐른 뒤 정상적으로 생성되었다는 메세지 표출

2. 발급받은 인증서를 FortiGate에 적용

1) SSL VPN에 적용

  • VPN -> SSL-VPN Settings -> Server Certificate를 발급받은 인증서로 변경 -> Apply 버튼을 눌러 적용

 

2) 웹 GUI에 적용

  • System -> Settings -> HTTPS server certificate를 발급받은 인증서로 변경 -> Apply 버튼을 눌러 적용

3. 적용 테스트

1) SSL VPN

  • FortiClient의 연결 설정 창에서 IP 대신 방화벽과 매핑한 도메인 정보를 입력한 뒤, 40%에서 보안 경고창이 표출되는지 확인

2) 관리 웹 UI 접속

  • 매핑한 도메인을 통해 ex)https://abc.co.kr 접속 시도한 후 보안 경고창이 표출되는지 확인

 

*** HTTPS (443) 포트를 포트포워딩으로 사용하고 있을 경우

HTTP (80) 또는 HTTPS (443) 포트를 ACME 데몬이 사용하는데, 외부 HTTPS (443) 포트에 대한 VIP 객체가 있을 경우 즉시 HTTP (80) 포트로 ACME 데몬이 시도하게 하기 위해 아래 설정을 진행합니다.

 

A. System -> Settings -> Telnet port를 443으로 변경 

 

위 과정을 거치게 되면 ACME 데몬은 HTTPS (443) 포트 대신 HTTP (80) 포트로 즉시 시도하게 됩니다.

참고로 텔넷 포트로 설정한 이유는 보안 상의 이유로 잘 쓰지 않는 프로토콜이기 때문입니다.

 

참고 링크

https://docs.fortinet.com/document/fortigate/7.0.0/new-features/822087/acme-certificate-support

https://community.fortinet.com/t5/FortiGate/Technical-Tip-Let-s-Encrypt-failing-to-provision-due-to-VIP/ta-p/265830

+ Recent posts