본문 바로가기
홍보,좋은팁,등등

OpenVPN 테스트용 서버 간단 구축

by Joseph.Lee 2017. 3. 21.

간편하고 빠르게 VPN이 필요한 경우가 있어서 OpenVPN을 사용하였습니다.


Self Signed Certificate부터...


인증서 발급 관련해서 좋은글.

https://www.lesstif.com/pages/viewpage.action?pageId=6979614


윈도우 OpenSSL 설치 방법

http://zetawiki.com/wiki/%EC%9C%88%EB%8F%84%EC%9A%B0_openssl_%EC%84%A4%EC%B9%98



1. OpenSSL을 설치합니다.

http://code.google.com/p/openssl-for-windows/downloads/list

그냥 다운받아서 압축풀면 됩니다.


(testca_openssl.conf와 server_openssl.conf은 압축파일을 사용해 주세요.)

OpenVPN간단설치.zip


* 참고

아래 openssl 명령은 OpenSSL bin디렉터리를 미리 PATH시스템 변수에 등록한 이후로 가정합니다.

PATH에 등록하지 않았다면 openssl을 openssl.exe의 경로를 모두 넣어주세요.

(e.g. C:\openssl\bin\openssl.exe)


2. CA인증서용 키파일을 생성합니다.

 D:\TEST_CA> openssl genrsa -out testca.key 2048

WARNING: can't open config file: c:/usr/local/ssl/openssl.cnf

Loading 'screen' into random state - done

Generating RSA private key, 2048 bit long modulus

...........................+++

............................+++

unable to write 'random state'

e is 65537 (0x10001)


3. CA인증서 발급요청파일을 생성합니다.

 D:\TEST_CA> openssl req -new -key testca.key -out testca.csr -config testca_openssl.conf

Loading 'screen' into random state - done

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [KR]: KR

Organization Name (eg, company) [TEST CA]: TEST CA

Common Name (eg, your name or your servers hostname) [Self Signed CA]: TEST CA 


4. CA인증서를 Self Sign으로 발급합니다.

 D:\TEST_CA> openssl x509 -req -days 3650 -extensions v3_ca -set_serial 1 -in testca.csr -signkey testca.key -out testca.crt -extfile testca_openssl.conf

Loading 'screen' into random state - done

Signature ok

subject=/C=KR/O=TEST CA/CN=TEST CA

Getting Private key

unable to write 'random state'


5. 테스트 서버 인증서용 키파일을 생성합니다.

 D:\TEST_CA> openssl genrsa -out server.key 2048

Loading 'screen' into random state - done

Generating RSA private key, 2048 bit long modulus

...........................+++

............................+++

unable to write 'random state'

e is 65537 (0x10001)


6. 테스트 서버 인증서 발급요청파일을 생성합니다.

 D:\TEST_CA> openssl req -new -key server.key -out server.csr -config server_openssl.conf

oading 'screen' into random state - done

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [KR]:KR

Organization Name (eg, company) []:TEST

Organizational Unit Name (eg, section) []:TEST

Common Name (eg, your name or your servers hostname) []:123.123.123.123 (IP또는 도메인 입력)


7. 테스트 서버 인증서를 발급합니다.

 D:\TEST_CA> openssl x509 -req -days 1825 -extensions v3_user -in server.csr -CA testca.crt -CAcreateserial -CAkey testca.key -out server.crt  -extfile server_openssl.conf

Loading 'screen' into random state - done

Signature ok

subject=/C=KR/O=TEST/OU=TEST/CN=123.123.123.123

Getting CA Private Key

unable to write 'random state'



자! 몇차례 명령을 거쳐 드디어 인증서가 만들어 졌군요...

(이렇게 만든 인증서를 실제 서비스에 사용하시면 안됩니다.

클라이언트쪽에는 지금 만든 CA인증서가 없기 때문에 인증서를 검증 할 수 없어 보안 오류를 뱉습니다.

실제 서비스에 이용하려면 공인된 CA 업체에서 인증서를 발급받아야 합니다.)

우리는 OpenVPN 파일 자체에 CA인증서를 넣을 것이므로 상관 없습니다.


8. OpenVPN을 다운받습니다.

Server/Client 동일합니다.

https://openvpn.net/index.php/download/community-downloads.html


설치 디렉터리는 기본 설치시 C:\Program Files\OpenVPN 이 됩니다.


이 안에 서버에는 압축파일에 있는 server.ovpn을, 클라이언트에는 client.ovpn을 사용할 겁니다.


일단... dh(Diffie hellman parameter)파일을 생성해야 합니다.

 > openssl dhparam -out dh2048.pem 2048

......

이 명령을 치면 dh파일(dh2048.pem)파일이 생성되는데

컴퓨터 성능과 운좋으면 수십 초, 아니면 수 분이 걸릴 수 있습니다.


server.ovpn / client.ovpn동일하게 <ca>와 </ca>안에 위에서 만든 testca.crt 의 내용을 넣습니다.

(메모장으로 열면 됩니다.)


client.ovpn에서 remote에는

remote (서버IP또는도메인) (서버포트)

이렇게 수정하고


server.ovpn에서 <cert>와 </cert>사이, 그리고 <key>와 </key>사이에 server.crt와 server.key파일의 내용을 각각 넣습니다.


그리고 server.ovpn에

auth-user-pass-verify "C:\\Program Files\\OpenVPN\\config\\auth.exe" via-env

이런 내용이 있는데 C:\\Program Files\\OpenVPN\\config\\auth.exe 는 아이디와 비밀번호를 인증하는

프로그램의 경로입니다.


auth.exe도 압축파일에 포함되어 있으며 c로 작성된 소스도 포함되어 있습니다.

아이디 비밀번호 정보는

C:\openvpn_test_auth.txt 에 한줄씩 username:password 포멧으로 입력하시면 됩니다.


이제 server.ovpn또는 client.ovpn을 C:\Program Files\OpenVPN\config\ 에 넣습니다.


바탕화면에서 "OpenVPN GUI"을 우클릭->"관리자 권한으로 실행" 합니다.

(호환성 탭에서 '관리자 권한으로 실행'을 체크해놓으면 편합니다.)


그리고


사용하시면 됩니다!


(방화벽 설정은 스스로 필요한 경우 사용하세요~)

반응형

댓글