目录

简介

先决条件

要求

使用的组件

链接证书

对链接证书的支持

证书级别

步骤1:生成 CSR

选项 A：使用 OpenSSL 生成 CSR

选项 B. 通过 WLC 生成 CSR

第二步：获取证书签名

选项A：从您的企业CA获取Final.pem文件

选项B：从第三方CA获取Final.pem文件

第 3 步 CLI.使用CLI将第三方证书下载到WLC

第 3 步 GUI.使用GUI将第三方证书下载到WLC

故障排除

高可用性(HA SSO)注意事项

相关信息

简介

本文档介绍如何在AireOS WLC上生成和导入证书。

先决条件

要求

Cisco 建议您了解以下主题：

- 如何配置 WLC、轻量级无线接入点 (LAP) 和无线客户端卡以执行基本操作.

- 如何使用OpenSSL应用.

- 公钥基础设施和数字证书

使用的组件

本文档中的信息基于以下软件和硬件版本：

- 运行固件版本8.3.102的Cisco 5508 WLC

- 适用于 Microsoft Windows 的 OpenSSL 应用程序

- 特定于第三方认证机构(CA)的注册工具

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您的网络处于活动状态，请确保您了解所有命令的潜在影响。

链接证书

证书链是证书序列，其中链中的每个证书由后续证书签名。

证书链的目的是建立从对等证书到受信任CA证书的信任链。签名时，CA会为对等证书中的身份提供担保。

如果CA是您信任的CA（通过根证书目录中存在的CA证书副本表示），这意味着您也可以信任签名对等证书。

通常，客户端不接受这些证书，因为它们并非由已知的 CA 创建。客户端通常会指出证书有效性无法进行验证。

如果证书由不为客户端浏览器所知的中间 CA 签署，即会出现这种情况。在这类情况下，需要使用链接 SSL 证书或证书组。

对链接证书的支持

控制器允许将设备证书下载为用于 Web 身份验证的链接证书。

证书级别

- 0级 — 仅在WLC上使用服务器证书

- 1级 — 在WLC上使用服务器证书和CA根证书

- 第2级 — 在WLC上使用服务器证书、一个CA中间证书和一个CA根证书

- 第3级 — 在WLC上使用服务器证书、两个CA中间证书和一个CA根证书

WLC 不支持在 WLC 上使用大小超过 10KB 的链接证书。但是，WLC 7.0.230.0 及更高版本中已去除这一限制。

注意：链接证书受支持，并且实际需要Web身份验证和Web管理

注意：本地EAP、管理或Web身份验证完全支持通配符证书

Web 身份验证证书可以是以下任何一种证书：

- 链式

- 未链接

- 自动生成

注意：在WLC版本7.6及更高版本中，仅支持链接证书（因此需要）

要生成用于管理的非链接证书，本文档将忽略证书与CA证书结合使用的部分。

本文档讨论如何将安全套接字层 (SSL) 链接证书正确安装到 WLC。

步骤1:生成 CSR

生成CSR有两种方法。使用OpenSSL（8.3 WLC之前软件中唯一可能的方式）手动或转到WLC自身生成CSR（在8.3.102之后可用）。

选项 A：使用 OpenSSL 生成 CSR

注意：Chrome版本58及更高版本不只信任证书的公用名，还需要提供使用者备用名。下一部分说明如何将SAN字段添加到OpenSSL CSR，这是此浏览器的一项新要求。

完成以下步骤，以使用 OpenSSL 生成 CSR：

1. 安装并打开OpenSSL。

在Microsoft Windows中，默认情况下，openssl.exe位于 C:\ > openssl > bin.

注意：OpenSSL版本0.9.8是旧WLC版本的推荐版本；但是，自7.5版本起，还添加了对OpenSSL版本1.0的支持(请参阅Cisco Bug ID CSCti65315 - Need Support for certificates generated with OpenSSL v1.0)，并且是推荐使用的版本。OpenSSL 1.1 works也经过测试，适用于8.x及更高版本的WLC。

2. 找到 OpenSSL 配置文件并复制该配置文件，以便为生成此 CSR 编辑该副本。编辑副本以添加以下部分：

3. [req]

req_extensions = v3_req

[ v3_req ]

# Extensions to add to a certificate request

basicConstraints = CA:FALSE

keyUsage = nonRepudiation, digitalSignature, keyEncipherment

subjectAltName = @alt_names

[alt_names]

DNS.1 = server1.example.com

DNS.2 = mail.example.com

DNS.3 = www.example.com

DNS.4 = www.sub.example.com

DNS.5 = mx.example.com

DNS.6 = support.example.com
以“DNS.1”、“DNS.2”（等等）开头的行必须包含证书的所有备用名称。然后写下任何可用于WLC的URL。上一个示例中粗体显示的行不存在，或者在我们的实验openSSL版本中进行了注释。它可能因操作系统和openssl版本而异。我们将此修改后的配置版本另存为 openssl-san.cnf 在本例中。

4. 输入以下命令以生成新的CSR:

OpenSSL>req -new -newkey rsa:3072 -nodes -keyout mykey.pem -out myreq.pem -config openssl-san.cnf

注意：自8.5软件版本起，WLC支持的最大密钥大小为4096位

5. 提供一些信息的提示：国家/地区名称、州/省、城市等。提供必填信息。

注意：提供正确的公用名非常重要。确保用于创建证书的主机名（通用名称）与 WLC 上虚拟接口 IP 地址对应的域名系统 (DNS) 主机名条目匹配，并且该名称也存在于 DNS 中。此外，在对虚拟 IP (VIP) 接口进行更改后，必须重新启动系统才能使更改生效。
例如：

OpenSSL>req -new -newkey rsa:3072 -nodes -keyout mykey.pem -out myreq.pem -config openssl-san.cnf

Loading 'screen' into random state - done

Generate a 1024 bit RSA private key

................................................................++++++

...................................................++++++

writing new private key to 'mykey.pem'

-----

You are about to be asked to enter information that is incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there is a default value,

If you enter '.', the field is left blank.

-----

Country Name (2 letter code) [AU]:US

State or Province Name (full name) [Some-State]:CA

Locality Name (eg, city) []:San Jose

Organization Name (eg, company) [Internet Widgits Pty Ltd]:ABC

Organizational Unit Name (eg, section) []:CDE

Common Name (eg, YOUR name) []:XYZ.ABC

Email Address []:(email address)

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:Test123

An optional company name []:OpenSSL>

6. 您可以使用以下命令验证CSR（尤其是对于存在的SAN属性）  openssl req -text -noout -in csrfilename

7. 提供所有必需的详细信息后，系统将生成两个文件：

- 包含名称 mykey.pem 的新私钥

- 包含名称 myreq.pem 的 CSR

选项 B. 通过 WLC 生成 CSR

如果WLC运行软件版本8.3.102或更高版本，则更安全的选项是使用WLC生成CSR。其优点是密钥在WLC上生成，不会离开WLC；因此不会暴露在外部世界中。

到目前为止，此方法不允许在CSR中配置SAN，已知这会导致某些浏览器出现问题，需要存在SAN属性。有些CA允许在签名时插入SAN字段，因此最好与您的CA进行核对。

由WLC自身生成的CSR使用2048位密钥大小，ecdsa密钥大小为256位。

注：如果您运行csr generation命令并且尚未安装后续证书，则您的WLC将在下次重新启动时在HTTPS上完全无法访问，因为WLC在重新启动后使用新生成的CSR密钥，但没有随附的证书。

要生成用于Web身份验证的CSR，请输入以下命令：

(WLC)>config certificate generate csr-webauth BE BR Brussels Cisco TAC mywebauthportal.wireless.com tac@cisco.com

-----BEGIN CERTIFICATE REQUEST-----

MIICqjCCAZICAQAwZTELMAkGA1UECAwCQlIxETAPBgNVBAcMCEJydXNzZWxzMQ4w

DAYDVQQKDAVDaXNjbzEMMAoGA1UECwDVEFDMSUwIwYDVQDDBxteXdlYmF1dGhw

b3J0YWud2lyZWxlc3MuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC

AQEAnssc0BxlJ2ULa3xgJH5lAUtbd9CuQVqqf2nflh+V1tu82rzTvz38bjF3g+MX

JiaBbKMA27VJH1J2K2ycDMlhjyYpH9N59T4fXvZr3JNGVfmHIRuYDnCSdil0ookK

FU4sDwXyOxR6gfB6m+Uv5SCOuzfBsTz5bfQ1NlZqg1hNemnhqVgbXEd90sgJmaF2

0tsL0jUhbLosdwMLUbZ5LUa34mvufoI3VAKA0cmWZh2WzMJiaI2JpbO0afRO3kSg

x3XDkZiR7Z9a8rK6Xd8rwDlx0TcMFWdWVcKMDgh7Tw+Ba1cUjjIMzKT6OOjFGOGu

yNkgYefrrBN+WkDdc6c55bxErwIDAQABoAAwDQYJKoZIhvcNAQELBQADggEBAB0K

ZvEpAafoovphlcXIEl2DSwVzjlbd9u7T5JRGgqri1l9/0wzxFjTymQofga427mj

5dNqlCWxRFmKhAmO0fGQkUoP1YhJRxidu+0T8O46s/stbhj9nuInmoTgPaA0s3YH

tDdWgjmV2ASnroUV9oBNu3wR6RQtKDX/CnTSRG5YufTWOVf9IRnL9LkU6pzA69Xd

YHPLnD2ygR1Q+3Is4+5Jw6ZQAaqlPWyVQccvGyFacscA7L+nZK3SSITzGt9B2HAa

PQ8DQOaCwnqt2efYmaezGiHOR8XHOaWcNoJQCFOnb4KK6/1aF/7eOS4LMA+jSzt4

Wkc/wH4DyYdH7x5jzHc=

-----END CERTIFICATE REQUEST-----

为了生成webadmin的CSR，命令更改为：

(WLC)>config certificate generate csr-webadmin BE BR Brussels Cisco TAC mywebauthportal.wireless.com tac@cisco.com

注意：输入命令后，CSR会打印在终端上。没有其他方法可以检索它；无法从WLC上传它，也无法保存它。输入命令后，必须将其复制/粘贴到计算机上的文件。生成的密钥将保留在 WLC 上，直到生成下一个 CSR（因此该密钥将被覆盖）。如果您稍后需要更改WLC硬件(RMA)，则无法重新安装新密钥的相同证书，并且在新WLC上生成CSR。

到

然后，您必须将此 CSR 移交给第三方签名机构或企业公钥基础设施 (PKI)。

第二步：获取证书签名

选项A：从您的企业CA获取Final.pem文件

此示例只显示当前的企业CA（本示例中为Windows Server 2012），不包括从头开始设置Windows Server CA的步骤。

1. 在浏览器中转到您的企业CA页面(通常为https://<CA-ip>/certsrv)，然后单击 Request a certificate.

2. 点击 advanced certificate request.

3. 输入从WLC或OpenSSL获取的CSR。在Certificate Template下拉列表中，选择 Web Server.

4. 单击 Base 64 encoded单选按钮.

5. 如果下载的证书类型为PKCS7(.p7b)，请将其转换为PEM（在下一个示例中，证书链下载为文件名“All-certs.p7b”）：

openssl pkcs7 -print_certs -in All-certs.p7b -out All-certs.pem

6.如果您选择选项A（OpenSSL生成CSR），则将证书链（在本例中名为“All-certs.pem”）证书与与CSR（设备证书的私钥，在本例中为mykey.pem）一起生成的私钥合并，并将文件另存为final.pem。如果直接从WLC生成CSR（选项B），请跳过此步骤。

在OpenSSL应用程序中输入以下命令以创建All-certs.pem和final.pem文件：

openssl>pkcs12 -export -in All-certs.pem -inkey mykey.pem

-out All-certs.p12 -clcerts -passin pass:check123

-passout pass:check123

openssl>pkcs12 -in All-certs.p12 -out final.pem

-passin pass:check123 -passout pass:check123

注：在此命令中，必须输入参数 — passin和-passout的口令。为 - passout 参数配置的口令必须与在 WLC 上配置的 certpassword 参数匹配。在本例中，为 -passin 和 -passout 参数配置的密码均为 check123。

如果遵循“选项A.使用OpenSSL的CSR”，则Final.pem是下载到WLC的文件。

如果遵循“选项B.由WLC自身生成的CSR”，则All-certs.pem是下载到WLC的文件。下一步是将此文件下载到 WLC。

注：如果向WLC上传证书失败，请验证pem文件中是否存在整个链。请参阅选项B的步骤2（从第三方CA获取final.pem），了解其外观必须如何。如果您在该文件中仅看到一个证书，则需要手动下载所有中间证书和根 CA 证书文件，并将它们（通过简单的复制粘贴）附加到该文件中以创建链。

选项B：从第三方CA获取Final.pem文件

1. 复制 CSR 信息并将其粘贴到任意 CA 注册工具中。

将 CSR 提交给第三方 CA 后，第三方 CA 会对证书进行数字签名，并通过电子邮件发回签名的证书链。对于链式证书，您会从CA接收整个证书链。如果只有一个中间证书（如本例所示），您会从 CA 收到以下三个证书：

- 根 certificate.pem

- 中间 certificate.pem

- 设备 certificate.pem

注：确保证书与安全哈希算法1(SHA1)加密兼容Apache。

2. 拥有全部三个证书后，请按以下顺序将每个.pem文件的内容复制并粘贴到另一个文件中：

------BEGIN CERTIFICATE------

*Device cert*

------END CERTIFICATE------

------BEGIN CERTIFICATE------

*Intermediate CA cert *

------END CERTIFICATE--------

------BEGIN CERTIFICATE------

*Root CA cert *

------END CERTIFICATE------

3. 将文件另存为 All-certs.pem。

4. 如果使用选项A（OpenSSL生成CSR），请将All-certs.pem证书与与CSR一起生成的私钥（设备证书的私钥，在本例中为mykey.pem）合并，并将文件另存为final.pem。如果直接从WLC生成CSR（选项B），请跳过此步骤。

在OpenSSL应用程序中输入以下命令以创建All-certs.pem和final.pem文件：

openssl>pkcs12 -export -in All-certs.pem -inkey mykey.pem

-out All-certs.p12 -clcerts -passin pass:check123

-passout pass:check123

openssl>pkcs12 -in All-certs.p12 -out final.pem

-passin pass:check123 -passout pass:check123

注：在此命令中，必须输入参数 — passin和-passout的口令。为 - passout 参数配置的口令必须与在 WLC 上配置的 certpassword 参数匹配。在本例中，为 -passin 和 -passout 参数配置的密码均为 check123。

如果遵循“选项A.使用OpenSSL的CSR”，则Final.pem是下载到WLC的文件。 如果遵循“选项B.由WLC自身生成的CSR”，则All-certs.pem是必须下载到WLC的文件。 下一步是将此文件下载到 WLC。

注：也支持SHA2。Cisco Bug ID CSCuf20725是SHA512支持请求。

第 3 步 CLI.使用CLI将第三方证书下载到WLC

完成以下步骤，使用CLI将链接证书下载到WLC:

1. 将 final.pem 文件移到 TFTP 服务器上的默认目录。

2. 在CLI中，输入以下命令以更改下载设置：

>transfer download mode tftp

>transfer download datatype webauthcert

>transfer download serverip

>transfer download path

>transfer download filename final.pem

3. 输入 .pem 文件的口令，以使操作系统可以解密 SSL 密钥和证书。

>transfer download certpassword password

注：请确保certpassword的值与Generate a CSR部分的步骤4（或5）中设置的-passout参数密码相同。在本示例中， certpassword必须是check123。如果您选择了选项B（即，使用WLC本身生成CSR），请将certpassword字段留空。

4. 输入 transfer download start 命令查看更新的设置。然后在提示符处输入 y 以确认当前下载设置并开始证书和密钥下载。例如：

(Cisco Controller) >transfer download start

Mode............................................. TFTP

Data Type........................................ Site Cert

TFTP Server IP................................... 10.77.244.196

TFTP Packet Timeout.............................. 6

TFTP Max Retries................................. 10

TFTP Path........................................./

TFTP Filename.................................... final.pem

This might take some time.

Are you sure you want to start? (y/N) y

TFTP EAP Dev cert transfer start.

Certificate installed.

Reboot the switch to use new certificate.

5. 重新启动 WLC，以使更改生效。

第 3 步 GUI.使用GUI将第三方证书下载到WLC

完成以下步骤，以通过GUI将链接证书下载到WLC:

1. 将设备证书 final.pem 复制到 TFTP 服务器上的默认目录。

2. 选择 Security > Web Auth > Cert 以打开Web身份验证证书页面。

3. 查看 Download SSL Certificate复选框以查看Download SSL Certificate From TFTP Server参数。

4. 在 IP Address 字段中输入 TFTP 服务器的 IP 地址。

5. 在 File Path 字段中输入证书的目录路径。

6. 在 File Name 字段中输入证书的名称。

7. 在 Certificate Password 字段中输入用于保护证书的口令。

8. 点击 Apply.

9. 下载完成后，选择 Commands > Reboot > Reboot.

10. 如果系统提示您保存更改，请单击 Save and Reboot.

11. 单击 OK 以确认您需要重新启动控制器。

故障排除

要对WLC上的证书安装进行故障排除，请在WLC上打开命令行并输入 debug transfer all enable 和 debug pm pki enable 然后完成下载证书过程。

In some cases, the logs only say that the certificate installation failed:

*TransferTask: Sep 09 08:37:17.415: RESULT_STRING: TFTP receive complete... Installing

Certificate.

*TransferTask: Sep 09 08:37:17.415: RESULT_CODE:13

TFTP receive complete... Installing Certificate.

*TransferTask: Sep 09 08:37:21.418: Adding cert (1935 bytes) with certificate key password.

*TransferTask: Sep 09 08:37:21.421: RESULT_STRING: Error installing certificate.

验证证书格式和链。请记住，高于7.6版的WLC要求存在整个链，因此不能单独上传WLC证书。到根CA的链必须存在于文件中。

以下是中间CA不正确时的调试示例：

*TransferTask: Jan 04 19:08:13.338: Add WebAuth Cert: Adding certificate & private key using password check123

*TransferTask: Jan 04 19:08:13.338: Add ID Cert: Adding certificate & private key using password check123

*TransferTask: Jan 04 19:08:13.338: Add Cert to ID Table: Adding certificate (name: bsnSslWebauthCert) to ID table using password check123

*TransferTask: Jan 04 19:08:13.338: Add Cert to ID Table: Decoding PEM-encoded Certificate (verify: YES)

*TransferTask: Jan 04 19:08:13.338: Decode & Verify PEM Cert: Cert/Key Length was 0, so taking string length instead

*TransferTask: Jan 04 19:08:13.338: Decode & Verify PEM Cert: Cert/Key Length 7148 & VERIFY

*TransferTask: Jan 04 19:08:13.342: Decode & Verify PEM Cert: X509 Cert Verification return code: 0

*TransferTask: Jan 04 19:08:13.342: Decode & Verify PEM Cert: X509 Cert Verification result text: unable to get local issuer certificate

*TransferTask: Jan 04 19:08:13.342: Decode & Verify PEM Cert: Error in X509 Cert Verification at 0 depth: unable to get local issuer certificate

*TransferTask: Jan 04 19:08:13.343: Add Cert to ID Table: Error decoding (verify: YES) PEM certificate

*TransferTask: Jan 04 19:08:13.343: Add ID Cert: Error decoding / adding cert to ID cert table (verifyChain: TRUE)

*TransferTask: Jan 04 19:08:13.343: Add WebAuth Cert: Error adding ID cert

高可用性(HA SSO)注意事项

如 WLC HA SSO 部署指南中所述，在 HA SSO 场景中，不会将证书从主控制器复制到辅助控制器。

这意味着在形成HA对之前，您必须将所有证书导入到辅助设备。

另一个注意事项是，如果在主WLC上生成CSR（因此是在本地创建密钥），则此操作不起作用，因为无法导出该密钥。

唯一的方法是使用 OpenSSL 为主 WLC 生成 CSR（因此将密钥附加到证书），然后在两个 WLC 上导入该证书/密钥组合。

相关信息

- 生成第三方证书的CSR并且下载被释放的证书到WLC

- 在无线控制系统 (WCS) 上为第三方证书生成证书签名请求 (CSR)

- 在Linux服务器上安装的无线控制系统(WCS)证书签名请求(CSR)配置示例

- 技术支持和文档 - Cisco Systems

- WLC HA SSO指南