为 openvpn 服务器创建椭圆曲线密钥和证书(ECC 和 ECDH)

为 openvpn 服务器创建椭圆曲线密钥和证书(ECC 和 ECDH)

我家里有一个带有 openvpn 的 raspi,这样当我在有开放 wifi 的公共场所(咖啡厅、酒吧、酒店...)使用笔记本电脑或手机时,我可以安全地浏览互联网。

我想让我的 openvpn 服务器使用椭圆曲线加密技术。我使用 openvpn 2.4 和 openssl 1.0.1t。我尝试在 openssl 上滚动 ec 密钥和证书,但一直失败。

以下是我需要的文件以及我尝试在 openssl 中使用的命令:

细胞外基质

ecparam -out /openvpn/easy-rsa/ecKeys/ecca.pem -name prime256v1 -genkey
ecparam -out /home/black/ecdh256.pem -name prime256v1

ca.crt

ecparam -out /etc/openvpn/easy-rsa/ecKeys/ecca.key -name prime256v1 -genkey
req -days 3650 -nodes -new -x509 -key /openvpn/easy-rsa/ecKeys/ecca.key -out /openvpn/easy-rsa/ecKeys/ecca.crt

客户端密钥

ecparam -out /openvpn/easy-rsa/ecKeys/client.key -name prime256v1 -genkey

客户端.crt

 req -days 3650 -nodes -new -key /openvpn/easy-rsa/ecKeys/client.key -out /openvpn/easy-rsa/ecKeys/server.csr

服务器密钥

 ecparam -out /openvpn/easy-rsa/ecKeys/server.key -name prime256v1 -genkey

服务器.crt

 req -days 3650 -nodes -new -key /openvpn/easy-rsa/ecKeys/server.key -out /openvpn/easy-rsa/ecKeys/server.csr

塔基

<have no idea>

我是否使用正确的命令来创建在 openvpn 服务器中运行所需的证书和密钥?

我似乎不知道如何创建 EC ta 密钥?

我可以在 openvpn 中使用 RSA 作为控制通道并使用 EC 作为数据通道,反之亦然吗?

期末考试即将来临,所以我可能不会很快回复。我这样做是为了好玩,但我相信其他人也会欣赏这一点。谢谢。

我发现这两个网站在创建我的服务器时很有用,如果有人感兴趣的话:

简易 Windows 指南 - openvpn-

在 Debian 上设置强化 OpenVPN 服务器

答案1

我正在将 gentoo 与这些软件包一起使用。但我的评论是不是特定于发行版的。

net-libs/mbedtls-2.5.2:0/10::gentoo  USE="threads zlib -doc -havege -libressl -programs {-test}" ABI_X86="(64) -32 (-x32)" CPU_FLAGS_X86="sse2"
app-crypt/easy-rsa-3.0.1-r1::gentoo  USE="-libressl"
net-vpn/openvpn-2.4.3::gentoo  USE="lzo mbedtls pam plugins ssl down-root -examples -inotify -iproute2 -libressl -lz4 -pkcs11 (-selinux) -static -systemd {-test}"

支持注意事项:在撰写本文时,我需要 mbedtls 作为 openvpn 的后端,并且 OpenVPN 无法同时构建与 PKCS11 支持。我不确定为什么,但开发人员知道这一点。至少自 2017 年 2 月以来一直如此。

我使用的命令是否正确

我不能谈论这个。我正在使用 easy-rsa 来完成您尝试直接使用 openssl 的操作。这并没有错。 Easy-rsa 只是将其自动化。尽管有这个名称,easy-rsa 可用于滚动基于 EC 的 PKI。

以下是我的 easy-rsaconf 的相关部分:

set_var EASYRSA_ALGO            ec
set_var EASYRSA_CURVE           brainpoolP512t1

EC 数据通道

算法类别错误。数据通道使用对称算法加密。 EC 是不对称的。如果你问我的话,我会澄清这一点。

ta.key [...] 不知道

TA 密钥文件包含用于初始会话设置的 Diffe-Hellman 参数。它与您选择 EC 或 RSA 无关,并且与 TLS 协商会话的方式有关。大多数价值在于能够更快地拒绝流量,而无需在注意到流量未经身份验证之前检查签名和进行密钥查找。您可以使用其他人的说明来定义和使用此功能。

相关内容