與 CA 頒發憑證的不安全連接

與 CA 頒發憑證的不安全連接

我已從 Cisco C9300 的 CSR 匯入了 Web 伺服器憑證。此憑證來自憑證授權機構,並在鏈結末端顯示正確的 CA。 CLI 顯示憑證已正確安裝,沒有問題。問題是當我訪問安全網站 (https://) 查找交換器時,它說連接不安全。我在瀏覽器中檢查證書,它顯示我從 CA 獲得的證書。為什麼證書有效卻顯示不安全?

當進入該頁面時,它說NET::ERR_CERT_COMMON_NAME_INVALID

更新1: 感謝@Zac67,我正在檢查 Trustpoint 資訊。當我們造訪網頁的交換器時,我們使用https://ipaddress。我可以創建以下內容:

subject-name C=US, ST=Pennsylvania, L=My-Town, O=My-Org, OU=My-Department, CN=SWITCHNAME.DOMAIN.NET

但是當我subject-alt-name 192.168.1.10這樣做時,會出現以下錯誤:

CRYPTO_PKI: Label cannot be made only of digits. Also, ip addresses are not permitted

嘗試將地址放入 CN 但也不起作用。還是說證書無效。

更新2:我正在使用位於的操作方法這裡:建立 RSA 金鑰。有了這個金鑰,我就可以使用我的 CA 作為信任點。我獲得了指紋,可以從我的 Microsoft CA 取得 Web 伺服器憑證。我從 CA 取得 Web 伺服器證書,並使用相同的操作說明將其匯入交換器。然後我轉到該網頁,它說該網頁無效。該憑證來自我的網域的 CA。我不明白它如何認為它是無效的。

更新3:所以我正在研究 RICK 關於 SAN 的建議。我要聲明我們不使用 OpenSSL,因為我們不被允許這樣做。我們必須使用我們的網路 CA。對於 CN,我已將 CN 設定為憑證的 IP 位址。對於 SAN,思科有一個單獨的命令來說明ip-address新增位址,我有一個不同的命令subject-name-alternative,我無法將 IP 位址新增到該命令,因為這是不允許的。所以我發現我可以執行以下操作:

CN 可以是以下內容:

  • IP位址
  • 主機名稱
  • 完全合格域名

SAN(主題-名稱-替代項可以是以下內容:

  • 主機名稱
  • 完全合格域名

IP位址可以新增或不新增

嘗試了所有這些事情的混合,它仍然告訴我證書在 EDGE 上無效並出現錯誤:NET::ERR_CERT_COMMON_NAME_INVALID。如果您從 Edge 查看證書,如果我使用相同的指紋單獨打開它,它會顯示相同的證書。

那麼使用 Edge 從 IP 位址存取時 CN 應該是什麼?

更新4另外,在執行以下操作來製作 CSR 時,我新增了 IP 位址行。但當我查看憑證時,它看起來並沒有將 IP 位址新增到 SAN 中。事實上,該憑證根本沒有 SAN!看起來翻譯中有些東西遺失了。

crypto pki trustpoint my-trustpoint
enrollment terminal pem 
subject-name C=US, ST=Pennsylvania, L=My-Town, O=My-Org, OU=My-Department, CN=My-Switch.my-network.com
subject-alt-name my-switch.my-network.com
serial-number none
ip-address 192.168.1.51
revocation-check none
rsakeypair my-4096rsa-key
end

知道為什麼它不將 IP 位址包含到 SAN 中嗎?

答案1

詳細說明 Ricky 的評論:中使用的主機名https:// 必須符合憑證的使用者名稱 (SN) 或使用者備用名稱 (SAN) 之一。如果您使用裸 IP 位址,則它必須以 SAN 存在。即使最輕微的不匹配也會導致證書錯誤。

如果您使用自己的 CA,也要確保根 CA 憑證存在於用戶端的信任儲存中。

答案2

如果您使用的 Cisco IOS 版本不允許定義基於 IP 的使用者備用名稱 (SAN),那麼您應該透過其他工具(如 openssl)建立 CSR 以包含 IP,然後使用您的 CA 簽署 CSR。

使用 openssl,您將使用一個openssl.cnf設定檔並附加一個部分來包含 SAN(也可以透過 CLI 完成,但會變得更複雜一些)。

要使用配置文件,該[req]部分應包含一個req_extensions參數,例如:

req_extensions = req_ext

您提供的值是後面部分的“上下文”,它定義了您要使用的擴充功能。使用req_ext該值時,其餘配置將類似於:

[ req_ext ]
subjectAltName = @alt_names 

[alt_names]
IP.1    = 192.168.1.10
  • 若要確認產生的憑證簽署要求 (CSR) 包含您可以使用的項目:
openssl req -noout -text -in switch.csr

檢查是否有X509v3 主題備用名稱部分。內部應該是IP:包含您在openssl.cnf產生 CSR 時定義的任何內容的條目。如果您期望憑證保護的 IP 位址未在 CSR 的 SAN 項目中列出,則出現問題,任何由缺少欄位的 CSR 產生的憑證都會出現您所提及的錯誤,因為它無法正確保護 IP。

如果您看到預期的 IP 條目,則將 CSR 傳遞給您的 CA 進行簽署和建立憑證。

  • 若要確認 CA 簽署的憑證包含具有最新 openssl 的條目,您可以使用:
openssl x509 -noout -ext subjectAltName -in switch.pem
  • 若要確認 CA 簽署的憑證包含舊版 openssl 的條目(缺少擴充標誌-ext),您可以使用:
openssl x509 -noout -text -in switch.pem

使用上述任一方法,您都可以在安裝之前調查已簽署的憑證。檢查主題別名部分值。如果這看起來正確,則繼續在交換器中安裝新憑證。


或者,您也可以透過瀏覽器調查 SAN 欄位中已安裝的憑證。根據瀏覽器軟體和版本的不同,資訊的佈局可能會有所不同。

例如這裡是Chrome,需要點擊瀏覽器中的HTTPS/Lock(查看網站資訊),點選連接是安全的然後點擊證書有效,你的開關當然不會說有效,所以點擊證書無效

Chrome:證書詳細信息

在 Firefox 中查看憑證並點擊瀏覽器中的 HTTPS/Lock,連線安全(當然,當為真時),那麼更多資訊

火狐瀏覽器:查看證書

相關內容