Linux有线networking上的802.1x

我正在寻找在我们的公司networking上使用我的Linux工作站,但是我一直在遇到一些问题,特别是802.1xi相信。

我的根在我的机器和Windows域pipe理员,所以我应该能够访问任何我需要这个工作。 目前我的Linux机器的连通性受到限制,导致我相信它已经被放入非802.1x客户端的默认VLAN中。

我想我的整体问题是:我如何使我的Linux机器在有线Windowsnetworking上使用802.1x? networking是一个典型的Windows域,并使用机器帐户以及用户帐户。

这是我所知道的,迄今为止已经尝试过:

相信我将需要获得一个有效的客户端机器证书的机器,CA证书的域名和私钥的客户端

想法1,从Windows机器/域ca机器抓住一个有效的关键我在linux机器上运行一个Windows虚拟机,并join到域,认为这将产生一个有效的客户端证书,我可以拿到Linux机器。 – 为此,我然后导出的Windows CA服务器的客户端证书和CA证书,然后将其转换为PEM格式,准备好在Linux上的networkingpipe理器(假设需要PEM而不是DER)。 – 然后我试图使用certmgr导出Windows VM本身的私钥,但它被标记为不可导出:-(

想法2是powerbroker … – 我用powerbroker打开(正式同样)join到linux的机器域,getent passwd现在显示所有的域用户。 – 我的想法是这将把系统上的客户端证书和私钥(/ etc / ssl / certs?),但我什么也找不到

想法3,问一个知道他们在做什么的人。

我应该指出,最初这个Linux机器上有它的窗户(我在Linux安装p2v'd),所以我知道networking交换机设置正确,MAC等接受在networking上; 我很确定它只是一个802.1x的问题

编辑:完全忘了提及它的Fedora 21 xfce自旋,64位。

坏消息,大家! 似乎Fedora 21中存在一个不固定的错误: 与802.1x PEAP / MSCHAPv2的有线连接不起作用 。 所以,虽然下面的答案可能适用于其他发行版,Fedora 21用户目前运气不佳。


从来没有尝试过,但是这篇文章似乎包含了一个非常详细的在Linux客户端和Windows域之间设置802.1x的演练。 请注意证书请求部分:它应该解决您的不可导出证书的问题。 软件版本相当老( Ubuntu是8.04, Beyond Trust的Power Broker 也是这样 ),但基本的想法对我来说似乎是可靠的。

我已经格式化了上面提到的post,使其更易于阅读。 引用使代码框灰色灰色,所以我放弃了,对不起:


免责声明:本指南是从Linux Ubuntu 8.04发行版的angular度编写的。 为了使其与其他Linux或Unix发行版一起工作,可能需要进行一些更改。

Linux机器通过802.1x进行身份validation所需的两个主要function是Windows域中的客户端证书和帐户。 在身份validation过程中,Linux客户端会向交换机显示计算机证书,交换机会将其提交给validation证书的RADIUS服务器,并validation在Active Directory中分配证书的计算机帐户。 如果证书和计算机帐户有效,则RADIUS服务器批准authentication请求将其发送回交换机,然后authenticationLinux框连接的端口。

首先需要做的是将您的Linux计算机joinWindows域。 由于Linux不能在本地joinWindows域,所以我们必须下载必要的软件来允许我们这样做。 同样,使软件,让我们做到这一点。 要在Ubuntu上安装它,这非常简单,只需按照以下步骤操作即可:

  1. sudo apt-get update
  2. sudo apt-get install同样打开
  3. sudo domainjoin-clijoinenter the FQDN of your domain here enter your admin account here enter the FQDN of your domain here enter your admin account here ,你可以使用格式[email protected] 您也应该能够使用GUI版本进入System → Administration → Likewise.
  4. sudo update-rc.d同样打开默认值
  5. sudo /etc/init.d/likewise-open start

如果你没有运行Ubuntu,你可以在这里下载软件http://www.likewisesoftware.com/products/likewise_open 。 您现在可以注销并使用您的域帐户重新login。 我相信[email protected]和域\用户的格式都可以。 我会在稍后testing。

Linux机器上有三个文件必须正确configuration才能进行此validation。 这三个文件是:

  1. /etc/wpa_supplicant.conf来
  2. 的/ etc /networking/接口
  3. /etc/openssl/openssl.cnf

首先,我们将configuration这个软件,让我们的Linux机器使用一个客户端证书来authentication一个支持802.1x的networking。 wpa_supplicant将用于此。

按照以下步骤configuration您的wpa_supplicant.conf文件:

  1. sudo gedit /etc/wpa_supplicant.conf
  2. 将以下内容粘贴到文件中并保存:

     # Where is the control interface located? This is the default path: ctrl_interface=/var/run/wpa_supplicant # Who can use the WPA frontend? Replace "0" with a group name if you # want other users besides root to control it. # There should be no need to chance this value for a basic configuration: ctrl_interface_group=0 # IEEE 802.1X works with EAPOL version 2, but the version is defaults # to 1 because of compatibility problems with a number of wireless # access points. So we explicitly set it to version 2: eapol_version=1 # When configuring WPA-Supplicant for use on a wired network, we don't need to # scan for wireless access points. See the wpa-supplicant documentation if you # are authenticating through 802.1x on a wireless network: ap_scan=0 network={ ssid="<enter any name here, it doesn't matter>" key_mgmt=IEEE8021X eap=TLS identity="<FQDN>/computers/<Linux computer name>" client_cert="/etc/ssl/certs/<your authentication certificate name>.pem" private_key="/etc/ssl/private/<your private key name>.pem" } 

现在我们必须编辑你的接口文件。 请按照以下步骤来configuration您的接口文件:

  1. sudo gedit / etc / network / interfaces
  2. 将以下内容粘贴到eth0接口下的文件中并保存:

     # Configure the system to authenticate with WPA-Supplicant on interface eth0 wpa-iface eth0 # In this case we have a wired network: wpa-driver wired # Tell the system we want to use WPA-Supplicant with our configuration file: wpa-conf /etc/wpa_supplicant.conf 

下一步是生成并安装证书。 我们必须生成自签名证书,然后根据我们创build的自签名证书生成证书请求,然后安装证书。

注意:创build证书时,只要提供您的姓名,就必须提供将要进行身份validation的计算机的名称。 为了安全起见,我build议使名称与分配给计算机的名称一致,包括区分大小写。 如果您不确定如何将其分配给您的计算机,请打开terminal并input主机名。

按着这些次序:

  1. sudo openssl req -x509 -nodes-days enter in days how long you want the cert valid for -newkey rsa:1024 -keyout enter a name for your private key/certificate here enter a name for your private key/certificate here .pem -out enter 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

  2. openssl req -new -newkey rsa:1024 -nodes -keyout enter a name for your private key here enter a name for your certificate request here enter a name for your private key here .pem -out enter a name for your private key here enter a name for your certificate request here .pem

    例如:sudo openssl req -new -newkey rsa:1024 -nodes -keyout privkey.pem -out certreq.pem

所有创build的证书都放在您的主目录( /home/<username> )中。 下一部分是使用在上一步中创build的证书请求从CA请求证书。 这需要在Windows机器上完成,因为在请求和下载证书时,Linux和Windows不太好; 我发现将证书请求通过电子邮件发送给我自己并在Windows机器上执行它更容易。

请按照以下步骤完成证书请求:

  1. 转到您的Linux主机上的主目录,find您的证书申请文件
  2. 通过电子邮件将文件发送给自己,或者使用文本编辑器(如gedit)打开文件,然后将请求复制并粘贴到电子邮件中发送给自己。
  3. 在Windows客户端上,使用IE打开一个网页到您的CA网站(如http://caname/certsrv )。
  4. select申请一个证书
  5. 高级证书请求
  6. 现在打开您的电子邮件,并获得您通过电子邮件发送的证书申请。
  7. 如果您通过电子邮件发送文件,请用记事本打开,然后将内容复制并粘贴到Base-64编码证书请求框中。 如果您通过电子邮件发送证书请求文件的内容而不是文件本身,则只需将请求从那里复制并粘贴到Base-64编码的证书请求框中即可。
  8. 单击提交并以Base-64forms下载证书,而不是DER。
  9. 将证书保存到桌面上,并将其命名为your Linux machine name .pem。 系统会自动将.cer添加到结尾,所以只需将其删除即可。 Linux使用.pem作为证书扩展。
  10. 把这个文件发回给你自己。
  11. 现在,在您的Linux机器上,获取您的证书并将其保存在某处(最好是您的主文件夹以保持组织和一起)。
  12. 现在,我们需要将刚刚收到的证书复制到/etc/ssl/certs文件夹,我们需要复制早先在/etc/ssl/private文件夹中创build的私钥/证书和私钥。 现在,只有root才有这个权限,所以你可以通过命令行来inputsudo cp /home/<username>/<certificate>.pem /etc/ssl/private/etc/ssl/certs 。 这也可以通过使用命令gksudo和键入鹦鹉螺复制和粘贴从GUI完成。 Nautilus是Ubuntu使用的GUI文件浏览器,它将以root身份运行,允许您复制并粘贴到只有root用户才能访问的目录。

现在我们的证书已经到位,我们需要告诉openssl我们要如何使用证书。 要做到这一点,我们必须编辑openssl.cnf文件,并告诉它将我们的Linux机器authentication为客户端,而不是用户。

要这样做请按照下列步骤操作:

  1. sudo gedit /etc/ssl/openssl.cnf
  2. 向下滚动大约一半,你应该看到一个名为[usr_cert]的部分。 在本节中,我们需要将nsCertType定义为“对于普通客户端而言,这是典型的” ,并且它应该有nsCertType = client, email ,它将被注释掉。 取消注释此行并删除电子邮件,以便显示nsCertType = client 。 现在保存该文件。

现在,您应该拥有所需的所有configuration,以使Linux机器在Windows域环境中运行并使用802.1x进行身份validation。

现在剩下的就是重新启动你的networking服务,这样Linux就会使用wpa_supplicant.conf文件,这个文件现在绑定到你的eth0接口并进行validation。 所以只要运行sudo service networking restart 。 如果接口恢复后没有获得IP地址,则可以通过键入sudo dhclient手动向DHCP服务器请求IP。