{"record":{"id":"783df55afc480fa9","repo":"caddyserver/caddy","slug":"expected-pem-block-type-to-be-certificate-but-got","errorCode":null,"errorMessage":"expected PEM block type to be CERTIFICATE, but got '%s'","messagePattern":"expected PEM block type to be CERTIFICATE, but got '(.+?)'","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"modules/caddypki/crypto.go","lineNumber":42,"sourceCode":"\t\"encoding/pem\"\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/caddyserver/certmagic\"\n\t\"go.step.sm/crypto/pemutil\"\n)\n\nfunc pemDecodeCertificate(pemDER []byte) (*x509.Certificate, error) {\n\tpemBlock, remaining := pem.Decode(pemDER)\n\tif pemBlock == nil {\n\t\treturn nil, fmt.Errorf(\"no PEM block found\")\n\t}\n\tif len(remaining) > 0 {\n\t\treturn nil, fmt.Errorf(\"input contained more than a single PEM block\")\n\t}\n\tif pemBlock.Type != \"CERTIFICATE\" {\n\t\treturn nil, fmt.Errorf(\"expected PEM block type to be CERTIFICATE, but got '%s'\", pemBlock.Type)\n\t}\n\treturn x509.ParseCertificate(pemBlock.Bytes)\n}\n\nfunc pemDecodeCertificateChain(pemDER []byte) ([]*x509.Certificate, error) {\n\tchain, err := pemutil.ParseCertificateBundle(pemDER)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed parsing certificate chain: %w\", err)\n\t}\n\n\treturn chain, nil\n}\n\nfunc pemEncodeCert(der []byte) ([]byte, error) {\n\treturn pemEncode(\"CERTIFICATE\", der)\n}\n\nfunc pemEncode(blockType string, b []byte) ([]byte, error) {","sourceCodeStart":24,"sourceCodeEnd":60,"githubUrl":"https://github.com/caddyserver/caddy/blob/50e54ee279aa1e504fe218ca49ab6ae16c100410/modules/caddypki/crypto.go#L24-L60","documentation":"Error \"expected PEM block type to be CERTIFICATE, but got '%s'\" thrown in caddyserver/caddy.","triggerScenarios":"Thrown at modules/caddypki/crypto.go:42 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Provide a PEM block whose type is CERTIFICATE, not a private key or other block type."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"50e54ee279aa1e504fe218ca49ab6ae16c100410","analyzedAt":"2026-08-15T09:20:21.641Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}