提案: proposal: crypto/tls: on-disk configuration #60790
crypto/tls: move defaults into defaults.go #65265
我的提交: https://go-review.googlesource.com/c/go/+/558375
所提到的 通过go:linkname定制TLS 1.3密码套件的方法
crypto/tls 库中的自动化加密套件(Cipher Suite )排序 这个网站翻译Go的官方博客,还不错~
https://before80.github.io/go_docs/
源码翻译: https://studygolang.com/static/pkgdoc/pkg/crypto_tls.htm
GitHub 问题 #60790 建议添加一种新机制,用于使用磁盘上的文件配置标准库默认 crypto/tls.Config 设置。 目标是实现大规模部署一致且可审计的加密策略。 该配置文件将特别关注 crypto/tls 默认密码、曲线和允许的最小/最大 TLS 版本的配置。
该提案建议引入一种读取磁盘上 JSON 配置文件并随后通过 Config 对象应用该配置的方法。 磁盘配置文件将指定支持的版本、签名算法、曲线、密钥协商算法、散列、密码和 MAC。
实现涉及使用encoding/json包读取和解析配置文件。 配置文件的位置可以通过环境变量 (GOTLSCONFIG) 或通过命令行标志 (-ldflags=”-X crypto/tls.configFilepath=/path/to/config.json”) 指定。 解析的配置将用于设置内部默认配置变量。
该提案还解决了基本原理、兼容性和实施细节。 它讨论了对向后兼容性的潜在影响并提出了维护它的方法。 拟议的更改旨在使用标准库 TLS 堆栈对 Go 应用程序的加密设置提供更好的控制,特别是在部署者无法直接控制源代码的情况下。
GitHub 讨论包括贡献者的评论以及有关潜在问题和替代方案的讨论。 提出的一些担忧包括通过更改默认值而增加的潜在复杂性以及避免全局配置影响本地行为的“远距离操作”的偏好。
截至最新评论,有人建议将相关定义移至单个文件(defaults.go),以便供应商更轻松地替换它们。 这种方法被视为允许自定义而不默认启用它的折衷方案,解决了运行时从磁盘意外读取的问题。
值得注意的是,该提案仍处于活跃状态,讨论和潜在的更改可能会继续。
将相关定义移至单个文件“defaults.go”的建议可能涉及将与 TLS 配置相关的默认值或常量合并到一个位置。 这可以使供应商或用户更轻松地替换或自定义这些默认值,而无需大量修改核心代码。
在针对“crypto/tls”磁盘配置提议的 GitHub 问题 #60790 的上下文中,可能考虑重新定位到“defaults.go”的内容可能包括:
默认配置值: TLS 配置设置的任何默认值,例如默认密码、曲线、版本等。
默认文件路径: 如果配置文件有默认文件路径,则可以将它们包含在“defaults.go”中以提供此类信息的中心位置。
默认环境变量: 如果有指定配置文件路径的环境变量,则其默认值可以包含在“defaults.go”中。
通过将这些默认值合并到一个单独的文件中,开发人员或供应商可以更轻松地修改这些默认值,而无需更改主源代码。 它增强了模块化性和可维护性,允许根据特定部署需求更轻松地进行定制。 开发人员可以用自己的版本替换“defaults.go”来更改默认行为,而无需修改核心 TLS 包。
移动的具体内容取决于提案的具体情况以及 Go 语言贡献者做出的设计决策。 如果您有权访问提案或相关代码更改,您可能会在“defaults.go”中找到有关重新定位建议的更多详细信息。
原文链接: https://dashen.tech/2017/01/25/Go语言tls包的进阶使用/
版权声明: 转载请注明出处.