• 在OpenConnect VPN服务器(ocserv)中设置证书身份验证

    本教程将向您展示如何在Debian/Ubuntu/CentOS/RHEL上的OpenConnect VPN服务器(ocserv)中设置证书身份验证。OpenConnect(ocserv)是Cisco AnyConnect VPN协议的开源实现。 在前一篇文章中,我解释了使用Let's Encrypt TLS服务器证书设置OpenConnect VPN服务器的步骤。让我们加密不颁发客户端证书,所以在那篇文章中,我们使用了密码身份验证。每次输入用户名和密码都会很麻烦,尤其是当客户端软件(如iOS上的Cisco AnyConnect应用程序)不提供记住密码的选项时。许多OpenConnect客户端软件可以导入用户证书,这将使用户不必输入用户名和密码。证书认证也比密码认证更安全。 要求 为了学习本教程,假设您已经使用Let's Encrypt TLS server证书设置了OpenConnect VPN服务器。如果没有,请遵循以下教程之一。 在Ubuntu20.04上用Let's Encrypt设置OpenConnect VPN服务器(ocserv) 使用Let's Encrypt在Debian 11 Bullseye上设置OpenConnect VPN服务器(ocserv) 使用Let's Encrypt在CentOS 8/RHEL 8上设置OpenConnect VPN服务器(ocserv) 我们将建立自己的CA(证书颁发机构)来签署客户证书。ocserv守护程序应该继续使用Let's Encrypt颁发的TLS服务器证书,这样客户端软件就不会显示安全警告。 设置自己的CA(证书颁发机构) 我们希望使用证书身份验证,但我们加密不会颁发客户端证书,因此我们需要创建自己的CA。您可以使用openssl来完成这项工作,但ocserv建议使用GnuTLS,因此我将向您展示如何使用GnuTLS。 在Debian/Ubuntu服务器上安装gnutls bin包。 sudo apt安装gnutls bin 在CentOS/RHEL上安装gnutls utils包。 sudo dnf安装gnutls utils 在/etc/ocserv/中创建一个子目录以保存私钥和证书。 sudo mkdir/etc/ocserv/ssl/ 更改工作目录。 cd/etc/ocserv/ssl/ 使用certtool命令为CA生成私钥,该命令由gnutls bin或gnutls utils包提供。默认情况下,它生成3072位RSA密钥,这就足够了。 sudo certtool——生成私钥——输出文件ca私钥。佩姆 在生成CA证书之前,我们先创建CA证书模板文件。模板文件格式可在certtool手册(man certtool)中找到。 sudo nano ca-cert.cfg 将以下行添加到文件中。用适当的值替换占位符。 #X.509证书选项#科目的组织。organization=“vpn.example.com”#证书所有者的通用名称。cn=“示例CA”#证书的序列号。serial=001#从今天算起,该证书将在多少天内过期。如果没有过期日期,请使用-1。过期天数=-1#这是否是CA证书#此证书是否将用于签署数据签名#此密钥是否将用于签署其他证书。cert_signing_key#此密钥是否将用于签署CRL。crl_签名_密钥 保存并关闭文件。现在使用模板文件中的配置生成CA证书。 sudo certtool--生成自签名--加载privkey ca privkey。pem--模板ca-cert.cfg--输出文件ca-cert.pem 现在我们有了一个CA证书文件(CA-cert.pem)。 生成客户端证书 现在运行以下命令生成客户端私钥。 sudo certtool——生成私钥——输出文件客户端私钥。佩姆 创建客户端证书模板文件。 sudo nano client-cert.cfg 将以下行添加到文件中。uid必须是/etc/ocserv/ocpasswd文件中的用户名。 #X.509证书选项#科目的组织。organization=“vpn.example.com”#证书所有者的通用名称。cn=“John Doe”#证书所有者的用户id。uid=“username”#从今天算起,此证书将在多少天内过期。如果没有过期日期,请使用-1。到期日=3650#此证书是否将用于TLS服务器TLS#www#客户端#此证书是否将用于签署数据签名#密钥#此证书是否将用于加密数据(需要#在TLS RSA密码套件中)。请注意,最好使用不同的#密钥进行加密和签名。加密密钥 保存并关闭文件。然后运行以下命令生成客户端证书,该证书将由CA私钥签名。 sudo certtool--生成证书--加载私钥客户端私钥。pem——加载ca证书ca-cert.pem——加载ca私钥ca私钥。pem--模板client-cert.cfg--输出文件client-cert.pem 将客户机私钥和证书组合到一个受PIN保护的PKCS#12文件中。 sudo certtool——to-p12——加载私钥客户端私钥。pem--加载证书客户端-cert.pem--pkcs密码aes-256--输出文件客户端。p12——户外 现在,我们将客户机私钥和证书合并到一个文件客户机中。第12页。 请注意,iOS上的Ciso AnyConnect应用程序不支持AES-256密码。它将拒绝导入客户端证书。如果用户使用的是iOS设备,则可以选择3des-PKCS12密码。 sudo certtool——to-p12——加载私钥客户端私钥。pem--加载证书客户端-cert.pem--pkcs密码3des-pkcs12--输出文件ios客户端。p12——户外 客户端私钥和证书合并到一个文件ios客户端。第12页。 证书签名请求 只有当有多个VPN用户,并且用户希望使用自己的私钥时,才需要此步骤。 为了对最终用户的私钥保密,用户可以使用自己的私钥生成证书签名请求(CSR),然后向管理员发送证书请求,管理员随后向用户颁发客户端证书。首先,他们必须使用上述命令生成私钥和客户端证书模板。然后使用以下命令生成CSR。请求。pem文件由用户的私钥签名。 certtool——生成请求——加载私钥客户端私钥。pem——模板client-cert.cfg——输出文件请求。佩姆 接下来,用户发送请求。将pem和client-cert.cfg文件发送给管理员,管理员运行以下命令生成客户端证书。 sudo certtool--生成证书--加载ca证书ca-cert.pem--加载ca私钥ca私钥。pem——加载请求。pem--模板client-cert.cfg--输出文件client-cert.pem 之后,管理员将client-cert.pem证书文件发送给用户。 在ocserv守护程序中启用证书身份验证 编辑ocserv配置文件。 sudo nano/etc/ocserv/ocserv。形态 在上一个教程中,我们添加了以下行以启用密码身份验证。 auth=“plain[passwd=/etc/ocserv/ocpasswd]” 要启用证书身份验证,请取消注释以下行。 auth=“证书” 如果以上两行都未注释,则意味着用户必须同时通过密码身份验证和证书身份验证。因此,如果证书认证足以证明身份,那么请注释掉第一行。 如果允许用户选择证书身份验证或密码身份验证,则应改为使用以下行。 启用auth=“plain[passwd=/etc/ocserv/ocpasswd]”auth=“certificate” 现在找到ca证书参数。在Debian/Ubuntu上,设置为 ca证书=/etc/ssl/certs/ssl证书蛇油。佩姆 在CentOS 8/RHEL 8上,设置为 ca cert=/etc/ocserv/ca.pem 我们需要使用我们自己的CA证书来验证客户端证书,所以将此行更改为 ca-cert=/etc/ocserv/ssl/ca-cert.pem 接下来,找到下面这行。 证书用户oid=0.9.2342.19200300.100.1.1 你不需要改变它。我只想告诉你,0.9.2342.19200300.100.1.1代表客户证书中的UID。上面的一行告诉ocserv守护程序从客户端证书的UID字段中查找用户名。如果客户端证书已通过CA证书成功验证,并且ocserv守护程序可以在/etc/ocserv/ocpasswd文件中找到匹配的用户名,则客户端可以登录。 保存并关闭文件。然后重启ocserv。 sudo systemctl重启ocserv 在Debian/Ubuntu/CentOS/RHEL桌面上使用证书认证 使用scp命令下载客户端。p12文件到Debian/Ubuntu/CentOS/RHEL桌面。 scp[email protected]:/etc/ocserv/ssl/client。p12~ 然后安装openconnect客户端软件。 Debian/Ubuntu: sudo apt安装openconnect CentOS/RHEL: sudo dnf安装epel释放sudo dnf安装openconnect 要使用证书身份验证,请运行 sudo openconnect-b vpn。实例com-c客户端。p12 您将被要求使用本教程中较早设置的密码短语解锁客户端私钥。 如果密码输入正确,您现在应该连接到VPN服务器。 在Windows和MacOS桌面上使用证书身份验证 从OpenConnect GUI Github页面下载Windows或MacOS的OpenConnect GUI客户端。然后创建一个新的VPN连接配置文件,并将PKCS#12文件导入用户证书字段。点击保存按钮。您需要输入PIN才能解锁私钥。导入后,您不必再输入用户名和密码。 在iOS设备上使用证书身份验证 iOS用户可以使用Cisco AnyConnect应用程序。要在AnyConnect应用程序中导入客户端证书,您可以先将PKCS#12文件发送到附件中的电子邮件地址。然后在iOS上打开邮件应用程序。点击附件几秒钟,并与AnyConnect共享。然后输入PIN以导入文件。 导入后,在AnyConnect中编辑VPN连接。转到高级->证书,然后选择客户端证书。保存你的设置。 现在你不必再在iOS设备上输入用户名和密码了。Cisco AnyConnect应用程序不记得用户名和密码,因此在密码验证模式下,当手机不使用时,VPN连接将断开。在证书认证模式下,如果连接断开,应用程序将自动重新连接到VPN服务器。 iOS上AnyConnect客户端的问题 iOS上最新版本的AnyConnect客户端在TLS 1.3协议中使用证书身份验证时出现问题。如果在ocserv日志(sudo journalctl-eu ocserv)中看到以下错误,那么您也会遇到同样的问题。 GnuTLS错误(在worker vpn.c:795):已收到TLS致命警报。 您需要在AnyConnect iOS客户端中使用密码身份验证,或者在ocserv配置文件中禁用TLS 1.3。禁用TLS1。3.在/etc/ocserv/ocserv中查找tls priorities参数。配置文件,并添加:-VERS-TLS1。3最后禁用TLS 1.3。 tls priorities=“正常:%SERVERu优先级:%COMPAT:-RSA:-VERS-SSL3.0:-ARCFOUR-128:-VERS-TLS1.0:-VERS-TLS1.1:-VERS-TLS1.3” 保存并关闭文件。然后重启ocserv。 sudo systemctl重启ocserv 注意:如果您在ocserv日志中看到SSL 3.3短语,请不要惊慌。SSL 3.3是TLS 1.2的另一个词。您正在使用安全的TLS连接。 收尾 我希望本教程能帮助您在OpenConnect VPN服务器中设置证书身份验证。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.23 浏览:86
  • 如何在Debian 9 Stretch上安装NextCloud桌面客户端

    本教程将向您展示如何在Debian 9 Stretch上安装NextCloud桌面客户端。如果您想知道如何在Debian 9上安装NextCloud server,请查看以下教程。 如何使用LAMP在Debian 9 Stretch上安装NextCloud 注意:从Debian 10开始,NextCloud桌面客户端包含在默认存储库中。您可以通过在root权限下运行以下命令来轻松安装它:apt install nextcloud desktop。 通过PPA在Debian 9上安装NextCloud桌面客户端 NextCloud开发团队为Ubuntu提供官方PPA。它还可以用于在Debian 9上安装NextCloud桌面客户端。您可以在Debian 9上运行add apt repository命令。它是由软件属性公共包提供的,但它不会像Ubuntu那样开箱即用。我将向您展示如何在Debian上手动添加NextCloud PPA。步骤如下所述。 打开终端窗口,切换到root用户。 su - 然后为NextCloud Linux客户端创建一个新的源代码列表文件。 nano /etc/apt/sources.list.d/nextcloud-client.list 复制以下两行并将其粘贴到源列表文件中。请注意,对于Debian 9,您需要使用zesty软件包以实现兼容性。 deb http://ppa.launchpad.net/nextcloud-devs/client/ubuntu zesty main deb-src http://ppa.launchpad.net/nextcloud-devs/client/ubuntu zesty main 保存并关闭文件。然后,我们需要下载签名密钥并将其导入Debian 9系统,以便APT package manager可以验证从本PPA下载的软件包的完整性。运行以下命令。需要dirmngr来访问密钥服务器。 apt install dirmngr apt-key adv --recv-key --keyserver keyserver.ubuntu.com AD3DD469 现在更新本地包索引并安装NextCloud桌面客户端。 apt update apt install nextcloud-client 安装后,您可以从应用程序菜单启动NextCloud客户端,或作为标准用户在终端中使用以下命令。 nextcloud 输入您的NextCloud服务器地址。 输入NextCloud用户名和密码。 接下来,设置本地文件夹选项。 启动时运行NextCloud客户端 要在启动时启用自动启动,只需转到NextCloud设置,然后选择General(常规)选项卡并选中Launch on System Startup(系统启动时启动)。 就这样!我希望本教程能帮助您在Debian 9 Stretch上安装NextCloud桌面客户端。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯来获取新的教程。

    2022.03.23 浏览:45