我一直在使用一段时间的API,而大多数情况下,大多数情况下,这些调用都是有效的(大约一个小时,一天1-2次,尽pipe这是完全不可预知的,何时和多久!)我得到以下错误信息:
“发生错误:SSL:没有其他证书主题名称匹配目标主机名'api.xxxxx.com'”
我一直在监视我的服务器的计划调用和外部使用的扫描仪,也手动与邮递员的API。 当我的服务器调用有问题时,邮差并不表示这是我的问题。
仅供参考查询从PHP服务器的PHP使用PHP运行基本身份validationfile_get_contents和curl – 两种方法都显示相同的问题。
与超级有用的API所有者开发团队一起工作,看来在使用openssl命令时:
回声| openssl s_client -showcerts -servername api.XXXXX.com -connect api.XXXXX.com:443 2> / dev / null | openssl x509 -inform pem -noout -text
我的服务器以某种方式将api的域名指向我自己的域名,即,这个命令输出我自己的SSL证书,而不是api的。
有谁知道如何解决这个问题和/或阻止这种情况再次发生?
一个主题替代名称是一个使用多个虚拟主机一个证书的方式 – 当连接到服务器时,实质上会出现名称不匹配的错误,在某些时候,您连接到证书一无所知的安全URL,将所有您的API端点将导入此检查器https://www.digicert.com/help/
如果您拥有api myapi.example.com和签名证书,则无法对myotherapi.example.com进行安全调用,除非您已将myotherapi.example.com声明为主题替代名称,或者您拥有通配符证书。
事实上它每天只做一次负载平衡,如果你有一个负载平衡池中有两台或两台以上的服务器,请确保SSL卸载应用到两台服务器,否则负载平衡器可能会偶尔指导你到具有自签名证书的主机(如果您已经在负载平衡器和主机之间encryption了通道) – 如果服务器负载均衡, 并且两台服务器的SSL 都已正确卸载,请确保Apache ServerName完全相同即不是api1.example.com和api2.example.com
最后确保您只有一个指向负载均衡器虚拟IP的DNS条目