GENERAL:如果我得到“x509:证书依赖于遗留的通用名称字段”错误,我该怎么办?
描述:
x509:证书依赖于旧的通用名称字段,使用san或临时启用通用名称匹配GODEBUG=x509ignoreCN=0
此错误表明SSL证书不符合在GoLang 1.15中引入的更改。
从Go版本1.15开始,将X.509证书上的CommonName字段视为主机名的旧行为已经被弃用主题备选名称(SAN)现在默认情况下是禁用的。
这可能会影响现有的SSL证书和依赖于这些证书的任何安全连接,包括数据库、客户端(如Docker)和应用程序。
解决方法:
需要创建一个新的有效证书来包含subjectAltName属性,并且应该在使用openssl命令创建SSL自签名证书时直接添加-addext国旗。例如:
-addext "subjectAltName = DNS: domainname.com "
(可从OpenSSL 1.1.1获得。更多的信息可以在这里找到StackExchange线程)
作为一种变通方法,可以通过添加值来临时重新启用CommonName字段所处理的行为x509ignoreCN = 0到GODEBUG环境变量。例如,在终端中运行以下命令:
echo 'GODEBUG=x509ignoreCN=0' > ~/.profile
然后可以检查证书文件,以确认它包含主题备选名称:
Openssl x509 -in服务器。CRT - out -text
该输出应该包含类似于以下内容的条目:
X509v3主题备选方案
名称:DNS: myserver.com
注意:大于3.37的x射线版本与Go的更新版本捆绑在一起。从Go 1.18版本开始,GODEBUG=x509ignoreCN=0标志是弃用因此,应该更新证书以克服错误,因为解决方法将不再有效。
