{"record":{"id":"d9dfc87f87f57b35","repo":"hashicorp/nomad","slug":"organization-value-not-provided","errorCode":null,"errorMessage":"organization value not provided","messagePattern":"organization value not provided","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"helper/tlsutil/generate.go","lineNumber":149,"sourceCode":"\t\t}\n\t}\n\n\tif opts.Days == 0 {\n\t\topts.Days = 1825\n\t}\n\n\tif opts.IsCustom() {\n\t\tif opts.Name == \"\" {\n\t\t\treturn \"\", \"\", errors.New(\"common name value not provided\")\n\t\t} else {\n\t\t\topts.Name = fmt.Sprintf(\"%s %d\", opts.Name, sn)\n\t\t}\n\t\tif opts.Country == \"\" {\n\t\t\treturn \"\", \"\", errors.New(\"country value not provided\")\n\t\t}\n\n\t\tif opts.Organization == \"\" {\n\t\t\treturn \"\", \"\", errors.New(\"organization value not provided\")\n\t\t}\n\n\t\tif opts.OrganizationalUnit == \"\" {\n\t\t\treturn \"\", \"\", errors.New(\"organizational unit value not provided\")\n\t\t}\n\t} else {\n\t\topts.Name = fmt.Sprintf(\"Nomad Agent CA %d\", sn)\n\t\topts.Country = \"US\"\n\t\topts.PostalCode = \"94105\"\n\t\topts.Province = \"CA\"\n\t\topts.Locality = \"San Francisco\"\n\t\topts.StreetAddress = \"101 Second Street\"\n\t\topts.Organization = \"HashiCorp Inc.\"\n\t\topts.OrganizationalUnit = \"Nomad\"\n\t}\n\n\t// Create the CA cert\n\ttemplate := x509.Certificate{","sourceCodeStart":131,"sourceCodeEnd":167,"githubUrl":"https://github.com/hashicorp/nomad/blob/482b49bf1aec006f089bcfc7e632d8f6ac303e5e/helper/tlsutil/generate.go#L131-L167","documentation":"Fires in GenerateCA when the CA options are custom (IsCustom) but opts.Organization is empty; a custom certificate requires an Organization field in the subject, so the CA is not generated.","triggerScenarios":"tlsutil.GenerateCA with IsCustom() true and Organization empty — checked after Name and Country.","commonSituations":"Custom CA configs built programmatically where only Name/Country were populated; CLI usage specifying name/country but not --organization.","solutions":["Set opts.Organization before generating the CA","Or drop the custom options to use generated defaults"],"exampleFix":"// before\nopts := &tlsutil.CAConfig{Name: \"Nomad CA\", Country: \"US\"} // Organization missing\n// after\nopts := &tlsutil.CAConfig{Name: \"Nomad CA\", Country: \"US\", Organization: \"HashiCorp\"}","handlingStrategy":"validation","validationCode":"if opts.IsCustom() && opts.Organization == \"\" {\n    return errors.New(\"custom CA requires an Organization\")\n}\nca, key, err := tlsutil.GenerateCA(opts)","typeGuard":"func hasOrganization(opts *tlsutil.CAConfig) bool { return opts.Organization != \"\" }","tryCatchPattern":"ca, key, err := tlsutil.GenerateCA(opts)\nif err != nil {\n    if strings.Contains(err.Error(), \"organization value not provided\") {\n        return fmt.Errorf(\"set 'organization' in custom TLS config: %w\", err)\n    }\n    return err\n}","preventionTips":["Include organization in every custom CA subject.","Group subject fields in one config object so they are set/omitted together.","Surface all missing fields to users at once rather than one error per field."],"tags":["tls","x509","config-validation"],"backgroundTag":"missing-required-tls-field","analyzedSha":"482b49bf1aec006f089bcfc7e632d8f6ac303e5e","analyzedAt":"2026-09-04T07:54:14.808Z","contentChangedAt":"2026-09-04T07:54:14.808Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}