Azure DevOps 删除了 sha1 支持

Posted

技术标签:

【中文标题】Azure DevOps 删除了 sha1 支持【英文标题】:Azure DevOps removed sha1 support 【发布时间】:2020-06-05 17:45:50 【问题描述】:

阅读 OpenSSH 8.2 的发行说明, https://www.openssh.com/txt/release-8.2 , rsa1 现在已被弃用并被认为已损坏。所以微软决定他们的系统不再支持它(我认为这是有道理的)。但是,它们仍然不支持 ecdsa 或 ed25519。

可以通过将其插入/home/<user>/.ssh/config 来重新启用 rsa 1:(如 Microsoft 论坛所述:https://developercommunity.visualstudio.com/content/problem/923455/cannot-interact-with-git-repos-with-openssh-82.html

KexAlgorithms +diffie-hellman-group1-sha1,diffie-hellman-group14-sha1

那么如何为 Azure DevOps 创建安全身份验证?

【问题讨论】:

出于某种原因,您正在混淆 SHA-1 和 RSA。你不能使用 SHA-2 和 RSA 吗? 【参考方案1】:

Azure DevOps 目前不支持任何通过 SSH 连接的安全方法。

具有 SHA-1 的组 14 的大小为 2048 位,处于可接受强度的低端(相当于 112 位)。在这种情况下,SHA-1 不用于签名,而是用作生成密钥数据的 PRF。这并不是不安全的,当然使用非 SHA-1 算法会更好。第 1 组太弱而无法安全。

但是,Azure DevOps 不支持除带有 SHA-1 的 RSA 之外的任何东西,这绝对是不安全的。无法使用 SHA-2 进行 RSA,因为 Azure DevOps 不协商使用 SHA-2 所需的扩展,并且不支持其他密钥类型。

最好的办法是使用 HTTPS 访问 Azure DevOps,或者迁移到更安全的平台。但是请注意,您可能希望强制使用 TLS 1.2,因为 Azure DevOps 支持 TLS 1.0 和 1.1,这两者都被视为不安全且 deprecated。您可以通过将http.https://dev.azure.com.sslVersion 设置为tlsv1.2 来实现。

【讨论】:

如果您不想将 TLS 版本设置限制为 Azure DevOps Services(例如,当您也使用 Azure DevOps Server 或任何其他可能提供较低 TLS 版本的存储库时),请设置 @ 987654325@本身:git config --global http.sslVersion tlsv1.2 另外,设置的文档链接可能会有所帮助。 git-scm.com/docs/git-config#Documentation/…【参考方案2】:

截至昨天,已向 Azure DevOps 推出了一个修复程序,其中带有 sha256 选项 (diffie-hellman-group-exchange-sha256) 和 sha1,并且已经解决了该问题:

$ GIT_SSH_COMMAND="ssh -vvv" git pull
...
debug2: KEX algorithms: diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha256
...
debug1: kex: algorithm: diffie-hellman-group-exchange-sha256

【讨论】:

以上是关于Azure DevOps 删除了 sha1 支持的主要内容,如果未能解决你的问题,请参考以下文章

Azure DevOps Server:使用Postman批量删除测试用例

Azure DevOps Server:使用Postman批量删除测试用例

azure devops 是不是支持 ios 自动代码签名?

Find commit 以在 Azure Devops 中查找非常旧的已删除文件

如何在 Azure DevOps 中删除合并的功能分支?

Azure Devops 使用 Powershell 从特定组织中删除特定用户