![使用带有 OpenVPN 社区(免费)版本的物理加密令牌](https://linux22.com/image/668477/%E4%BD%BF%E7%94%A8%E5%B8%A6%E6%9C%89%20OpenVPN%20%E7%A4%BE%E5%8C%BA%EF%BC%88%E5%85%8D%E8%B4%B9%EF%BC%89%E7%89%88%E6%9C%AC%E7%9A%84%E7%89%A9%E7%90%86%E5%8A%A0%E5%AF%86%E4%BB%A4%E7%89%8C.png)
我目前正在设置 OpenVPN,以便公司能够访问多个客户端。我们的要求是使用证书、密码保护客户端密钥,以及对每个客户端使用双因素 (MFA) 身份验证。
我手头有一堆 Fortinet FortiToken 200 令牌,我想用它们,但我找不到任何信息来说明如何将这些令牌与 OpenVPN 之类的东西一起使用。再找了一会儿,我也找不到任何信息来说明如何将物理令牌与 OpenVPN 一起使用。
所以我的问题是,如何在 OpenVPN 中使用物理令牌?我不能使用像 Google Authenticator 这样的东西,因为我们计划让客户也通过他们的智能手机使用 VPN。OpenVPN PKCS#11 操作方法文档写得非常差。
我开始相信,如果 MFA 是一项要求,那么 OpenVPN 目前根本不是一个可行的选择。
感谢您的帮助。
答案1
基本上:
- 为您的令牌安装一个 pkcs#11 驱动程序(如果令牌制造商没有提供,请询问他们)。
- 告诉 openvpn 使用该驱动程序,并列出令牌上的可用密钥:
openvpn --show-pkcs11-ids /path/to/pkcs11/driver.so
在您的配置文件中,从输出中指定密钥的模块和序列化 ID
--show-pkcs11-ids
,例如:pkcs11-提供者 /usr/lib/x86_64-linux-gnu/pkcs11/gnome-keyring-pkcs11.so
pkcs11-id Gnome\x20Keyring/1\x2E0/1\x3AUSER\x3ADEFAULT/Gnome2\x20Key\x20Storage/417AEDAAB81FEF6AEBD1EC43D76A630CAAA4722A
(确保将 pkcs-id 中的所有反斜杠转义,例如Gnome\x20Keyring
变成Gnome\\x20Keyring
.)