안녕하세요~ 레이군 입니다.
오~랜만에 설정기로 돌아왔습니다.
오늘 진행해볼 내용은, 바로 Nginx Proxy Manager(이하 NPM) 애드온을 활용한 인증서 발급 및 설정입니다.
예전에도 관련하여 다룬적이 있지만, 이번시간은 조금 다른내용 입니다.
그것은 바로, DNS Challenge 를 활용한 인증서 발급 이거든요.
NPM에서 인증서를 발급받는건, 보통 프록시 호스트를 생성할때 SSL 탭의 Request a new SSL Certificate 항목으로
해당 프록시 주소 별로 인증서를 받아옵니다.
이 방식은 HTTP챌린지 방식인데, 이걸 하려면 80포트가 Public 으로 열려있어야 합니다.
일부 통신사(아마도...LG?) 는 80포트를 ISP단에서 막아버리기 때문에
아무리 공유기에서 80포트를 열더라도 NPM에서 인증서 발급을 하는 과정에서 문제가 생깁니다.
이럴때 할 수 있는 방법이 바로 DNS 챌린지 방식입니다.
이 방법은 조금 더 복잡하지만, 장점 2가지가 있습니다.
그중 첫번째는, 바로 80포트의 열림 유무와 관계 없이 인증서 발급이 가능하다는 것이고
두번째는 와일드카드 인증서를 발급할 수 있다는 것입니다.
와일드카드... 바로 * 표시죠.
이건 어떤 문자도 대응하는 것이기 때문에 다양한 호스트를 쓰는 경우 매우 유리합니다.
저같은 경우는 Nginx 관리용, 3D프린터용, portainer, HA, 서브HA등...
몇가지 호스트를 쓰고있는데, HTTP 챌린지 방식은 각 호스트마다 인증서를 하나씩 발급받아야 합니다.
즉, a.DNS.duckdns.org, b.DNS.duckdns.org, c.DNS.duckdns.org, DNS.duckdns.org 등...
각각 접속 주소마다 인증서를 새로 생성해야 합니다.
하지만 와일드카드 방식이라면 얘기가 다르죠.
a.DNS나 b.DNS나 abc.DNS나... 어떤 주소던 결국
*.DNS.duckdns.org 라는 주소로 발급받은 인증서가 있다면 만사 OK 입니다.
아, 물론 앞에 서브도메인이 없이 DNS.duckdns.org 도 그냥 되면 좋겠지만... 이건 안 되더라구요.
그래서 인증서를 *.DNS.duckdns.org, DNS.duckdns.org 이렇게 2개만 받으면 모두 다 됩니다.
설명이 길었네요. 이제 한번 설정해 볼까요?
먼저 duckdns.org 에 접속하셔서 토큰을 확인해 주세요.
duckdns.org 가 무엇인가, 어떻게 설정하는가 하는 부분은...음..... 넘어가도 되죠?
혹시 궁금하시면 네이버가 잘 알려줄거예요...!

자 여기서 우리가 확인할건, 생성한 domain 주소와 token 부분 입니다.
당연히 current ip가 댁 내에 들어오는 인터넷망의 공인IP주소가 맞는지도 확인 하셔야 합니다.
(확인방법은, 인터넷창 열고 ipconfig.kr 접속하시면 빨간색으로 IP address가 나오는데 이게 공인IP 입니다)
전 테스트용 도메인으로 smarthome-edu 라는 이름을 만들었습니다.
그러면 제가 사용할 전체 도메인 주소는 smarthome-edu.duckdns.org 가 되겠죠.
NPM에 접속해 주세요.
NPM의 설치 및 초기설정은....어..... 이것도 네이버가 잘 알려줄꺼예요...?

상단의 SSL Certificates 탭으로 이동하여
Add SSL Certificate 를 눌러주세요.

도메인 네임 부분에 본인의 *.도메인, 도메인 이렇게 넣어주세요.
저는 smarthome-edu.duckdns.org 이므로
*.smarthome-edu.duckdns.org, smarthome-edu.duckdns.org
이렇게 2개를 넣겠습니다.
하나의 주소를 완성하면서 엔터를 치면, 위와 같이 회색 객체로 생성될거예요.
둘 다 저 모습이 되면 정상입니다.
이메일 주소는...적당히 넣어주시구요
그리고 Use a DNS Challenge 항목을 활성화 해주시고
DNS Provider 에서 DuckDNS를 선택해 줍니다.
물론 다른 DNS공급자를 사용한다면, 해당 공급자(가령 CloudFlare라던가) 를 선택하시면 됩니다.
설정 방법은 공급자 마다 조금씩 다르니 이 부분은 구글에 검색해주세요...?

DuckDNS 로 선택하면, dns_duckdns_token=your-duckdns-token 이라는 문구가 보일겁니다.
여기에서 your-duckdns-token 부분을 ->> duckdns.org 사이트에서 확인한 token 값으로 넣어주시면 됩니다.
그리고 아래 사용권계약에 동의하시고, Save 를 해주세요.

약간의 시간이 소요됩니다.

정상적으로 인증서 발급이 완료 되었습니다.
포스팅을 위해 작업하면서 확인해보니, duckdns.org 에서 도메인을 생성하자 마자 시도하면 잘 안되네요.
만약 이제 막 시작하는 단계라면, 도메인 생성 후 5~10분 정도만 여유를 주고 진행해 주세요.
발급이 완료 되었으니 HA접속을 위해 프록시 호스트를 설정해 봅시다.

상단의 Hosts 탭에 Proxy Hosts로 이동합니다.
아무것도 없다면 중앙, 혹시 다른게 설정되어 있다면 우측 상단의 Add Proxy Host를 눌러주세요.

도메인 네임 항목엔 사용할 도메인 주소를 입력해 주세요.
예시는 smarthome-edu.duckdns.org 로 입력되어 있네요. 물론 다른 서브 도메인을 붙여도 됩니다.
ha.smarthome-edu.duckdns.org 이런식으로요.
Forward Hostname/IP는 HA가 설치된 서버의 IP를 넣어주세요.
Forward Prot는 HA용이니까 기본값인 8123을 넣어주시고
Websockets Support를 반드시 활성화 하셔야 합니다.
이 화면을 보면 Nginx의 동작 개념을 알 수 있죠.
smarthome-edu.duckdns.org 라는 사이트로 접속 시도가 오면 -> 192.168.0.201 이라는 내부 주소로 넘기고
이때 포트는 8123 으로 연결해 줍니다. 이때 웹소켓을 지원하는 상태로 포워딩 해주는거죠.

그리고 SSL 탭으로 이동하시고
SSL 인증서 선택 항목을 클릭하면 좀전에 생성했던 인증서 이름이 보일겁니다.

해당 인증서를 선택하고, Save를 눌러주세요.
그리고 HA의 configuration.yaml 파일을 에디트 해주셔야 합니다.
에디트 방법...어..음...... 마찬가지로 네이버나 구글에게....

http: 항목이 없다면 생성 해주시면 되고, 이미 존재한다면
그 아래 내용만 넣어주시면 됩니다.
http:
use_x_forwarded_for: true
trusted_proxies:
- 172.30.33.0/24
트러스트 프록시 부분에 입력된 IP는 HA의 애드온 방식으로 NPM을 설정했을때 대응할 수 있는 값이며
혹시 별도로 Nginx를 돌리는 경우 해당 서버의 IP주소가 들어가야 합니다.
이 트러스트 프록시 부분이 정확히 설정되지 않으면, 외부주소로 접속할때 HA에서 거부하게 됩니다.
컨피그 파일을 수정했으니 당연히 HA는 재시작을 해주셔야 적용됩니다.
재시작이 완료 되었다면, 이제 웹 브라우저에 주소를 넣고 들어가 보세요.

정상적으로 로그인 창이 나오나요?
축하합니다. 성공적으로 와일드카드 인증서 발급 / 적용이 완료 되었습니다.
----------------------------- 추 가 설 정 -----------------------------
위 내용까지만 진행하면 HTTPS 로 접속이 가능하긴 합니다만...
일부 구성요소 사용을 위해 HA의 접속용 주소를 입력해 주는게 좋습니다.

좌측 하단의 프로필 -> 고급모드 를 활성화 해주시고

설정 - 시스템 - 네트워크 항목으로 이동해서

자동 설정된 부분을 해제하고
인터넷 부분엔 설정한 https://xxxx.duckdns.org 주소를 입력하고
로컬 네트워크 부분엔 http://IP:8123 주소를 넣어주세요.
인터넷은 https, 로컬은 http 인 점을 유의하셔야 합니다.
이 부분을 설정하지 않으면, ST통합구성요소등을 설정할때
웹훅URL 지정되는게 내부주소로 되면서 문제가 발생하더라구요..
자 오늘 내용은 여기까지!
그럼 다음에 또 올께요~
'SmartHome. IoT > SmartHome 응용' 카테고리의 다른 글
HA의 애드온 / 통합구성요소에 대한 이해. (1) | 2022.11.23 |
---|---|
[HA]2022.10의 새기능, 서브뷰(Subview) 사용해보기. (0) | 2022.10.06 |
드디어.....이 기능이 추가됩니다...! 자동화의 혁명...feat.2022.09 (0) | 2022.09.07 |
HA에서의 Local, Cloud, Polling, Push. (0) | 2022.07.11 |
Zigbee2MQTT 설치 최신판(feat. sonoff zigbee 3.0) (4) | 2022.06.27 |