[[PageOutline]] == 【Environment:環境】 == * server: * OS:ubuntu 8.04。 * client: * 未定: == 【Download:下載】 == * http://openvpn.net/release/openvpn-2.0.9.tar.gz :下載檔案 * http://openvpn.net/index.php/open-source/downloads.html :原始連結 {{{ wget http://openvpn.net/release/openvpn-2.0.9.tar.gz tar zxvf openvpn-2.0.9.tar.gz }}} == 【Install:安裝】 == * 準備 OpenSSL、LZO、Pthread library。 {{{ sudo apt-get install liblzo2-dev openssl libpthread-stubs0-dev libcurl4-openssl-dev }}} * 安裝 {{{ cd openvpn-2.0.9 ./configure make sudo make install }}} * 測試 {{{ make check }}} * 測試加密 {{{ ./openvpn --genkey --secret key ./openvpn --test-crypto --secret key }}} * 測試 SSL/TLS 協定,請將兩行指令在不同的 terminal 內執行。 {{{ ./openvpn --config sample-config-files/loopback-client ./openvpn --config sample-config-files/loopback-server }}} == 【Generate CA/keys:產生 CA certificate 、 server/client keys】 == * 預設安裝目錄為 {{{ ~/openvpn-2.0.9 }}} * 進入產生認證所需的 script 的 easy-rsa 目錄 {{{ cd ~/openvpn-2.0.9/easy-rsa }}} * 編輯 vars 檔案 {{{ vim vars }}} * vars 內容 {{{ export KEY_DIR=$D/keys 存放 key 的目錄 export KEY_SIZE=1024 key 長度 export KEY_COUNTRY=KG 剩下請自行填入,請「不要」讓這些設定「空白」 export KEY_PROVINCE=NA export KEY_CITY=BISHKEK export KEY_ORG="OpenVPN-TEST" export KEY_EMAIL="me@myhost.mydomain" }}} * 將 vars 內容加至環境變數中。 {{{ .vars 官網教學用這個指令 source vars 我用這個 }}} * 產生主要的 ca {{{ ./clean-all 如果你之前有產生過 key ,想要移除之前的 key,請先執行些指令 ./build-ca }}} * 會產生以下目錄及檔案: * 產生:keys/ * 產生:keys/ca.crt * 產生:keys/ca.key * 產生:keys/index.txt * 產生:keys/serial * 產生 server 的 ca 及 key {{{ ./build-key-server server }}} * 會產生以下目錄及檔案: * 產生:keys/01.pem * 產生:keys/index.txt * 將原本的 index.txt → index.txt.old * 更新:keys/serial * 將原本的 serial → serial.old * 產生:keys/server.crt * 產生:keys/server.csr * 產生:keys/server.key * 產生 client 的 ca 及 key {{{ ./build-key client1 }}} * 會產生以下目錄及檔案: * 產生:02.pem * 產生:client1.crt * 產生:index.txt * 將原本的 index.txt → index.txt.old * 產生:index.txt.attr * 將原本的 serial → serial.old * 產生:serial * 產生:client1.csr * 產生:client1.key * 產生 [wiki:wade/openVPN/diffie_hellma Diffie Hellman] 參數 {{{ ./build-dh }}} * 結果:在 keys 目錄下所有檔案對照。 || Filename || Needed By || Purpose || Secret || || ca.crt || server + all clients || Root CA certificate || NO || || ca.key || key signing machine only || Root CA key || YES || || dh{n}.pem || server only || Diffie Hellman parameters || NO || || server.crt || server only || Server Certificate || NO || || server.key || server only || Server Key || YES || || client1.key || client1 only || Client1 Key || YES || || client2.crt || client2 only || Client2 Certificate || NO || || client2.key || client2 only || Client2 Key || YES || || client3.crt || client3 only || Client3 Certificate || NO || || client3.key || client3 only || Client3 Key || YES || == 【Creating configureation files:設定】 == Sample openVPN 2.0 configuration file * server: * ./sample-config-files/server.conf * client: * ./sample-config-files/client.conf == 【指令】 == ~/openvpn-2.0.9/easy-rsa * clean-all:將目錄底下存放 key 的目錄整個移除,預設 key 目錄為 :~/openvpn-2.0.9/easy-rsa/key == 【Reference:參考資料】 == * http://openvpn.net/ * http://openvpn.net/man.html * http://ying.homedns.org/wp/2007/05/227/