坏消息,大家!似乎Fedora 21中存在一个未修复的错误:与802.1x PEAP / MSCHAPv2的有线连接不起作用。因此,尽管以下答案可能适用于其他发行版,但Fedora 21用户目前运气不佳。
我自己从未尝试过,但是这篇文章似乎包含了在Linux客户端和Windows域之间设置802.1x的非常详细的演练。注意证书申请部分:它应该解决您的不可出口证书问题。该软件版本是很老的(Ubuntu的是8.04和超越信托的掮客仍然是同样),但基本的想法似乎固体给我。
我对上述帖子进行了格式化,以使其更易于阅读。引用使代码框变成灰色,因此我放弃了它,对不起:
免责声明:本指南是从Linux Ubuntu 8.04发行版的角度编写的。为了使其与其他Linux或Unix发行版一起使用,可能需要进行一些更改。
Linux机器通过802.1x进行身份验证所需的两个主要要素是客户端证书和Windows域中的帐户。在身份验证过程中,Linux客户端将其计算机证书提供给交换机,交换机再将其提供给RADIUS服务器,该服务器验证证书并验证将证书分配给Active Directory的计算机帐户。如果证书和计算机帐户有效,则RADIUS服务器会批准身份验证请求,将其发送回交换机,交换机再对Linux盒连接的端口进行身份验证。
首先需要做的是将您的Linux计算机加入Windows域。由于Linux无法本地加入Windows域,因此我们必须下载必要的软件才能执行此操作。同样,使软件可以使我们做到这一点。要将其安装在Ubuntu上非常简单,只需执行以下步骤:
- sudo apt-get更新
- sudo apt-get install同样打开
- sudo domainjoin-cli连接
enter the FQDN of your domain here
enter your admin account here
,您可以使用format user@domain.com
。您还应该能够通过以下方式使用GUI版本:System → Administration → Likewise.
- sudo update-rc.d同样打开默认值
- sudo /etc/init.d/likewise-open开始
如果您没有运行Ubuntu,则可以在http://www.likewisesoftware.com/products/likewise_open下载该软件。您现在可以注销并使用您的域帐户重新登录。我相信user@domain.com
和域\用户都可以使用。我稍后会测试。
Linux机器上有三个文件,必须正确配置它们才能进行身份验证。这三个文件是:
- /etc/wpa_supplicant.conf
- / etc / network / interfaces
- /etc/openssl/openssl.cnf
首先,我们将配置软件,以允许我们的Linux计算机使用客户端证书对启用802.1x的网络进行身份验证;wpa_supplicant
将用于此。
请按照以下步骤配置wpa_supplicant.conf文件:
- 须藤gedit /etc/wpa_supplicant.conf
将以下内容粘贴到文件中并保存:
# 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"
}
现在我们必须编辑您的接口文件。请按照以下步骤配置您的接口文件:
- sudo gedit / etc / network / interfaces
将以下内容粘贴到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
下一步是生成并安装证书。我们将必须生成一个自签名证书,然后根据我们创建的自签名证书生成一个证书请求,然后安装证书。
注意:创建证书时,每当要求输入名称时,都必须提供将进行身份验证的计算机的名称。为了安全起见,建议您使名称与分配给计算机的方式匹配,包括区分大小写。如果不确定如何将其分配给计算机,请打开终端并键入主机名。
按着这些次序:
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
.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
openssl req -new -newkey rsa:1024 -nodes -keyout enter a name for your private key here
.pem-out enter 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计算机上执行。
请按照以下步骤完成证书申请:
- 转到Linux计算机上的主目录,然后找到您的证书请求文件
- 通过电子邮件将文件发送给自己,或者使用文本编辑器(例如gedit)打开文件,然后将请求复制并粘贴到电子邮件中,然后将其发送给自己。
- 在Windows客户端上,使用IE打开一个到您CA的网站的网页(例如
http://caname/certsrv
)。
- 选择申请证书
- 高级证书申请
- 现在打开您的电子邮件,并获取您自己发送的证书请求。
- 如果通过电子邮件将文件发送给自己,请用记事本打开它,然后将内容复制并粘贴到Base-64编码的证书请求框中。如果您通过电子邮件自己发送了证书请求文件的内容,而不是文件本身,则只需将请求复制并粘贴到以Base-64编码的证书请求框中即可。
- 单击提交,然后以Base-64格式而不是DER下载证书。
- 将证书保存到桌面,并将其命名为
your Linux machine name
.pem。系统将自动在.cer
其末尾附加,因此只需将其删除即可。Linux使用.pem进行证书扩展。
- 取得此文件并将其通过电子邮件发送回自己。
- 现在,在Linux机器上,获取证书并将其保存在某个位置(最好是您的主文件夹中,以使事情井井有条并保持在一起)。
- 现在,我们需要将您刚收到的证书复制到
/etc/ssl/certs
文件夹中,并且需要将您先前在/etc/ssl/private
文件夹中创建的私钥/证书和私钥 复制。现在,只有root拥有执行此操作的权限,因此您可以通过在命令行中输入sudo cp /home/<username>/<certificate>.pem /etc/ssl/private
或来执行此操作/etc/ssl/certs
。也可以从GUI通过使用命令gksudo复制并粘贴并键入nautilus来完成此操作。Nautilus是Ubuntu使用的GUI文件浏览器,它将以root身份运行,允许您复制和粘贴到只有root可以访问的目录。
现在我们的证书已经到位,我们需要告诉openssl我们如何使用证书。为此,我们必须编辑openssl.cnf文件,并告诉该文件以客户端而不是用户身份验证我们的Linux计算机。
为此,请按照下列步骤操作:
- 须藤gedit /etc/ssl/openssl.cnf
- 向下滚动大约一半,您应该看到一个名为的部分
[usr_cert]
。在本节中,我们需要将nsCertType
定义为“通常用于普通客户,这是典型的”,并且应该具有nsCertType = client, email
并将其注释掉。取消注释该行并删除电子邮件,使其显示为nsCertType = client
。现在保存文件。
现在,您应该已经正确配置了所有必需的东西,以使Linux计算机在Windows域环境中运行并使用802.1x进行身份验证。
现在剩下的就是重新启动网络服务,以便Linux将使用wpa_supplicant.conf
现在绑定到您的eth0
界面并进行身份验证的文件。所以就跑吧sudo service networking restart
。如果在界面恢复后仍未获得IP地址,则可以通过键入从DHCP服务器手动请求IP sudo dhclient
。