0%

在windows下利用EasyRSA3產生憑證

引言

在windows下使用easyrsa的方式跟其他作業系統有所不同,而最新的OpenVPN隨付安裝的EasyRSA3與先前版本的使用不太一樣,需要使用它內附的shell來進行操作,步驟如下:

(溫馨提示:以下示範環境是將OpenVPN安裝在C:\Program Files\OpenVPN,你如果安裝位置不同,以下提到的路徑需要做相應的調整)

安裝步驟

1. 到 C:\Program Files\OpenVPN\easy-rsa 內將vars.bat複製到外面(例如桌面)
2. 利用記事本、VSCode或是其他編輯器打開vars.bat,並針對以下部份做修正
裡面有些屬性可以修改:

set HOME=%ProgramFiles%\OpenVPN\easy-rsa
easy-rsa所在的路徑

set KEY_DIR=keys
設定產生金鑰檔的存放資料夾,預設為 keys (C:\OpenVPN\easy-rsa\keys)

set KEY_SIZE=4096
設定金鑰的加密位元長度,可設為1024/2048/3072/4096。長度越大產生金鑰的時間越長,但安全性也越高。

set KEY_COUNTRY=US 設定國碼
set KEY_PROVINCE=CA 設定州別/省份
set KEY_CITY=SanFrancisco 設定城市
set KEY_ORG=OpenVPN 設定公司/組織名稱
set KEY_EMAIL=mail@host.domain 設定管理者的郵件位址
set KEY_CN=changeme 設定CA金鑰的判別名稱,建立金鑰時不能重複。
set KEY_NAME=changeme 設定使用者名稱
set KEY_OU=changeme 設定部門名稱

其他可依照自己需求修改,我這邊是只有改這些

1
2
3
4
5
6
7
set KEY_COUNTRY=TW
set KEY_PROVINCE=TW
set KEY_CITY=Taipei
set KEY_ORG=MyGroup
set KEY_EMAIL=mail@mymail.com.tw
set KEY_CN=MyServer
set KEY_OU=Dept

3. 修改完之後將檔案覆蓋回原來的地方(C:\Program Files\OpenVPN\easy-rsa)
4. 以 系統管理員模式 開啟powershell 或 命令提示字元cmd,這邊以powershell示範

1
2
3
4
5
6
7
8
9
10
11
❯ cd "C:\Program Files\OpenVPN\easy-rsa"
❯ .\vars.bat
❯ .\EasyRSA-Start.bat

Welcome to the EasyRSA 3 Shell for Windows.
Easy-RSA 3 is available under a GNU GPLv2 license.

Invoke './easyrsa' to call the program. Without commands, help is displayed.

EasyRSA Shell
#

5. 進入到EasyRSA的shell後,這邊就跟其他系統的步驟差不多了

6. 初始化憑證產生目錄
./easyrsa init-pki

7. 產生ca憑證
./easyrsa build-ca nopass
要注意的是這邊會要你輸入ca的名稱,注意這名字不要跟後面重複到了

1
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:

8. 產生server端憑證
./easyrsa gen-req <server name> nopass
範例: ./easyrsa gen-req MyServer nopass
產生server端的憑證,可以自由換成喜歡的名字,但注意都不能跟ca或其他client名字重複
另外加上nopass是為了可以使用自動連線,如果想提昇安全性可以拿掉,如此會要求設定憑證密碼,在每次連線的時候都需要輸入。可避免憑證檔案外洩時仍能多個保護。

一樣這邊會問你憑證名稱,如果[]內跟你打的一樣,那直接按enter即可

1
Common Name (eg: your user, host, or server name) [MultipointServer]:

9. 簽署憑證
./easyrsa sign-req server <server name>
範例:./easyrsa sign-req server MyServer
這裡使用先前的ca憑證來簽發剛剛產生的server憑證,簽發後的憑證才能夠使用

這裡會詢問是否確認簽發,輸入yes按enter即可

1
2
Type the word 'yes' to continue, or any other input to abort.
Confirm request details:

10. 產生client端憑證
./easyrsa gen-req <client name> nopass
範例: ./easyrsa gen-req Client01 nopass
如同server憑證一樣,記得名稱不要重複,另外打算讓幾個client連線,就要做幾個client憑證

11. 簽署client憑證
./easyrsa sign-req client <server name>
範例:./easyrsa sign-req client Client01
如同server憑證一樣,差別是server換成client

12. 重複 第10~11步,直到所有的client憑證都製作完成

13. 產生ta.key
輸入exit跳出EasyRSA shell
cd "C:\Program Files\OpenVPN\bin" 進入openVPN主程式目錄
.\openvpn --genkey tls-auth ta.key 產生ta.key

14. [可選] 產生dh2048.pem
openssl dhparam -out dh2048.pem 2048
由於新版的dh加密方式有改變,可以不用自己產生dh2048.pem,這步驟是留給有需要的人參考

完成

ok,到這邊所有所需的認證都已經產生完成,將server端及client各端個別分目錄整理好,以下分別說明放置位置
server端所需憑證

1
2
3
4
5
6
7
8
9
10
11
12
# 位置:C:\Program Files\OpenVPN\easy-rsa\pki
ca.crt

# 位置:C:\Program Files\OpenVPN\easy-rsa\pki\issued
MyServer.crt (這部份名稱根據你選擇的server憑證名稱而定)

# 位置:C:\Program Files\OpenVPN\easy-rsa\pki\private
MyServer.key (這部份名稱根據你選擇的server憑證名稱而定)

# 位置:C:\Program Files\OpenVPN\bin**
ta.key
dh2048.pem (如果有產生的話)

每個client端所需憑證(以Client01為例)

1
2
3
4
5
6
7
8
9
# 與server端相同
ca.crt
ta.key

# 位置:C:\Program Files\OpenVPN\easy-rsa\pki\issued
Client01.crt (這部份名稱根據你選擇的client憑證名稱而定)

# 位置:C:\Program Files\OpenVPN\easy-rsa\pki\private
Client01.key (這部份名稱根據你選擇的client憑證名稱而定)

P.S.
C:\Program Files\OpenVPN\easy-rsa\pki\private 內有產生一個ca.key雖然沒用到,但這個檔案要是洩漏會有重大安全性的問題,請一定要保存在非常安全的地方,像是沒有網路連線的電腦

接下來就會教各位如何設定連線的conf,敬請期待