{"id":"7570e9b47d7899ef","repo":"docker/cli","slug":"unable-to-get-system-cert-pool-w-7570e9","errorCode":null,"errorMessage":"unable to get system cert pool: %w","messagePattern":"unable to get system cert pool: %w","errorType":"validation","errorClass":"invalidParameterErr","httpStatus":null,"severity":"error","filePath":"internal/registry/registry.go","lineNumber":80,"sourceCode":"func loadTLSConfig(ctx context.Context, directory string, tlsConfig *tls.Config) error {\n\tfs, err := os.ReadDir(directory)\n\tif err != nil {\n\t\tif os.IsNotExist(err) {\n\t\t\treturn nil\n\t\t}\n\t\treturn invalidParam(err)\n\t}\n\n\tfor _, f := range fs {\n\t\tif ctx.Err() != nil {\n\t\t\treturn ctx.Err()\n\t\t}\n\t\tswitch filepath.Ext(f.Name()) {\n\t\tcase \".crt\":\n\t\t\tif tlsConfig.RootCAs == nil {\n\t\t\t\tsystemPool, err := x509.SystemCertPool()\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn invalidParam(fmt.Errorf(\"unable to get system cert pool: %w\", err))\n\t\t\t\t}\n\t\t\t\ttlsConfig.RootCAs = systemPool\n\t\t\t}\n\t\t\tfileName := filepath.Join(directory, f.Name())\n\t\t\tlog.G(ctx).Debugf(\"crt: %s\", fileName)\n\t\t\tdata, err := os.ReadFile(fileName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\ttlsConfig.RootCAs.AppendCertsFromPEM(data)\n\t\tcase \".cert\":\n\t\t\tcertName := f.Name()\n\t\t\tkeyName := certName[:len(certName)-5] + \".key\"\n\t\t\tlog.G(ctx).Debugf(\"cert: %s\", filepath.Join(directory, certName))\n\t\t\tif !hasFile(fs, keyName) {\n\t\t\t\treturn invalidParamf(\"missing key %s for client certificate %s. CA certificates must use the extension .crt\", keyName, certName)\n\t\t\t}\n\t\t\tcert, err := tls.LoadX509KeyPair(filepath.Join(directory, certName), filepath.Join(directory, keyName))","sourceCodeStart":62,"sourceCodeEnd":98,"githubUrl":"https://github.com/docker/cli/blob/e9452d6e785f6e365712b9d71bd7517591773c86/internal/registry/registry.go#L62-L98","documentation":"Error \"unable to get system cert pool: %w\" thrown in docker/cli.","triggerScenarios":"Thrown at internal/registry/registry.go:80 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"analyzedSha":"e9452d6e785f6e365712b9d71bd7517591773c86","analyzedAt":"2026-08-01T07:09:22.474Z","schemaVersion":2}