보안이 꽤 취약하여 사용하지 않는 게 추천되는 PPTP를 대신할 대체 VPN이 많이 있는데, 그 중 하나인 SSTP 서버를 구축 및 올바르게 접속하는 과정을 정리한 글입니다.


라즈베리파이에서 SoftEther VPN Server 를 이용해서 SSTP를 포함한 여러 VPN 서버를 구현하려다 삽질한 뒤 나온 결과를 정리하기 위해 따로 글까지 쓰게 됐습니다. 관련 상황에서 자료가 부족한 것 같더군요.







[SSTP 서버 초기 설정]



우선 목표 서버 컴퓨터에서 SoftEther 의 vpnserver 가 이미 돌아가고 있는 상황에서 (어디서 돌아가고 있는지는 상관 없습니다. 리눅스 계열이든 윈도우든 서버 프로세스가 실행되고 있으면 됩니다) SoftEther VPN Server Manager 을 이용해 해당 SSTP 서버에 접속합니다. 아래는 Manager 중 윈도우 GUI 버전을 통한 설명을 하고 있습니다. 설정은 리모트 서버나 현재 서버 자체(윈도우 서버의 경우)나 상관 없이 이 매니저를 통해 조작하면 될 것으로 보입니다.



1. 해당 서버에 접속한 '초기 화면'입니다. 'Create a Virtual Hub' 버튼으로 Virtual Hub을 만든 후, 'Manage Virtual Hub' 에 들어가서 접속에 필요한 자신의 계정을 만듭니다.




2. 위 1의 초기 화면에서 'OpenVPN/MS-SSTP Setting' 을 클릭한 뒤, 'Enable MS-SSTP VPN Clone Server Function' 에 체크합니다.




3. 위 1의 초기 화면에서 'Local Bridge Settings' 버튼을 클릭한 후, 'Select the Virtual Hub to bridge.' 에서 아까 만든 'Virtual Hub'을 선택한 뒤 'Create Local Bridge' 버튼을 누릅니다.


이 작업이 없으면 나중에 SoftEther를 서버로 하는 vpn에 연결 시도시, '연결 완료(로그인 완료)'까지 다 뜨고 나서 갑자기 연결 불가 메세지가 뜨는 현상이 일어날 수 있습니다.

(해당 상황에서 로그에 남는 에러 메세지는 다음과 같습니다 : Acquiring an IP address from the DHCP server failed. To accept a PPP session, you need to have a DHCP server. Make sure that a DHCP server is working normally in the Ethernet segment which the Virtual Hub belongs to. If you do not have a DHCP server, you can use the Virtual DHCP function of the SecureNAT on the Virtual Hub instead.)




4. 위 1의 초기 화면에서 다시 'Encryption and Network' 를 클릭한 후, 'New' 버튼을 클릭합니다.




5. Self-Signed Certificate 타입 선택 후, Common Name (CN)에 SSTP 서버가 돌아가고 있는 서버의 풀 도메인 주소(FQDN)를 넣습니다. 기타 다른 정보는 원하면 채워넣습니다. 그 후, 계속 OK를 누르면서 정보 저장 및 초기 화면까지 빠져나옵니다.


(올바른 CN 예 : abc.my_domain.net, www.my_domain.net)

(※ 잘못된 CN 예 (hostname이 없는 경우) : my_domain.net)








[(클라이언트에서) SSTP 서버에 연결]



클라이언트에서 SSTP로 SSTP 서버에 접속하기 위해서는 해당 클라이언트 컴퓨터에 SSTP 서버의 인증서가 필요합니다. 아래의 과정 대부분은 그 인증서를 접속하고자 하는 클라이언트에 적용하는 방법입니다.



1. SSTP에 접속할 클라이언트 컴퓨터에서 위의 Server Manager 를 설치한 후, 'Encryption and Network' 에서 'Export' 버튼을 클릭합니다.




2. 'Save as X509 Certificate (.CER) and Private Key File (.KEY)' 를 선택하고 OK를 눌러 '.crt' 파일을 저장합니다.

'.crt' 파일 저장 창 다음에는 '.key' 파일을 저장하는 화면도 이어서 나오는데 쓸 일은 없으니 저장을 안 하거나 지워주시면 됩니다.




3. '시작 - 실행 - mmc' 로 'Microsoft Management Console'을 실행합니다.




4. '파일 - 스냅인 추가/제거'창을 열고, '인증서'를 선택한 다음 '추가(A)' 버튼을 누릅니다.




5. 이어서 뜨는 팝업 창에서 '컴퓨터 계정', 그 다음에는 '로컬 컴퓨터: (이 콘솔이 실행되고 있는 컴퓨터)(L)' 를 선택하고 다음으로 넘어갑니다.




6. 이렇게 '인증서(로컬 컴퓨터)'의 추가를 확인하고 '확인' 버튼을 누릅니다.




7. '콘솔 루트 - 인증서(로컬 컴퓨터) - 신뢰할 수 있는 루트 인증 기관 - 인증서' 폴더를 마우스로 클릭합니다. 그 후, '동작 - 모든 작업 - 가져오기' 를 선택해서 방금 전에 저장했던 인증서 '.crt'를 가져옵니다.




8. 정상적으로 추가되었는지 확인합니다. '발급 대상', '발급자'가 모두 똑같이 아까 그 인증서에 있는 SSTP 서버의 도메인 주소(FQDN)로 되어 있어야 합니다.




9. 접속할 때, SSTP 클라이언트에서 '서버 주소' 역시 위 인증서에 적힌 SSTP 서버의 FQDN와 동일하게 해서 접속합니다.




10. 정상적으로 접속되는 것을 확인합니다.









※ SSTP 연결 시도시 아래와 같은 에러가 나타나는 경우는, 위의 과정에서 생략하거나 잘못 수행하는 부분이 있을 때 발생합니다. 다시 한 번 확인해주시기 바랍니다.


'인증서의 CN 이름이 전달된 값과 일치하지 않습니다. (The certificate's CN name does not match the passed value.)'

'인증서 체인은 처리되었지만, 신뢰 공급자에 의해 신뢰되지 않는 루트 인증서에서 중지되었습니다. (A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.)'




설정

트랙백

댓글