UniFi - 맥 OSX 키체인 어시스턴트와 OpenSSL을 사용하여 컨트롤러 커스텀 SSL 사용하기¶
download at 2016-11-27T04:58:28Z origin
Overview¶
이 문서는 사용자가 사파리 웹 브라우저에서의 웹소켓 에러 이슈를 우회하는 방법에 대하여 서술합니다.
이슈의 원인은 기본 SSL 인증서를 신뢰하지 않는 차원을 넘어선 문제입니다. (인증서 신뢰하지 않는 문제 단독으로는 이 이슈가 발생하지 않습니다.) 자신 고유의 인증서 (CA)를 생성하고 기본 인증서를 새로운 인증서로 교체한다면 해당 웹소켓 에러를 우회할 수 있습니다.
시작하기 전에: OpenSSL과 맥 OSX가 구동하고 있는 컴퓨터가 필요합니다.
간단히 하면, 다음의 과정을 거치게 됩니다:
- 인증서를 생성합니다.
- 생성한 인증서에 서명합니다.
- 인증서와 개인키를 내보냅니다.
- 인증서데이터를 파일로 생성합니다.
- 해당 인증서 파일을 라우터에 업로드하고 기본 인증서를 생성한 인증서로 교체합니다.
Steps¶
이제, 각 단계를 상세하게 살펴보겠습니다:
1. 인증서를 생성
키체인 어시스턴트를 인증서 생성에 사용합니다. OpenSSL가 확인 할 것이지만, OS는 해당 CA를 자동으로 신뢰하게 하고 싶습니다.
- 키체인 어시스턴트를 실행합니다.(Applications > Utilities > Keychain Assistant)
- 메뉴에서 "Certificate Assistant" 메뉴를 선택하고 "Create a Certificate Authority..."를 선택합니다.
- 페이지에서 요구사항을 입력합니다. a) CA이름을 설정합니다. (이름을 기억하세요) b) 인증 타입(Identity Type) = Self Signed Root CA (기본값 입니다.), c) 사용자 인증(User Certificate) = SSL Server d) "Let me override defaults" 를 체크합니다. e) (선택) "Make this CA the default" 를 체크해제 합니다. f) (선택) "Email from" 필드 값을 본인의 이메일로 변경합니다. g) "Continue"를 선택합니다.
- 첫 "Create Information" 페이지에서 a) Serial Number = 1 b) Validity Period (days) = 3650 으로 설정합니다. (이 값을 원한느 값으로 설정할 수 있습니다. 요휴 기간이 지난 이후에는 다시 수행해야합니다.) c) 선택사항: "Create a CA web site"를 체크하고, 장소를 설정합니다. d) "Sign your invitation" 를 체크 해제합니다. e) "Continue" 를 선택합니다.
- 두번 째 "Create Information" 페이지에서 a) 요청하는 상세 정보를 입력하고, 다음 페이지로 이동합니다.
- "Key Usage Extension for this CA" 페이지에서 a) 값을 수정하지 않고 다음으로 이동힙니다.
- "Key Usage Extension for this CA" 페이지에서 a) 값을 수정하지 않고 다음으로 이동힙니다.
- "Key Usage Extension for Users of this CA" 페이지에서 a) 값을 수정하지 않고 다음으로 이동힙니다.
- "Extended Key Usage Extension for this CA" 페이지에서 a) 값을 수정하지 않고 다음으로 이동힙니다.
- "Extended Key Usage Extension for Users of this CA" 페이지에서 a) 값을 수정하지 않고 다음으로 이동힙니다.
- "Basic Constraints Extension for this CA" 페이지에서 a) 값을 수정하지 않고 다음으로 이동힙니다.
- "Basic Constraints Extension for users of this CA" 페이지에서 a) 값을 수정하지 않고 다음으로 이동힙니다.
- "Subject Alternate Name Extension for This CA" 페이지에서 a) 값을 수정하지 않고 다음으로 이동힙니다.
- "Subject Alternate Name Extension for Users of This CA" 페이지에서 a) 값을 수정하지 않고 다음으로 이동힙니다.
- "Specify a Location Certificate" 페이지에서 a) 선택사항: Keychain (꼭 기억하세요) 의 위치를 변경합니다. b) "On this machine, trust certificates signed by this CA" 를 체크합니다. c) Create를 선택합니다.
2. CA가 생성한 인증서를 생성합니다.
키체인 엑세스에서...
- CA에서 저장한 키체인을 찾아서 개인키를 찾습니다. (3개의 동일한 이름을 가진 아이템이 존재합니다. 인증서, 공개키, 개인키)
- "Private key"에 오른쪽을 클릭하여 "Create a certificate with..." 를 클릭합니다.
- "Create your Certificate" 페이지에서 a) 이름을 명명합니다. 라우터의 호스트 네임 등을 추천합니다. b) Identity Type = "Lead" c) Certificate Type = "SSL Server" d) "Let me override defaults"를 체크합니다. e) continue 클릭
- "Certificate Information" 페이지에서 a) Serial number = 1 b) Validity Period (days) = 365 (원하는 기간만큼 설정할 수 있지만 유효기간이 지나면 다시 생성해야합니다) c) continue 클릭
- second "Create Information" 페이지에서
- 요청하는 상세 정보를 입력하고, 다음 페이지로 이동합니다.
- "Key Usage Extension" 페이지에서 a) 값을 수정하지 않고 다음으로 이동힙니다.
- "Extended Key Usage Extension" 페이지에서 a) "SSL Server Authentication" 체크 b) 다른 모든 옵션은 체크 해제
- "Basic Constraints Extension" 페이지에서 a) 값을 수정하지 않고 다음으로 이동힙니다.
- "Subject Alternate Name Extension" 페이지에서 a) rfc822Name 값 삭제 b) URI 값 삭제 c) dNSName = GUI에서 확인 한 url/hostname (예) ubnt.local d) iPAddress = GUI의 IP 주소
- "Specify a Location Certificate" 페이지에서
- 선택사항: Keychain (꼭 기억하세요) 의 위치를 변경합니다.
- Create 선택
3. 인증서와 개인키 내보내기
- 인증서를 저장한 키체인으로 이동하여 개인키와 인증서를 찾습니다.
- 인증서에 오른쪽 클릭하여 내보내기 선택 a) 파일로 저장 (파일명과 장소를 기억합니다)
- 개인키에 오른쪽 클릭하여 내보내기 선택 a) 파일로 저장 (파일명과 장소를 기억합니다)
4. 인증서 파일 준비하기
본 문서에서는 OpenSSL을 사용하였습니다. 다른 인증서는 다른 방법을 사용할 수도 있습니다.
커맨드라인 인터페이스의 지식이 있다고 가정합니다.
- 터미널을 실행합니다.
- 선택사항: 인증서와 개인키가 있는 경로로 이동합니다.
cd path_to_files
- 인증서 파일을 pem 파일로 변경합니다.
openssl x509 -inform der -in certificate.cer -out certificate.pem
개인키를 pem 파일로 변경합니다.
openssl pkcs12 -in privateKey.p12 -out privateKey.pem -nodes
두개의 파일을 하나로 병합합니다.
cat privateKey.pem certificate.pem > server.pem
5. 라우터에 인증서 업로드하기
터미널에서
라우터에 SSH로 접속합니다.
ssh router_ip_address -l your_user_name
라우터에 폴더를 생성하고, 적절한 권한을 부여합니다. (이 문서에서는 홈폴더를 사용합니다.)
cd /home sudo chown your_user_name your_user_name
새로운 터미널을 생성합니다.
새로운 터미널에서 라우터로 파일을 복사합니다.
scp server.pem your_user_name@router_ip_address:~/server.pem
이전 터미널에서 파일의 소유주를 변경합니다.
sudo chown www-data:www-data ~/server.pem
(선택) 이전 윈도우에서 기본 인증서를 백업합니다.
sudo cp /etc/lighttpd/server.pem ~/server.pem.backup
기존 인증서를 덮어쓸 수도 있습니다.
sudo cp ~/server.pem /etc/lighttpd/server.pem
새로운 인증서에 적절한 권한을 부여합니다.
sudo chmod 400 /etc/lighttpd/server.pem
lighttpd 를 재시작합니다.
sudo /usr/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf
- 테스트를 해봅니다!
도움이 되는 포스트:
http://community.ubnt.com/t5/EdgeMAX/Custom-SSL-Certificates/td-p/405628 http://community.ubnt.com/t5/EdgeMAX/Replacing-the-self-signed-SSL-certificates/td-p/381481 http://community.ubnt.com/t5/EdgeMAX/Problem-with-lighttpd-and-server-pem/td-p/771390 https://www.sslshopper.com/article-most-common-openssl-commands.html http://www.techrepublic.com/blog/apple-in-the-enterprise/create-your-own-ssl-ca-with-the-os-x-keychain/>