目錄

簡介

必要條件

需求

採用元件

背景資訊

設定

步驟 1.建立副檔名為「基本約束： CA:TRUE」的證書簽名請求(CSR)

步驟 2.建立PKCS12檔案

步驟 3.將PKCS#12證書上載到Azure和FDM

將證書上載到Azure

將證書上載到FDM

驗證

簡介

本文檔介紹如何在FDM版本7.2或更低版本管理的FTD上使用Azure作為IdP為遠端訪問VPN配置SAML身份驗證。

必要條件

需求

思科建議您瞭解以下主題的基本知識：

- 安全通訊端層(SSL)憑證

- OpenSSL

- Linux命令

- 遠端存取虛擬私人網路(RAVPN)

- 安全防火牆裝置管理員(FDM)

- 安全斷言標籤語言(SAML)

- Microsoft Azure

採用元件

本檔案中的資訊是根據以下軟體版本：

- OpenSSL版本CiscoSSL 1.1.1j.7.2sp.230

- 安全防火牆威脅防禦(FTD)版本7.2.0

- 安全防火牆裝置管理員版本7.2.0

- 內部憑證授權單位(CA)

本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除（預設）的組態來啟動。如果您的網路運作中，請確保您瞭解任何指令可能造成的影響。

背景資訊

SAML身份驗證用於RAVPN連線和其他許多應用程式近來因其優勢而越來越流行。SAML是在各方之間交換身份驗證和授權資訊的開放標準，具體來說是指身份提供程式(IdP)和服務提供程式(SP)。

在FDM 7.2.x或更低版本管理的FTD中存在一個限制，其中SAML身份驗證的唯一支援的IdP是Duo。在這些版本中，將用於SAML身份驗證的證書上載到FDM時，必須具有基本約束：CA:TRUE副檔名。

因此，由其他IdP（沒有所需的副檔名）提供的證書（例如Microsoft Azure for SAML身份驗證）在這些版本中原生不受支援，導致SAML身份驗證失敗。

註意：FDM版本7.3.x和更高版本允許在上載新證書時啟用「跳過CA檢查」選項。這解決了本文檔中所述的限制。

如果使用Azure提供的證書配置SAML身份驗證的RAVPN，並且該證書沒有基本約束： CA:TRUE擴展，則在運行show saml metadata <trustpoint name> 命令從FTD命令列介面(CLI)檢索後設資料時，輸出為空，如下所示：

firepower# show saml metadata

SP Metadata

-----------

IdP Metadata

-----------

設定

解決此限制的建議計畫是將Secure Firewall升級到7.3版或更高版本，但是，如果出於任何原因需要防火牆運行7.2版或更低版本，您可以通過建立包含Basic Constraints: CA:TRUE擴展的自定義證書來解決此限制。證書由自定義CA簽名後，您需要在Azure SAML配置門戶中更改配置，以便改用此自定義證書。

步驟 1.建立副檔名為「基本約束： CA:TRUE」的證書簽名請求(CSR)

本節介紹如何使用OpenSSL為包含基本約束： CA:TRUE擴展建立CSR。

1.登入到已安裝OpenSSL庫的終結點。

2.（可選）使用mkdir <folder name> 命令建立一個目錄，您可以在其中找到此證書所需的檔案。

root@host1:/home/admin# mkdir certificate

3.如果建立了新目錄，請更改該目錄的目錄，並生成運行openssl genrsa -out <key_name>.key 4096命令的新私鑰。

root@host1:/home/admin/certificate# openssl genrsa -out privatekey.key 4096

註:4096位表示此配置示例的金鑰長度。如果需要，可以指定一個較長的金鑰。

4.使用touch <config_name>.conf命令建立組態檔。

5.使用文本編輯器編輯檔案。在本範例中，使用Vim，並執行vim <config_name>.conf命令。您可以使用任何其他文本編輯器。

vim config.conf

6.輸入要包括在證書簽名請求(CSR)中的資訊。確保在檔案中新增basicConstraints = CA:true副檔名，如下所示：

[ req ]

default_bits = 4096

default_md = sha256

prompt = no

encrypt_key = no

distinguished_name = req_distinguished_name

req_extensions = v3_req

[ req_distinguished_name ]

countryName =

stateOrProvinceName =

localityName =

organizationName =

organizationalUnitName =

commonName =

[ v3_req ]

basicConstraints = CA:true

註: basicConstraints = CA:true是憑證需要具有的擴充模組，FTD才能成功安裝憑證。

7.使用在前面的步驟中建立的金鑰和組態檔，可以使用openssl req -new <key_name>.key -config <conf_name>.conf -out <CSR_Name>.csr指令建立CSR:

openssl req -new -key privatekey.key -config config.conf -out CSR.csr

8.執行此命令後，您可以看到資料夾中列出的<CSR_name>.csr檔案，該檔案是必須傳送到CA伺服器進行簽署的CSR檔案。

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

MIIErTCCApUCAQAwSTELMAkGA1UEBhMCTVgxFDASBgNVBAgMC01laXhjbyBDaXR5

MRQwEgYDVQQHDAtNZWl4Y28gQ2l0eTEOMAwGA1UECgwFQ2lzY28wggIiMA0GCSqG

SIb3DQEBAQUAA4ICDwAwggIKAoICAQDRWH+ij26HuF/Y6NvITCkD5VJa6KRssDJ8

[...]

Output Omitted

[...]

lRZ3ac3uV0y0kG6FamW3BhceYcDEQN+V0SInZZZQTw1Q5h23JsPkvJmRpKSilc7w

3rKfTXelewT1IJdCmgpp6qrwmEAPyrj/XnYyM/2nc3E3yJLxbGyT++yiVrr2RJeG

Wu6XM4o410LcRdaQZUhuFL/TPZSeLGJB2KU6XuqPMtGAvdmCgqdPSkwWc9mdnzKm

RA==

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

註意：由於Azure要求，必須使用配置了SHA-256或SHA-1的CA對CSR進行簽名，否則，Azure IdP將在你上載證書時拒絕該證書。可在以下連結中找到更多資訊：SAML令牌中的高級證書簽名選項

9.將此CSR檔案與您的CA一起傳送以獲取已簽名的證書。

步驟 2.建立PKCS12檔案

簽署身份證書後，您需要使用以下3個檔案建立公鑰加密標準(PKCS#12)檔案：

- 簽名的身份證書

- 私鑰（在前面的步驟中定義）

- CA憑證鏈結

您可以將身份證書和CA證書鏈複製到建立私鑰和CSR檔案的同一裝置。收到3個檔案後，執行openssl pkcs12 -export -in <id_certificate>.cer -certfile <ca_cert_chain>.cer -inkey <private_key_name>.key -out <pkcs12_name>.pfx命令將憑證轉換為PKCS#12。

openssl pkcs12 -export -in id.cer -certfile ca_chain.cer -inkey privatekey.key -out cert.pfx

執行命令後，系統會要求您輸入密碼。安裝證書時需要此密碼。

如果命令成功，將在當前目錄中建立名為「<pkcs12_name>.pfx」的新檔案。這是您的新PKCS#12證書。

步驟 3.將PKCS#12證書上載到Azure和FDM

收到PKCS#12檔案後，需要將其上傳到Azure和FDM。

將證書上載到Azure

1.登入到Azure門戶，導航到要使用SAML身份驗證保護的企業應用程式，然後選擇「單一登入」。

2.向下滾動至SAML Certificates部分，然後選擇More Options圖示> Edit。

3.現在選擇匯入證書選項。

4.查詢以前建立的PKCS12檔案，並使用您在建立PKCS#12檔案時輸入的密碼。

5.最後，選擇Make Certificate Active選項。

將證書上載到FDM

1.導航到對象 > 證書 >按一下新增受信任CA證書。

2.輸入您喜歡的信任點名稱，僅從IdP（而不是PKCS#12檔案）上傳身份證書

3.在SAML對象中設定新證書並部署更改。

驗證

運行show saml metadata <trustpoint name>命令以確保後設資料可從FTD CLI獲得：

firepower# show saml metadata azure

SP Metadata

-----------

xmlns="urn:oasis:names:tc:SAML:2.0:metadata">

protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">

Location="https://[...omitted...]/+CSCOE+/saml/sp/logout"/>

Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"

Location="https://[...omitted...]/+CSCOE+/saml/sp/logout"/>

IdP Metadata

------------

xmlns="urn:oasis:names:tc:SAML:2.0:metadata">

Location="https://login.microsoftonline.com/[...omitted...]/saml2" />

Location="https://login.microsoftonline.com/[...omitted...]/saml2" />

Location="https://login.microsoftonline.com/[...omitted...]/saml2" />