{"record":{"id":"3043e2a121615db7","repo":"puppetlabs/puppet","slug":"cannot-create-csr-with-extension-request-oid","errorCode":null,"errorMessage":"Cannot create CSR with extension request %{oid}: %{message}","messagePattern":"Cannot create CSR with extension request %(.+?): %(.+?)","errorType":"exception","errorClass":"Puppet::Error","httpStatus":null,"severity":"error","filePath":"lib/puppet/ssl/certificate_request.rb","lineNumber":248,"sourceCode":"\n  PRIVATE_EXTENSIONS = [\n    'subjectAltName', '2.5.29.17'\n  ]\n\n  # @api private\n  def extension_request_attribute(options)\n    extensions = []\n\n    if options[:extension_requests]\n      options[:extension_requests].each_pair do |oid, value|\n        if PRIVATE_EXTENSIONS.include? oid\n          raise Puppet::Error, _(\"Cannot specify CSR extension request %{oid}: conflicts with internally used extension request\") % { oid: oid }\n        end\n\n        ext = OpenSSL::X509::Extension.new(oid, OpenSSL::ASN1::UTF8String.new(value.to_s).to_der, false)\n        extensions << ext\n      rescue OpenSSL::X509::ExtensionError => e\n        raise Puppet::Error, _(\"Cannot create CSR with extension request %{oid}: %{message}\") % { oid: oid, message: e.message }, e.backtrace\n      end\n    end\n\n    if options[:dns_alt_names]\n      raw_names = options[:dns_alt_names].split(/\\s*,\\s*/).map(&:strip) + [name]\n\n      parsed_names = raw_names.map do |name|\n        if !name.start_with?(\"IP:\") && !name.start_with?(\"DNS:\")\n          \"DNS:#{name}\"\n        else\n          name\n        end\n      end.sort.uniq.join(\", \")\n\n      alt_names_ext = extension_factory.create_extension(\"subjectAltName\", parsed_names, false)\n\n      extensions << alt_names_ext\n    end","sourceCodeStart":230,"sourceCodeEnd":266,"githubUrl":"https://github.com/puppetlabs/puppet/blob/e227c27540975c25aa22d533a52424a9d2fc886a/lib/puppet/ssl/certificate_request.rb#L230-L266","documentation":"Error \"Cannot create CSR with extension request %{oid}: %{message}\" thrown in puppetlabs/puppet.","triggerScenarios":"Thrown at lib/puppet/ssl/certificate_request.rb:248 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":"e227c27540975c25aa22d533a52424a9d2fc886a","analyzedAt":"2026-08-21T20:49:46.650Z","schemaVersion":2},"datasetVersion":"2026-08-21T23:17:16.201Z"}