簡介
本文檔介紹在安全防火牆ASA上使用自動證書管理環境(ACME)協定註冊傳輸層安全(TLS)證書的過程。
必要條件
需求
思科建議您瞭解以下主題:
- 思科安全防火牆調適型安全裝置(ASA)
- 公開金鑰基礎架構 (PKI)
採用元件
- Cisco ASAv版本9.23.1。
- Cisco ASDM版本7.23(1)。
- 支援ACME協定的證書頒發機構(CA)伺服器。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
要求和限制
安全防火牆ASA上ACME註冊的當前要求和限制如下:
- 在ASA 9.23.1版和ASDM 7.23.1版以後支援
- 不支援多上下文
-
ACME不支援建立萬用字元憑證。每個證書請求必須指定一個確切的域名。
-
通過ACME註冊的每個信任點都限制在單個介面上,這意味著通過ACME註冊的證書不能跨多個介面共用。
-
金鑰對是自動生成的,不能為通過ACME註冊的證書共用。每個證書都使用唯一的金鑰對,從而增強了安全性,但限制了金鑰的重複使用。
降級注意事項
當降級到不支援安全防火牆ASA(9.22及更舊版本)上的ACME註冊的版本時:
- 9.23.x或更高版本的所有與ACME相關的信任點配置都將丟失
- 任何通過ACME註冊的證書仍然可以訪問,但在第一次降級後儲存和重新啟動後,私鑰將取消關聯
如果需要降級,請執行下一個建議的變通方法:
- 降級之前,請確保以PKCS12格式匯出ACME證書。
- 降級之前,請確保刪除ACME信任點配置。
- 降級後,匯入PKCS12證書。生成的信任點仍然有效,直到通過ACME頒發的證書過期。
背景資訊
ACME協定旨在簡化網路管理員的TLS證書管理。通過使用ACME,管理員可以自動執行獲取和更新TLS證書所涉及的流程。在使用Let's Encrypt等證書頒發機構(CA)時,這種自動化尤其有益,這些頒發機構使用ACME協定提供免費的、自動的開放式證書。
ACME支援頒發域驗證(DV)證書。這些證書是一種數位證書,用於確認證書持有者對指定域的控制。DV證書的驗證過程通常通過基於HTTP的質詢機制進行。在此機制中,申請人將特定檔案放在Web伺服器上,由證書頒發機構(CA)通過域的HTTP伺服器訪問該檔案來驗證該檔案。成功完成此練習可向CA證明申請人對該域擁有控制權,從而允許頒發DV證書。
完成註冊的過程是下一個:
- Initiate Certificate Request:客戶端從ACME伺服器請求證書並指定需要該證書的域。
- 接收HTTP-01質詢:ACME伺服器為客戶端提供帶有唯一令牌的HTTP-01質詢,以用於證明域控制。
- 準備質詢響應:
- 客戶端通過將ACME伺服器的令牌與其帳戶金鑰組合來建立金鑰授權。
- 客戶端設定其Web伺服器以在特定URL路徑上提供此金鑰授權。
- ACME伺服器檢索質詢:ACME伺服器向指定的URL發出HTTP GET請求以檢索金鑰授權。
- ACME伺服器驗證所有權:伺服器檢查檢索到的金鑰授權是否與預期值匹配,以確認客戶端對域的控制。
- 頒發證書:驗證成功後,ACME伺服器會向客戶端頒發SSL/TLS證書。
ACME註冊HTTP-01身份驗證流程。
使用ACME協定註冊TLS證書的最相關優勢包括:
- ACME有助於獲取和維護安全防火牆ASA TLS介面的TLS域證書。這種自動化顯著減少了手動任務,並有助於保持證書最新,不受持續監督。
- 通過啟用ACME的信任點,證書在即將到期時自動續訂。此功能可降低管理參與需求,確保不間斷的安全並防止意外證書過期。
設定
必要條件配置
在啟動ACME註冊流程之前,請確保滿足以下條件:
- 可解析的域名:您請求證書的域名必須由ACME伺服器解析。這可確保伺服器可以驗證域所有權。
- 安全防火牆訪問ACME伺服器:安全防火牆必須能夠通過其介面之一訪問ACME伺服器。此存取不需要透過要求其憑證的介面進行。
- TCP埠80可用性:允許從ACME CA伺服器到與域名對應的介面的TCP埠80。在ACME交換過程中,需要此步驟才能完成HTTP-01質詢。
附註:在埠80開啟期間,只能訪問ACME質詢資料。
使用ASDM註冊ACME
1.新增新的身份證書。
- 導航到Configuration > Remote Access VPN > Certificate Management > Identity Certificates。
- 按一下Add按鈕,然後選擇Add a new identity certificate。
ACME註冊ASDM身份證書。
2.指定身份證書的FQDN。
- 按一下Advanced按鈕。
- 在「Certificate Parameters」頁籤下,指定證書必須具有的FQDN。
ACME註冊ASDM FQDN。
3.選擇ACME作為註冊協定。
- 在Enrollment Mode頁籤下,選擇Request from CA 選項。
- 指定Source Interface並選擇acme作為Enrollment Protocol。
ACME註冊ASDM acme協定。選擇
4.選擇Let's Encrypt,以使您的證書由Let's Encrypt公共CA簽名。否則,請指定支援ACME註冊協定的內部CA的URL。此外,指定Authentication Interface。
附註:選中Let's Encrypt覈取方塊後,將自動填充伺服器URL。
ACME註冊ASDM身份驗證方法。
5.安裝CA證書。
如果勾選「安裝CA憑證」選項,您必須上傳發出憑證的即時CA的憑證。
附註:如果CA證書已經存在於安全防火牆上(來自以前的安裝或位於信任池中),則無需選中此選項。未選中安裝CA證書覈取方塊。
附註:選擇Let's Encrypt選項時,不選中Install CA Certificate覈取方塊,因為Let's Encrypt的根CA證書已包含在Secure Firewall信任池中。
ACME註冊ASDM CA安裝。
6.(可選)為身份證書啟用自動註冊。
選中Auto Enroll覈取方塊並指定Auto Enroll Lifetime的百分比。
此功能可確保證書在到期之前自動續訂。該百分比確定證書的續訂過程在到期之前提前多長時間開始。例如,如果設定為80%,則當憑證達到其有效期的80%時,續約程式開始。
ACME註冊ASDM自動註冊。
7.按一下OK和Save配置。
使用安全防火牆ASA CLI的ACME註冊
1.建立新的信任點。
建立信任點並指定acme作為註冊協定。
asav(config)# crypto ca trustpoint private_acme
asav(config-ca-trustpoint)# enrollment protocol ?
crypto-ca-trustpoint mode commands/options:
acme Automatic Certificate Management Environment
cmp Certificate Management Protocol Version 2
est Enrollment over Secure Transport
scep Simple Certificate Enrollment Protocol
2.選擇用於驗證域控制的身份驗證的HTTP-01方法。
asav(config-ca-trustpoint)# enrollment protocol acme authentication ?
crypto-ca-trustpoint mode commands/options:
http01 Use the HTTP-01 method, which opens port 80 on the specified
interface
3.選擇「讓我們加密作為ACME CA」。如果使用支援ACME協定的另一個CA,請提供適當的URL。
asav(config-ca-trustpoint)# enrollment protocol acme url ?
crypto-ca-trustpoint mode commands/options:
LINE < 477 char URL
LetsEncrypt Use the Let's Encrypt CA
附註:設定LetsEncrypt關鍵字時,Let's Encrypt伺服器URL會自動填充。
4.定義證書的RSA金鑰對、完全限定域名(FQDN)和使用者名稱。
crypto ca trustpoint private_acme
enrollment interface outside
enrollment protocol acme authentication http01 outside
enrollment protocol acme url https://ca-acme.example.com:4001/acme/acme/directory
fqdn fj-asav.cisco.com
subject-name CN=fj-asav.example.com
keypair rsa modulus 4096
auto-enroll 80 regenerate
crl configure
5.驗證信任點。
附註:如果CA已經存在於安全防火牆上或使用加密(Let's Encrypt)時,可以跳過此步驟。
asav(config)# crypto ca authenticate private_acme
Enter the base 64 encoded CA certificate.
End with the word "quit" on a line by itself
-----BEGIN CERTIFICATE-----
MIIBwzCCAWqgAwIBAgIQedxaTD0J1G6tLgAGti6tizAKBggqhkjOPQQDAjAsMRAw
DgYDVQQKEwdjYS1hY21lMRgwFgYDVQQDEw9jYS1hY21lIFJvb3QgQ0EwHhcNMjQx
[truncated]
ADBEAiB7S4YZfn0K82K2yz5F5CzMe2t98LCpLRzoPJXMo7um1AIgH+K8EZMLstLN
AJQoplycJENo5D7kUmVrwUBBjREqv9I=
-----END CERTIFICATE-----
quit
INFO: Certificate has the following attributes:
Fingerprint: 40000000 40000000 40000000 40000000
Do you accept this certificate? [yes/no]: yes
Trustpoint CA certificate accepted.
6.註冊證書。
asav(config)# crypto ca enroll private_acme
% Start certificate enrollment ..
% The subject name in the certificate will be: CN=fj-asav.cisco.com
% The fully-qualified domain name in the certificate will be: fj-asav.example.com
% Include the device serial number in the subject name? [yes/no]: no
Request certificate from CA? [yes/no]: yes
驗證
檢視ASA中安裝的證書
確認證書已註冊,並驗證續訂日期。
asav# show crypto ca certificates private_acme
CA Certificate
Status: Available
Certificate Serial Number: 79d0000000000000000000008b
Certificate Usage: General Purpose
Public Key Type: ECDSA (256 bits)
Signature Algorithm: ecdsa-with-SHA256
Issuer Name:
CN=ca-acme Root CA
O=ca-acme
Subject Name:
CN=ca-acme Intermediate CA
O=ca-acme
Validity Date:
start date: 23:20:19 UTC Nov 26 2024
end date: 23:20:19 UTC Nov 24 2034
Storage: config
Associated Trustpoints: private_acme
Public Key Hashes:
SHA1 PublicKey hash: 8c82000000000000000000000000000000000077
SHA1 PublicKeyInfo hash: 974c0000000000000000000000000000000009e1
Certificate
Status: Available
Certificate Serial Number: 666000000000000000000000000000be
Certificate Usage: General Purpose
Public Key Type: RSA (4096 bits)
Signature Algorithm: ecdsa-with-SHA256
Issuer Name:
CN=ca-acme Intermediate CA
O=ca-acme
Subject Name:
CN=fj-asav.example.com
Validity Date:
start date: 20:51:00 UTC Feb 14 2025
end date: 20:52:00 UTC Feb 15 2025
renew date: 16:03:48 UTC Feb 15 2025
Storage: immediate
Associated Trustpoints: private_acme
Public Key Hashes:
SHA1 PublicKey hash: e6e00000000000000000000000000000000089a
SHA1 PublicKeyInfo hash: 5e30000000000000000000000000000000009f
系統日誌事件
安全防火牆中有新的系統來捕獲使用ACME協定的證書註冊相關的事件:
%ASA-5-717067: Starting ACME certificate enrollment for the trustpoint <private_acme> with CA <ca-acme.example.com>. Mode <manual>
%ASA-5-717068: ACME Certificate enrollment succeeded for trustpoint <private_acme> with CA <ca-acme.example.com>. Received a new certificate with Subject Name <CN=fj-asav.example.com> Issuer Name <CN=ca-acme Intermediate CA,O=ca-acme> Serial Number <truncated>
%ASA-3-717069: ACME Certificate enrollment failed for trustpoint <private_acme>
- 717070:提供與證書註冊或證書續訂的金鑰對相關的資訊
%ASA-5-717070: Keypair <Auto.private_acme> in the trustpoint <private_acme> is regenerated for <manual> ACME certificate enrollment
疑難排解
如果ACME證書註冊失敗,請考慮以下步驟來識別和解決問題:
- 檢查與伺服器的連線:確認Secure Firewall與ACME伺服器具有網路連線。確認沒有網路問題或防火牆規則阻止通訊。
- 確保安全防火牆域名可解析:確保安全防火牆上配置的域名可由ACME伺服器解析。此驗證對於伺服器驗證請求至關重要。
- 確認域所有權:驗證信任點中指定的所有域名是否都歸安全防火牆所有。這可確保ACME伺服器可以驗證域所有權。
指令疑難排解
如需其他資訊,請收集下一個debug命令的輸出:
- debug crypto ca acme <1-255>
- debug crypto ca <1-14>
常見ACME註冊錯誤:
錯誤代碼
|
原因
|
可能的原因或修正
|
7
|
無法連線到伺服器
|
伺服器可訪問,但ACME服務未運行。
|
28
|
無法連線到伺服器
|
無法訪問伺服器。
檢查對ACME伺服器的基本網路訪問。
|
60
|
無法驗證伺服器證書
|
確保根或頒發者CA存在於信任點或信任池中。
|
124
|
ACME處理超時
|
確保所有請求的FQDN都解析為為HTTP-01身份驗證配置的介面。
確保配置的ACME URL正確。
|
相關資訊
如需其他協助,請聯絡TAC。需要有效的支援合約:思科全球支援聯絡人.
您還可以在此處訪問Cisco VPN社群。