Linux

使用證書和密鑰創建自己的 ovpn 文件

  • April 16, 2019

最近,我設置了一個 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(生成與第一步的私鑰匹配的簽名證書)

引用自:https://serverfault.com/questions/963237