我正在寻找在我们公司网络上使用我的 linux 工作站,但我遇到了一些问题,特别是 802.1xi 相信。
我是我的机器上的 root 和 Windows 域管理员,所以我应该能够访问我需要的任何东西来让它工作。目前,我的 linux 机器连接受限,这让我相信它已被放入非 802.1x 客户端的默认 vlan 中。
我想我的总体问题是:如何让我的 linux 机器在有线 windows 网络上使用 802.1x?该网络是典型的 Windows 域,使用机器帐户和用户帐户。
到目前为止,这是我所知道和尝试过的:
我相信我需要为机器获取有效的客户端机器证书、域的 CA 证书以及客户端的私钥
想法 1,从 windows 机器/域 ca 机器上获取有效密钥我在 linux 机器上运行 windows VM,并将其加入域,认为这会产生一个有效的客户端证书,我可以为 linux 机器获取。- 为此,我从 Windows ca 服务器导出了客户端证书和 ca 证书,然后将它们转换为 PEM 格式,为 linux 上的网络管理器做好准备(假设需要 PEM 而不是 DER)。- 然后我尝试使用 certmgr 在 Windows VM 本身上导出私钥,但它被标记为不可导出:-(
想法 2 是 powerbroker... - 我使用 powerbroker open(以前同样)将 linux 机器加入域,getent passwd 现在显示所有域用户。- 我的想法是这会将客户端证书和私钥放在系统上的某个地方(/etc/ssl/certs?)但我什么也找不到
想法3,问一个知道他们实际在做什么的人。
我应该指出,最初这台 linux 机器上有 Windows(我在 linux 安装时 p2v'd)所以我知道网络交换机设置正确,并且 MAC 等在网络上被接受;我很确定它只是一个 802.1x 问题
编辑:完全忘了提到它的fedora 21 xfce spin,64bit。
坏消息,大家!Fedora 21 中似乎有一个未修复的错误:Wired connection with 802.1x PEAP/MSCHAPv2 not working。因此,虽然下面的答案可能适用于其他发行版,但 Fedora 21 用户目前不走运。
我自己从未尝试过,但这篇文章似乎包含了一个非常详细的演练,用于在 Linux 客户端和 Windows 域之间设置 802.1x。请注意证书请求部分:它应该可以解决您无法导出证书的问题。软件版本很旧(Ubuntu是 8.04,Beyond Trust 的 Power Broker仍然是),但基本的想法对我来说似乎很可靠。
我已经对上述帖子进行了格式化,以使其更易于阅读。引用使代码框变为灰色,因此我将其删除,对不起:
免责声明:本指南是从 Linux Ubuntu 8.04 发行版的角度编写的。要使其与其他 Linux 或 Unix 发行版一起使用,可能需要进行一些更改。
Linux 机器通过 802.1x 进行身份验证所需的两个主要内容是客户端证书和 Windows 域中的帐户。在身份验证过程中,Linux 客户端将其计算机证书提供给交换机,然后交换机将其提供给验证证书的 RADIUS 服务器,并验证证书在 Active Directory 中分配给的计算机帐户。如果证书和计算机帐户有效,则 RADIUS 服务器批准身份验证请求,将其发送回交换机,然后交换机对 Linux 机器所连接的端口进行身份验证。
需要做的第一件事是将您的 Linux 计算机加入 Windows 域。由于 Linux 本身无法加入 Windows 域,因此我们必须下载必要的软件才能执行此操作。同样制作软件让我们能够做到这一点。要在 Ubuntu 上安装它非常简单,只需按照以下步骤操作:
enter the FQDN of your domain here
enter your admin account here
,你可以使用[email protected]
. 您还应该能够通过访问来使用 GUI 版本System → Administration → Likewise.
如果你没有运行 Ubuntu,你可以在这里http://www.likewisesoftware.com/products/likewise_open下载软件。您现在可以注销并使用您的域帐户重新登录。我相信任何一种格式
[email protected]
和域\用户都可以工作。我稍后会对此进行测试。位于 Linux 机器上的三个文件必须正确配置才能进行此身份验证。这三个文件是:
首先,我们将配置软件以允许我们的 Linux 机器使用客户端证书对启用 802.1x 的网络进行身份验证;
wpa_supplicant
将用于此。按照以下步骤配置您的 wpa_supplicant.conf 文件:
须藤 gedit /etc/wpa_supplicant.conf
将以下内容粘贴到文件中并保存:
现在我们必须编辑您的接口文件。按照以下步骤配置您的接口文件:
sudo gedit /etc/network/interfaces
将以下内容粘贴到
eth0
界面下的文件中并保存:下一步是生成并安装您的证书。我们必须生成自签名证书,然后根据我们创建的自签名证书生成证书请求,然后安装证书。
注意:创建证书时,无论何时询问您的姓名,您都必须提供将进行身份验证的计算机的名称。为了安全起见,我建议使名称与分配给计算机的方式相匹配,包括区分大小写。如果您不确定它是如何分配给您的计算机的,请打开终端并输入主机名。
按着这些次序:
sudo openssl req -x509 -nodes -days
enter in days how long you want the cert valid for
-newkey rsa:1024 -keyoutenter a name for your private key/certificate here
.pem -outenter a name for your private key/certificate here
.pem示例:sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout privcert.pem -out privcert.pem
openssl req -new -newkey rsa:1024 -nodes -keyout
enter a name for your private key here
.pem - outenter a name for your certificate request here
.pem示例:sudo openssl req -new -newkey rsa:1024 -nodes -keyout privkey.pem -out certreq.pem
创建的所有证书都放置在您的主目录 (
/home/<username>
) 中。下一部分是使用在上一步中创建的证书请求从您的 CA 请求证书。这需要在 Windows 机器上完成,因为由于某种原因,Linux 和 Windows 在请求和下载证书时不能很好地相处;我只是发现通过电子邮件将证书请求发送给自己并在 Windows 机器上执行它更容易。请按照以下步骤完成证书请求:
http://caname/certsrv
)。your Linux machine name
.pem。系统会自动将 附加.cer
到它的末尾,因此只需将其删除即可。Linux 使用 .pem 进行证书扩展。/etc/ssl/certs
中创建的私钥/证书和私钥 。/etc/ssl/private
现在,只有 root 有权执行此操作,因此您可以通过命令行输入sudo cp /home/<username>/<certificate>.pem /etc/ssl/private
或来执行此操作/etc/ssl/certs
。这也可以通过使用命令 gksudo 并键入 nautilus 从 GUI 复制和粘贴来完成。Nautilus 是 Ubuntu 使用的 GUI 文件浏览器,它将以 root 身份运行,允许您复制并粘贴到只有 root 可以访问的目录。现在我们的证书已经到位,我们需要告诉 openssl 我们想如何使用这些证书。为此,我们必须编辑 openssl.cnf 文件并告诉它以客户端而不是用户身份验证我们的 Linux 机器。
为此,请按照下列步骤操作:
[usr_cert]
. 在本节中,我们需要将 wherensCertType
定义为“对于普通客户使用,这是典型的”,它应该有nsCertType = client, email
并且会被注释掉。取消注释此行并删除电子邮件,使其显示nsCertType = client
。现在保存文件。现在您应该已经正确配置了所有需要的东西,以使 Linux 机器在 Windows 域环境中运行并使用 802.1x 进行身份验证。
现在剩下的就是重新启动您的网络服务,以便 Linux 将使用
wpa_supplicant.conf
现在绑定到您的eth0
接口的文件并进行身份验证。所以就跑吧sudo service networking restart
。如果您在界面恢复后没有获得 IP 地址,您可以通过键入 手动从 DHCP 服务器请求 IPsudo dhclient
。