如何使用 IIS 生成有效证书

如何使用 IIS 生成有效证书

连接到我们的服务器时出现以下错误:

GnuTLS 错误 -48:检测到证书中的密钥使用违规。无法连接到服务器

在运行 Windows 10 Pro 并包含所有更新的 PC 上升级到适用于 Windows 的 Filezilla v3.24.0 后出现了此问题。Mac 版本(也是 v3.24.0)运行正常,没有错误。最近没有对服务器进行任何更改。

连接信息:协议:FTP - 文件传输协议加密:需要通过 TLS 显式 FTP 登录类型:询问密码

针对我们的服务器进行的 Ftptest.net 测试未显示任何相关问题。普通 FTP(未加密)可以工作,但这不是一个好主意。我在 Google 上找不到此问题的解决方案。有什么建议吗?

答案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

相关内容