一般:如果我得到一个“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 -noout -text
哪个输出应该包括类似于下面的条目:
X509v3 Subject Alternative
名称:DNS: myserver.com
注意:超过3.37的x射线版本与更新版本的Go捆绑在一起。从Go版本1.18开始,GODEBUG=x509ignoreCN=0标志为弃用,因此,证书应该更新以克服错误,因为解决方案将不再有效。
