一般:如果我得到一个“x509:证书依赖于传统通用名称字段”错误,我该怎么办?

依琳娜Floim
2023-01-22十一10

描述:

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 = 0GODEBUG环境变量。例如,在终端运行如下命令:

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标志为弃用,因此,证书应该更新以克服错误,因为解决方案将不再有效。