我在欧洲旅行了几周,在思科欧洲直播会上做了演示,并会见了客户和合作伙伴。很明显,这个博客是非常需要我们讨论很多部署,以保证负载平衡的博客,我跟进一个博客如何“黑客”思科的证书标识服务引擎(ISE)节点,这样我们在主题选择可能包括条目名称(SAN)。
为什么我们需要这样做?
在很多情况下,您希望使用一个与其主机名不完全相同的DNS名称来访问ISE。如果您曾经尝试通过IP地址访问https://网站,您很可能会遇到web浏览器认为证书名称不匹配,并要求您接受警告才能继续操作。下面显示了一个示例。
思科ISE有几个不同的门户,你可以连接到:
- 赞助商门户网站:https://ISE: 8443 / sponsorportal /。该门户供公司的员工登录并创建客户帐户。显然,告诉员工连接到这个URL将非常乏味,并且需要一个更友好的名字。
- MyDevices门户网站:https://ISE: 8443 / MyDevices /。此门户供公司员工登录和管理允许他们注册进行网络访问的个人设备。显然,告诉员工连接到这个URL将非常乏味,因此,同样需要一个更友好的名称。
因此,ISE可以使用HTTP主机头使用友好名称,并将发送到该友好名称的通信重定向到正确的URL/端口。这是在管理/Web门户管理/设置/通用/端口下设置的。
如果你使用的是“hotspot.CompanyX.com”,它将与ISE证书中门户网站的内容不符。证书将只与实际的主机名匹配(例如:atw-cp-ise04.cisco.com)。这将导致证书不匹配错误,用户体验将不尽如人意。
我该如何解决这个问题?
标准X.509证书提供字段,允许证书匹配多个URL。这被称为主题替代名称字段。此证书字段可以使用其他DNS名称、其他IP地址等进行填充。
使用Subject替代名称字段将防止证书错误。然而,当生成证书签名请求(CSR)并发送给证书颁发机构进行签名时,思科ISE不提供填充这些字段的能力。
什么是“黑客”?
虽然ISE用户界面可能不提供用自己的证书签名请求(CSR)填充SAN字段的能力,但它仍然只是一个标准的X.509证书。为什么我们不直接从ISE导出公共和私有证书,然后使用OpenSSL来生成CSR呢?
(注意:我们已经在MAC-OS上尝试过了,因为OpenSSL是内置的,但是它不适合我们。我们确实成功地在Windows和Linux上使用了OpenSSL。在这个博客条目中,我将重点介绍使用OpenSSL的Windows实现。您可以从在这里)
让我们开始吧!
步骤1:首先,您应该为ISE节点生成一个新的自签名证书。将密钥长度设置为所需的密钥长度(例如2048)。
之后,您可以重新连接到ISE,它将使用新的证书。这里我正在查看新的证书,只是为了向您展示一些字段。没有主题替代名称字段,您可以看到下面的主题是CN=atw-cp-ise01.ise。本地(ISE节点的fqdn)。
步骤2:从ISE导出公共和私有证书。默认格式是包含公钥和私钥的.zip文件。在本例中:“atwcpise01iselocalatwcpis.zip”
步骤3:解压缩zip文件并将.pem和.pvk文件复制到OpenSSL二进制目录(C:\Program files (x86)\GnuWin32\bin)。
步骤4:为OpenSSL证书签名请求创建一个名为OpenSSL .cnf的自定义配置文件。可以找到一个非常好的openssl.cnf文件在这里。
步骤5:现在,您的OpenSSL .cnf文件已经准备好了证书定制,您将使用OpenSSL使用以下命令创建一个定制的CSR文件:
openssl req -key [PVK_file] -新推出[CSR_filename)配置(your_openssl.cnf_file]
步骤6:从CA请求一个新证书。在这个例子中我使用了Microsoft CA。
第七步:选择高级证书请求
第八步:粘贴第5步生成的证书请求文件的内容。确保证书模板类型为“Web服务器”。
步骤9:下载base64 (PEM)格式的证书。为了获得最佳效果,不要使用DER格式,也不要使用证书链。
第十步:在本地证书下,选择Add,然后导入本地服务器证书
步骤11:将原始私钥和新CA签名的公钥导入ISE。
- 对于证书文件,选择刚刚从CA下载的新的CA签名证书。
- 对于私钥文件,选择导出的原始私钥。
步骤12:您的ISE节点现在将使用新的CA签名证书,其中包含主题替代名称。