{"record":{"id":"b704b26cfeff02f0","repo":"goharbor/harbor","slug":"internal-tls-enabled-but-can-t-get-cert-file-w","errorCode":null,"errorMessage":"internal TLS enabled but can't get cert file %w","messagePattern":"internal TLS enabled but can't get cert file %w","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/common/http/tls.go","lineNumber":54,"sourceCode":"\n// InternalEnableVerifyClientCert returns true if mTLS enabled\nfunc InternalEnableVerifyClientCert() bool {\n\treturn strings.ToLower(os.Getenv(internalVerifyClientCert)) == \"true\"\n}\n\n// GetInternalCertPair used to get internal cert and key pair from environment\nfunc GetInternalCertPair() (tls.Certificate, error) {\n\tcrtPath := os.Getenv(internalTLSCertPath)\n\tkeyPath := os.Getenv(internalTLSKeyPath)\n\treturn tls.LoadX509KeyPair(crtPath, keyPath)\n}\n\n// GetInternalTLSConfig return a tls.Config for internal https communicate\nfunc GetInternalTLSConfig() (*tls.Config, error) {\n\t// generate key pair\n\tcert, err := GetInternalCertPair()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"internal TLS enabled but can't get cert file %w\", err)\n\t}\n\n\treturn &tls.Config{\n\t\tCertificates: []tls.Certificate{cert},\n\t}, nil\n}\n\n// NewServerTLSConfig returns a modern tls config,\n// refer to https://blog.cloudflare.com/exposing-go-on-the-internet/\nfunc NewServerTLSConfig() *tls.Config {\n\treturn &tls.Config{\n\t\tPreferServerCipherSuites: true,\n\t\tCurvePreferences: []tls.CurveID{\n\t\t\ttls.CurveP256,\n\t\t\ttls.X25519,\n\t\t},\n\t\tMinVersion: tls.VersionTLS12,\n\t\tCipherSuites: []uint16{","sourceCodeStart":36,"sourceCodeEnd":72,"githubUrl":"https://github.com/goharbor/harbor/blob/7b2fd08cc568955cca339afeefab27372840d936/src/common/http/tls.go#L36-L72","documentation":"Error \"internal TLS enabled but can't get cert file %w\" thrown in goharbor/harbor.","triggerScenarios":"Thrown at src/common/http/tls.go:54 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"7b2fd08cc568955cca339afeefab27372840d936","analyzedAt":"2026-08-16T00:00:10.961Z","schemaVersion":2},"datasetVersion":"2026-08-16T03:17:38.424Z"}