이 카테고리에도 몇번 글 적었던 대로 저는 NAS를 이용하고 있습니다.
집밖에서 이용할 수 있게 공유기에 유료 DDNS(no-ip 서비스)나 포트포워딩 설정도 마쳤구요. 항상 편리하게 이용중이죠.
근데, 이전부터 고민하던 '공유기 웹 관리화면과 NAS 웹 관리화면의 https:// 연결(이하 보안연결) 적용' 을 진행하려니 조금 예상을 벗어나는 일이 생기더군요.
결과적으론 해결을 봤지만, 그 과정 중 참고한 것들을 정리할까 합니다.
일단, 이전부터 공유기의 웹 설정화면은 보안연결로 이용하고 있었습니다.
물론 ASUS의 기본 인증서가 적용되어 있었기 때문에 브라우저에서 '신뢰할 수 없는 인증서' 경고는 떴는데, 무시하고 쓸수는 있으니까요.
근데 생각치도 못하게 NAS의 웹 관리화면에 보안연결을 적용하고, 이 인증서를 컴퓨터에 등록하니 문제가 발생했습니다.
제가 사용하고 있는 Synology NAS의 운영체제, DSM(DiskStation Manager)에는 자체적으로 SSL 보안인증서를 생성할 수 있는 기능이 있습니다.
그래서 이 기능을 사용해 인증서를 생성하고 웹 관리화면의 HTTPS 접속포트를 설정한 뒤, 컴퓨터에 NAS에서 생성한 인증서를 설치했습니다.
그러니 NAS 웹 관리화면은 보안연결시 예상대로 '신뢰할 수 있는 사이트'로 뜨는데,
같은 주소에 접속포트만 다른 공유기의 웹 관리화면이 피싱사이트 취급을 받기 시작하더군요.
그도 그럴게 컴퓨터에 설치한 인증서는 NAS에서 발급한 것인데, 공유기에는 주소만 같지 내용이 완전히 다른 인증서가 남아있으니까요.
즉, NAS에서 scv.nas.com 이라는 주소로 N 인증서를 발급했고, 저는 제 컴퓨터에 그 N 인증서를 설치했습니다.
scv.nas.com 이라는 주소로 보안연결이 이뤄질때는 NAS에서 발급한 N 인증서가 유효하게 된거죠.
근데 공유기의 웹 인터페이스 역시 scv.nas.com 이라는 주소를 씁니다만, 인증서의 내용이 A로 완전히 다릅니다.
브라우저 입장에서는 N 인증서에 적힌 scv.nas.com이라는 사이트의 보안접속만을 믿을 수 있는 상태인데,
공유기쪽은 주소는 같지만 A 인증서이니 'scv.nas.com을 흉내내는 사이트' 취급을 할 수 밖에 없는거죠.
이렇게 되니 공유기 웹 관리화면에 접근조차 할 수 없게 되어버리더군요.
대책을 생각하기 위해 일단 NAS 웹 관리화면을 http로 돌려놓았었습니다.
이게 일주일쯤 전.
그러다 전부터 계획했던 NAS 초기화 작업을 위해 어제오늘 작업중인데, 그러면서 시간이 좀 남아 인터넷 검색을 해보게 되었습니다.
그 결과, ASUS 공유기들에 개인이 가진 사설 SSL 인증서를 적용하는 방법이 잘 설명된 글이 있어서 그걸 따라했더니, 아주 잘 작동하네요.
ASUS 공유기들은 공식 펌웨어에선 제 경우처럼 사설 SSL 인증서를 적용할 수 없어, 모두 공유기에 Telnet이나 SSH로 접속해 생성해줘야 하는 모양.
아무튼 개운하게 문제가 해결되서 그 정리차 글을 적게 된겁니다.
들어가기에 앞서, 이 글에서는 Synology에서 생성한 인증서를 사용합니다.
꼭 여기서 생성한게 아니라도, 확장자 관계없이 파일을 열었을때 각각 '-----BEGIN CERTIFICATE-----' 와 '-----BEGIN RSA PRIVATE KEY-----' 로 시작하는 녀석들이 필요합니다.
저처럼 Synology NAS에서 생성한 인증서를 '인증서 내보내기' 로 다운로드 받으신 경우,
server 로 시작하는 두개(server.crt, server.key)의 파일을 쓰면 됩니다.
이 두개를 메모장 등으로 열어보면 어느 한개는 위 주석의 문자로 시작합니다. 필요할때 해당 파일 내용을 열어 사용하시면 됩니다.
저는 NAS에서 발급받은 인증서를 공유기의 웹서버에도 적용하려 하는 것입니다.
이렇게 하면 공유기의 웹 관리화면 보안연결시에도 NAS의 보안인증서를 사용해서, 브라우저를 속일(?) 수 있습니다.
어쨌든 NAS와 공유기의 웹 관리화면은 주소가 같고 포트번호만 다르게 운영하고 있기 때문에 어찌 보면 이렇게 해야 하기도 하구요.
참, 개인적으론 인증서의 확장자에 집착해서 어떤 인증서 파일을 적용해줘야 할지 감이 오지 않아 좀 고생을 했는데,
결국 확장자에 상관없이 해당 주석으로 시작하는 파일의 내용만 쓰면 되는거였습니다.
첫번째 글의 1번에 링크된 이 글에서 인증서에 관한 파일 확장자를 설명해주던데, 쓴 분이 확장자에 집착하지 말라고도 써놨더군요.
이 글 설명의 덕도 좀 많이 봤네요.
제가 사용중인 공유기는 ASUS의 RT-N66U.
적용된 펌웨어는 ASUS가 배포하는 공식 펌웨어로 일체의 가공을 하지 않았음을 밝힙니다.
아마 텔넷을 통해 공유기에 무언가 추가로 설치하셨다고 해도 안먹을 방법 같진 않습니다만, 일단 제 경우는 공식 펌웨어에서의 시도.
공식 펌웨어 이외의 환경에서 시도하시는 경우, 제 환경과 적용방법이 좀 다를 수 있습니다.
우선, 먼저 언급했지만 ASUS의 공유기는 웹 관리화면에서 사설 인증서를 업로드할 수 없습니다.
공유기에 직접 telnet/SSH로 접속하여, 인증서 파일을 생성해 적용해줘야 합니다.
그렇게 하기 위해선 공유기 웹 관리화면의 '관리 - 시스템' 에서 'Telnet 사용' 을 '예'로 바꾸고 적용을 눌러 Telnet 기능을 켜줘야 합니다.
이렇게 하면 윈도우, Mac 등 다양한 환경에서 공유기의 내부 리눅스 시스템에 접속할 수 있게 됩니다.
참고로, 커멘드 라인이라도 공유기의 서비스 관리는 물론 기기의 재부팅까지도 가능한 권한으로 로그인되니
지금같이 작업을 위해 필요할 때가 아니면 평소에는 Telnet 기능을 꺼두시는게 좋습니다.
아무튼 해보죠.
저는 Mac 터미널에 내장된 Telnet을 썼는데, 윈도우에서도 putty [다운로드 페이지] 등의 telnet 접속 프로그램을 사용하면 접속 가능합니다.
위와 같이 공유기의 내부 IP를 이용해 연결을 시도하고, 로그인 계정을 물으면 공유기 웹 관리자 화면 로그인시 사용하는 계정명/비밀번호를 동일하게 사용하시면 됩니다.
정상 접속될 경우 펌웨어 버전과 현재 시간이 표시됩니다.
그 다음엔 아래 방법을 쓰시면 됩니다.
How to upload SSL certificate to Asus router by rickygao
How to install custom SSL certificates on an ASUS RT-N66U running asuswrt-merlin by davidbalbert
같은 방법인데 첫번째 링크가 조금 더 상세하달까 저같이 잘 몰랐던 사람들을 배려한 느낌이더군요.
두번째 글도 비슷한 내용입니다만, 서로 상호보완되는 면이 있으니 페이지를 같이 열어놓고 서로 참고하며 작업하시길 추천드립니다.
P.S
2018.6.10 A.M 12:09분경 추가.
간만에 쓰려고 찾아오니 위 첫번째 링크가 죽어있네요. 두번째 링크 글이 해야되는 작업 그대로를 정리하고 있으니 두번째 글만 봐도 충분합니다.
///
큰 틀은, 공유기의 일부 설정을 바꿀때만 httpd 재구동시 인증서가 갱신되는 형태라..
1. 기존의 인증서를 삭제 & 삭제를 확인하고
2. 인증서 변경을 위해 설정을 바꾸고
3. 새로운 인증서 파일을 기기 내부에 생성하고
4. httpd를 재구동 & 생성된 인증서를 확인한 다음
5. 공유기까지 재구동
...하면 적용되는 과정.
절차를 따라하다 보면 공유기 내부 경로에 cat 명령어를 사용해 key.pem 과 cert.pem 파일을 생성하는데,
key.pem은 server.key (열었을 때 -----BEGIN RSA PRIVATE KEY----- 로 시작하는 파일),
cert.pem은 server.crt (열었을 때 -----BEGIN CERTIFICATE----- 로 시작하는 파일) 을 열어 그 내용을 붙혀넣으면 됩니다.
공유기 안으로 파일 전송을 할 수 없기 때문에 직접 기기 내부에 동일한 내용의 파일을 생성해 주는 작업.
cat 명령어를 사용해 인증서 내용을 붙혀넣고 나면 ctrl(Mac에서는 control) + D를 누르면 되구요. 같이 참고하시길.
잘 적용되면, 위와 같이 보안연결시 같은 발급자 명의의 인증서를 사용하게 됩니다.
그래서 PC에도 어느 한쪽의 인증서를 설치해주면, 양쪽 모두 신뢰할 수 있는 사이트로 뜨기 시작합니다.
혹시 NAS에서 인증서를 변경할 경우, 같은 방법으로 공유기에도 변경된 인증서를 적용해주면 되겠죠.
P.S
2016.3.16 P.M 2:59분 추가. 펌웨어 업그레이드를 했는데, 인증서는 유지되네요. 참고하시길. ///
이번 글은 여기까지.
연휴를 맞이해서 큰맘먹고 손대는 중인데, 단기간에 확실하게 해결을 봐서 참 좋네요.
혹시 저랑 비슷한 시도를 하려는 분이 있었다면 도움 되셨길 빕니다.