簡介
本文檔介紹如何在AireOS WLC上生成和導入證書。
必要條件
需求
思科建議您瞭解以下主題:
- 如何設定 WLC、輕型存取點 (LAP) 和無線用戶端卡以達成基本操作.
- 如何使用 OpenSSL 應用程式.
- 公開金鑰基礎架構和數位憑證
採用元件
本文中的資訊係根據以下軟體和硬體版本:
- Cisco 5508 WLC(執行韌體版本 8.3.102)
- 適用於 Microsoft Windows 的 OpenSSL 應用程式
- 第三方憑證授權單位 (CA) 特定的註冊工具
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
鏈結憑證
憑證鏈結是一系列憑證,鏈結中的每個憑證皆由後續的憑證簽署。
憑證鏈結旨在建立一條從對等憑證到受信任 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:
- 安裝並開啟 OpenSSL。
在 Microsoft Windows 中,openssl.exe 預設位於 C:\> openssl > bin。
注意:OpenSSL版本0.9.8是建議舊版WLC使用的版本;但是,自版本7.5起,還新增對於OpenSSL版本1.0的支援(請參閱思科錯誤ID CSCti65315 -需要對於使用OpenSSL v1.0產生的憑證的支援),而且是建議使用的版本。OpenSSL 1.1有關作業也經過測試,可在WLC 8.x和更新版本中執行。
- 找到您的 OpenSSL 設定檔並複製,以便針對此 CSR 編輯該檔案。編輯副本以新增下一節:
-
[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。
- 輸入以下命令可產生新的CSR:
OpenSSL>req -new -newkey rsa:3072 -nodes -keyout mykey.pem -out myreq.pem -config openssl-san.cnf
注意:自8.5軟體版本起,WLC支援的最大金鑰大小為4096位元。
- 系統會提示您輸入一些資訊:國家/地區名稱、州/省、城市等。請提供必要資訊。
注意:提供正確的一般名稱非常重要。確定用來建立憑證的主機名稱(一般名稱)與 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>
- 您可以使用openssl req -text -noout -in csrfilename驗證CSR,特別是用於驗證SAN屬性存在與否。
- 提供所有必要的詳細資訊後,系統會產生兩個檔案:
- 包含名稱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產生命令,且尚未安裝後續憑證,則下次重新啟動時,HTTPS將完全無法存取WLC,因為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
DAYDVQQKDAVDaXNjbzEMMAoGA1UECwwDVEFDMSUwIwYDVQQDDBxteXdlYmF1dGhw
b3J0YWwud2lyZWxlc3MuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAnssc0BxlJ2ULa3xgJH5lAUtbd9CuQVqqf2nflh+V1tu82rzTvz38bjF3g+MX
JiaBbKMA27VJH1J2K2ycDMlhjyYpH9N59T4fXvZr3JNGVfmHIRuYDnCSdil0ookK
FU4sDwXyOxR6gfB6m+Uv5SCOuzfBsTz5bfQ1NlZqg1hNemnhqVgbXEd90sgJmaF2
0tsL0jUhbLosdwMLUbZ5LUa34mvufoI3VAKA0cmWZh2WzMJiaI2JpbO0afRO3kSg
x3XDkZiR7Z9a8rK6Xd8rwDlx0TcMFWdWVcKMDgh7Tw+Ba1cUjjIMzKT6OOjFGOGu
yNkgYefrrBN+WkDdc6c55bxErwIDAQABoAAwDQYJKoZIhvcNAQELBQADggEBAB0K
ZvEpAafoovphlcXIElL2DSwVzjlbd9u7T5JRGgqri1l9/0wzxFjTymQofga427mj
5dNqlCWxRFmKhAmO0fGQkUoP1YhJRxidu+0T8O46s/stbhj9nuInmoTgPaA0s3YH
tDdWgjmV2ASnroUV9oBNu3wR6RQtKDX/CnTSRG5YufTWOVf9IRnL9LkU6pzA69Xd
YHPLnD2ygR1Q+3Is4+5Jw6ZQAaqlPWyVQccvGyFacscA7L+nZK3SSITzGt9B2HAa
PQ8DQOaCwnqt2efYmaezGiHOR8XHOaWcNoJQCFOnb4KK6/1aF/7eOS4LMA+jSzt4
Wkc/wH4DyYdH7x5jzHc=
-----END CERTIFICATE REQUEST-----
若要產生用於Web管理的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)。
步驟 2.簽署憑證
選項A:從您的企業CA取得Final.pem檔案
此範例僅示範目前的企業CA(在本範例中為Windows Server 2012),並不涵蓋從頭開始設定Windows Server CA的步驟。
- 在瀏覽器中,前往您的企業 CA 頁面(通常為 https://<CA-ip>/certsrv), 然後按一下「Request a certificate」。
- 按一下「advanced certificate request」。
- 輸入您從 WLC 或 OpenSSL 取得的 CSR。在「Certificate Template」下拉清單中,選擇「Web Server」。
- 按一下Base 64 Encodedradio按鈕。
- 如果下載的憑證的型別為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(選項B)產生CSR,請跳過此步驟。
在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 和根 CA 憑證檔案,並將其附加(透過簡單的複製貼上)到該檔案以建立鏈結。
選項B:從第三方CA取得Final.pem檔案
- 將 CSR 資訊複製貼上到任一 CA 註冊工具中。
將 CSR 提交給第三方 CA後,第三方 CA 會以數位方式簽署憑證,並透過電子郵件傳回簽署的憑證鏈結。在鏈結憑證的情況下,您會收到來自 CA 的整個憑證鏈結。如果您只有一個中間憑證,如本例所示,您將收到來自 CA 的這三個憑證:
- Root certificate.pem
- Intermediate certificate.pem
- Device certificate.pem
注意:請確保證書與Apache的安全雜湊演算法1 (SHA1)加密相容。
- 收到所有三個憑證後,按以下順序將每個 pem 檔案的內容複製貼上到另一個檔案中:
------BEGIN CERTIFICATE------
*Device cert*
------END CERTIFICATE------
------BEGIN CERTIFICATE------
*Intermediate CA cert *
------END CERTIFICATE--------
------BEGIN CERTIFICATE------
*Root CA cert *
------END CERTIFICATE------
- 將檔案另存為 All-certs.pem。
- 如果您使用選項A(OpenSSL來產生CSR),請將All-certs.pem憑證與連同CSR一起產生的私密金鑰(裝置憑證的私密金鑰,在本範例中為mykey.pem)合併,然後將檔案另存為final.pem。如果您直接從WLC(選項B)產生CSR,請跳過此步驟。
在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。思科漏洞 ID CSCuf20725 是請求對於 SHA512 支援。
步驟 3:CLI。使用 CLI 將第三方憑證下載到 WLC
完成以下步驟,使用CLI將鏈結憑證下載到WLC:
- 將 final.pem file 移動到 TFTP 伺服器上的預設目錄中。
- 在CLI中,輸入以下命令以變更下載設定:
>transfer download mode tftp
>transfer download datatype webauthcert
>transfer download serverip <TFTP server IP address>
>transfer download path <absolute TFTP server path to the update file>
>transfer download filename final.pem
- 輸入 .pem 檔案的密碼,以便作業系統解密 SSL 金鑰和憑證。
>transfer download certpassword password
注意:請確定certpassword 的值與在「產生CSR」一節的步驟4(或5)中設定的-passout引數密碼相同。在本例中, certpassword 必須是 check123。如果您選擇了選項B (也就是使用WLC本身產生CSR),請將certpassword欄位留白。
- 輸入命令
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.
- 重新啟動 WLC 以使變更生效。
步驟 3:GUI。使用 GUI 將第三方憑證下載到 WLC
完成以下步驟,使用GUI將鏈結憑證下載到WLC:
- 將裝置憑證 final.pem 複製到 TFTP 伺服器上的預設目錄。
- 選擇Security > Web Auth > Cert以打開Web Authentication Certificate頁。
- 勾選「Download SSL Certificate」核取方塊,以查看 Download SSL Certificate From TFTP Server 憑證。
- 在「IP Address」欄位中,輸入 TFTP 伺服器的 IP 位址。
- 在「File Path」欄位中,輸入憑證的目錄路徑。
- 在「File Name」欄位中,輸入憑證的名稱。
- 在「Certificate Password」欄位中,輸入用來保護憑證的密碼。
- 按一下「Apply」。
- 下載完成後,依序選擇「Commands > Reboot > Reboot」。
- 如果系統提示儲存變更內容,請按一下「Save and Reboot」。
- 按一下「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 上匯入該憑證/金鑰組合。
相關資訊