我家里有一个带有 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 作为数据通道,反之亦然吗?
期末考试即将来临,所以我可能不会很快回复。我这样做是为了好玩,但我相信其他人也会欣赏这一点。谢谢。
我发现这两个网站在创建我的服务器时很有用,如果有人感兴趣的话:
答案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 协商会话的方式有关。大多数价值在于能够更快地拒绝流量,而无需在注意到流量未经身份验证之前检查签名和进行密钥查找。您可以使用其他人的说明来定义和使用此功能。