![如何使用 IIS 產生有效證書](https://rvso.com/image/1518666/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20IIS%20%E7%94%A2%E7%94%9F%E6%9C%89%E6%95%88%E8%AD%89%E6%9B%B8.png)
連接到我們的伺服器時出現以下錯誤:
GnuTLS 錯誤 -48:偵測到憑證中的金鑰使用違規。無法連接到伺服器
在執行 Windows 10 Pro(包含所有更新)的 PC 上升級至 Filezilla v3.24.0 for Windows 後,出現此問題。 Mac版本(也是v3.24.0)運作正常,沒有錯誤。最近沒有對伺服器進行任何更改。
連線資訊: 協定:FTP - 檔案傳輸協定 加密:需要基於 TLS 的明確 FTP 登入類型:要求密碼
Ftptest.net 針對我們的伺服器進行測試,未顯示任何相關問題。普通 FTP(未加密)可以工作,但這不是一個好主意。我在谷歌上找不到這個問題的解決方案。有什麼建議麼?
答案1
請參考 Filezilla 論壇上的這篇文章:https://forum.filezilla-project.org/viewtopic.php?t=42790
答案2
這是伺服器端問題,以前從未出現過,因為早期版本的 FileZilla 隨附的 GnuTLS 版本沒有進行此檢查。
引用 Tim Kosse 在FileZilla 論壇主題:
無論如何,問題出在伺服器的 X.509 憑證鏈上:伺服器憑證本身或鏈中的另一個憑證違反了金鑰使用限制。例如,具有簽署金鑰使用限制的憑證不能用於驗證 TLS 連線。請參閱 RFC 5280 的第 4.2.1.3 節。
這是 Microsoft IIS 的證書產生問題(但如果您使用其他方法錯誤地產生了證書,也可能會發生),因為它不允許將證書用於數位簽章。 OpenSSL 對此更加寬鬆,不會因此而失敗,因此它可以與其他應用程式一起使用。
在客戶端,您可以停用 TLS、降級到 FileZilla 的早期版本(由於潛在的安全風險,不建議使用這兩種方法),或使用目前使用其他程式庫(例如 OpenSSL)的不同用戶端。
如何使用 IIS 產生有效證書
顯然,這需要在伺服器端完成。如果您不是管理員,請將這些說明轉發給他們。
根據帖子中的IIS 論壇,您可以改為使用 PowerShell 產生證書,直到 Microsoft 修復該問題:
New-SelfSignedCertificate -CertStoreLocation cert:\LocalMachine\My -dnsname ftp.example.com
替換ftp.example.com
為您的伺服器的主機名稱。
您將獲得指紋,複製該指紋。為私鑰設定密碼:
$password = ConvertTo-SecureString -String "password goes here" -Force -AsPlainText
現在導出它(您可以更改C:\cert.pfx
為要保存的路徑,只需確保它以 結尾.pfx
):
Export-PfxCertificate -cert cert:\LocalMachine\My\FINGERPRINT -FilePath C:\cert.pfx -Password $password