Linux
使用證書和密鑰創建自己的 ovpn 文件
最近,我設置了一個 raspberry,例如一個小型伺服器,用於練習網路連接,並在其上安裝了 OpenVPN。對於範例證書
pivpn -a
,我使用了 OpenVPN 建議的命令。但是現在我想創建自己的證書,因為我需要在它們上插入一個到期日期作為範例。在網際網路上進行了多次研究後,我沒有找到任何可行的方法,因為使用者提供的大多數範例都是舊版本的 OpenVPN,我唯一了解到的是我需要 openssl 來創建我的證書。
所以我執行以下命令來創建我的證書:
sudo openssl req -new -key ca.key > mycert.csr sudo openssl x509 -req -days 1 -in ./mycert.csr / -signkey /etc/openvpn/easy-rsa/pki/private/ca.key -out some.crt
ca.key是我安裝 OpenVPN 時生成的密鑰,此時我嘗試將證書和密鑰結合起來,如許多教程所建議的:
client dev tun proto udp remote <my_server_ip> 1194 resolv-retry infinite nobind persist-key persist-tun remote-cert-tls server tls-version-min 1.2 verify-x509-name <server_name> name cipher AES-256-CBC auth SHA256 auth-nocache verb 3 <ca> -----BEGIN CERTIFICATE----- #my ca.crt -----END CERTIFICATE----- </ca> <cert> -----BEGIN CERTIFICATE----- #the some.crt file, which i created before -----END CERTIFICATE----- </cert> <key> -----BEGIN ENCRYPTED PRIVATE KEY----- #No idea what i have to write there -----END ENCRYPTED PRIVATE KEY----- </key> <tls-crypt> # # 2048 bit OpenVPN static key # -----BEGIN OpenVPN Static key V1----- #my ta.key -----END OpenVPN Static key V1----- </tls-crypt>
我堅持這一點,因為在加密私鑰部分有人說我必須放client.key,所以我用來簽署我的證書的密鑰,但它不起作用。
我搞砸了一些步驟,或者這是實現我想要的 wrog 方式?
對於 OpenVPN,涉及多個證書:
在伺服器端:
- 伺服器證書(和密鑰)
- ca 證書與私鑰匹配,用於簽署伺服器證書
在客戶端(可選):
- 由同一個或另一個 ca 簽名的客戶端證書(和密鑰)
您已發布客戶端配置。所以參數需要填寫如下:
- ca: ca證書驗證伺服器證書(簽署伺服器證書)
- cert:根據伺服器配置,客戶端證書提供給伺服器進行使用者認證
- key:與證書匹配的密鑰
我建議,你使用easyrsa3。那裡應該有足夠詳細的解釋。
自己的 OpenVPN 伺服器(以及自己的自定義 CA)的簡短摘要:
- 生成 ca 證書(和密鑰)
- 生成伺服器證書(和密鑰)
- 生成客戶端證書(和密鑰)
為了增強安全性,密鑰與 CSR(證書請求)一起在本地(在伺服器/客戶端上)創建,然後在包含 ca(應該分開)的節點上對請求進行簽名,從而生成證書。
編輯: 再看看你的問題,這看起來很可疑:
sudo openssl req -new -key ca.key > mycert.csr sudo openssl x509 -req -days 1 -in ./mycert.csr \ -signkey /etc/openvpn/easy-rsa/pki/private/ca.key -out some.crt
第一個ca.key是什麼?您應該單獨生成一個新的(客戶端)密鑰,或者簡單地讓openssl req為您執行此操作(
-newkey
)。openssl req 使用的“密鑰”屬於您要為其獲取 CSR 的證書。在這一點上,它與 CA 無關。概括:
- 創建私鑰
- 為密鑰創建 CSR
- 獲取由 CA 簽名的 csr(生成與第一步的私鑰匹配的簽名證書)