示例测试URL:https://6195.playfabapi.com/swagger。该站点的证书链:Starfield等-> Starfield等-> Amazon Root CA 1-> Amazon-> * .playfabapi.com
运行Windows Server 2019 docker容器的Windows Server 2019(mcr.microsoft.com/windows/servercore:10.0.17763.973)
在Docker容器上执行的PowerShell命令:
Get-ChildItem -path Cert:\* -Recurse | where {$_.Subject –like '*Starfield*'}
(no results)
Get-ChildItem -path Cert:\* -Recurse | where {$_.Subject –like '*Amazon*'}
(No results)
Get-ChildItem -path Cert:\* -Recurse | where {$_.Subject –like '*PlayFab*'}
(No results)
Get-ChildItem -path Cert:\* -Recurse | where {$_.Subject –like '*'}
(About a dozen results, that all seem to be Microsoft-issued certificates)
curl --ssl-reqd --tlsv1.2 https://6195.playfabapi.com/swagger
(Successful json blob)
我的问题: 为什么curl命令成功?我对Docker,证书和curl的所有了解都表明curl命令应该因证书错误而失败(可能不可信或类似)。
我发现了一个类似但相反的问题:SSL certificate verification fails inside docker container on specific server。我该如何反过来,使docker容器隔离,并强制其仅根据自己的证书进行验证?
答案 0 :(得分:0)
curl.exe版本7.71.1尚未使用Windows证书存储,而是使用内部证书存储或通过--cacert选项的显式证书文件。
Configure cURL to use default system cert store on Windows 这表明该库是可能的,但是(现在)它不是任何地方的默认选项。