krb5.conf.5 48 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493
  1. .\" Man page generated from reStructuredText.
  2. .
  3. .TH "KRB5.CONF" "5" " " "1.20.1" "MIT Kerberos"
  4. .SH NAME
  5. krb5.conf \- Kerberos configuration file
  6. .
  7. .nr rst2man-indent-level 0
  8. .
  9. .de1 rstReportMargin
  10. \\$1 \\n[an-margin]
  11. level \\n[rst2man-indent-level]
  12. level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
  13. -
  14. \\n[rst2man-indent0]
  15. \\n[rst2man-indent1]
  16. \\n[rst2man-indent2]
  17. ..
  18. .de1 INDENT
  19. .\" .rstReportMargin pre:
  20. . RS \\$1
  21. . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
  22. . nr rst2man-indent-level +1
  23. .\" .rstReportMargin post:
  24. ..
  25. .de UNINDENT
  26. . RE
  27. .\" indent \\n[an-margin]
  28. .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
  29. .nr rst2man-indent-level -1
  30. .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
  31. .in \\n[rst2man-indent\\n[rst2man-indent-level]]u
  32. ..
  33. .sp
  34. The krb5.conf file contains Kerberos configuration information,
  35. including the locations of KDCs and admin servers for the Kerberos
  36. realms of interest, defaults for the current realm and for Kerberos
  37. applications, and mappings of hostnames onto Kerberos realms.
  38. Normally, you should install your krb5.conf file in the directory
  39. \fB/etc\fP\&. You can override the default location by setting the
  40. environment variable \fBKRB5_CONFIG\fP\&. Multiple colon\-separated
  41. filenames may be specified in \fBKRB5_CONFIG\fP; all files which are
  42. present will be read. Starting in release 1.14, directory names can
  43. also be specified in \fBKRB5_CONFIG\fP; all files within the directory
  44. whose names consist solely of alphanumeric characters, dashes, or
  45. underscores will be read.
  46. .SH STRUCTURE
  47. .sp
  48. The krb5.conf file is set up in the style of a Windows INI file.
  49. Lines beginning with \(aq#\(aq or \(aq;\(aq (possibly after initial whitespace)
  50. are ignored as comments. Sections are headed by the section name, in
  51. square brackets. Each section may contain zero or more relations, of
  52. the form:
  53. .INDENT 0.0
  54. .INDENT 3.5
  55. .sp
  56. .nf
  57. .ft C
  58. foo = bar
  59. .ft P
  60. .fi
  61. .UNINDENT
  62. .UNINDENT
  63. .sp
  64. or:
  65. .INDENT 0.0
  66. .INDENT 3.5
  67. .sp
  68. .nf
  69. .ft C
  70. fubar = {
  71. foo = bar
  72. baz = quux
  73. }
  74. .ft P
  75. .fi
  76. .UNINDENT
  77. .UNINDENT
  78. .sp
  79. Placing a \(aq*\(aq after the closing bracket of a section name indicates
  80. that the section is \fIfinal\fP, meaning that if the same section appears
  81. within a later file specified in \fBKRB5_CONFIG\fP, it will be ignored.
  82. A subsection can be marked as final by placing a \(aq*\(aq after either the
  83. tag name or the closing brace.
  84. .sp
  85. The krb5.conf file can include other files using either of the
  86. following directives at the beginning of a line:
  87. .INDENT 0.0
  88. .INDENT 3.5
  89. .sp
  90. .nf
  91. .ft C
  92. include FILENAME
  93. includedir DIRNAME
  94. .ft P
  95. .fi
  96. .UNINDENT
  97. .UNINDENT
  98. .sp
  99. \fIFILENAME\fP or \fIDIRNAME\fP should be an absolute path. The named file or
  100. directory must exist and be readable. Including a directory includes
  101. all files within the directory whose names consist solely of
  102. alphanumeric characters, dashes, or underscores. Starting in release
  103. 1.15, files with names ending in ".conf" are also included, unless the
  104. name begins with ".". Included profile files are syntactically
  105. independent of their parents, so each included file must begin with a
  106. section header. Starting in release 1.17, files are read in
  107. alphanumeric order; in previous releases, they may be read in any
  108. order.
  109. .sp
  110. The krb5.conf file can specify that configuration should be obtained
  111. from a loadable module, rather than the file itself, using the
  112. following directive at the beginning of a line before any section
  113. headers:
  114. .INDENT 0.0
  115. .INDENT 3.5
  116. .sp
  117. .nf
  118. .ft C
  119. module MODULEPATH:RESIDUAL
  120. .ft P
  121. .fi
  122. .UNINDENT
  123. .UNINDENT
  124. .sp
  125. \fIMODULEPATH\fP may be relative to the library path of the krb5
  126. installation, or it may be an absolute path. \fIRESIDUAL\fP is provided
  127. to the module at initialization time. If krb5.conf uses a module
  128. directive, kdc.conf(5) should also use one if it exists.
  129. .SH SECTIONS
  130. .sp
  131. The krb5.conf file may contain the following sections:
  132. .TS
  133. center;
  134. |l|l|.
  135. _
  136. T{
  137. \fI\%[libdefaults]\fP
  138. T} T{
  139. Settings used by the Kerberos V5 library
  140. T}
  141. _
  142. T{
  143. \fI\%[realms]\fP
  144. T} T{
  145. Realm\-specific contact information and settings
  146. T}
  147. _
  148. T{
  149. \fI\%[domain_realm]\fP
  150. T} T{
  151. Maps server hostnames to Kerberos realms
  152. T}
  153. _
  154. T{
  155. \fI\%[capaths]\fP
  156. T} T{
  157. Authentication paths for non\-hierarchical cross\-realm
  158. T}
  159. _
  160. T{
  161. \fI\%[appdefaults]\fP
  162. T} T{
  163. Settings used by some Kerberos V5 applications
  164. T}
  165. _
  166. T{
  167. \fI\%[plugins]\fP
  168. T} T{
  169. Controls plugin module registration
  170. T}
  171. _
  172. .TE
  173. .sp
  174. Additionally, krb5.conf may include any of the relations described in
  175. kdc.conf(5), but it is not a recommended practice.
  176. .SS [libdefaults]
  177. .sp
  178. The libdefaults section may contain any of the following relations:
  179. .INDENT 0.0
  180. .TP
  181. \fBallow_weak_crypto\fP
  182. If this flag is set to false, then weak encryption types (as noted
  183. in Encryption_types in kdc.conf(5)) will be filtered
  184. out of the lists \fBdefault_tgs_enctypes\fP,
  185. \fBdefault_tkt_enctypes\fP, and \fBpermitted_enctypes\fP\&. The default
  186. value for this tag is false.
  187. .TP
  188. \fBcanonicalize\fP
  189. If this flag is set to true, initial ticket requests to the KDC
  190. will request canonicalization of the client principal name, and
  191. answers with different client principals than the requested
  192. principal will be accepted. The default value is false.
  193. .TP
  194. \fBccache_type\fP
  195. This parameter determines the format of credential cache types
  196. created by kinit(1) or other programs. The default value
  197. is 4, which represents the most current format. Smaller values
  198. can be used for compatibility with very old implementations of
  199. Kerberos which interact with credential caches on the same host.
  200. .TP
  201. \fBclockskew\fP
  202. Sets the maximum allowable amount of clockskew in seconds that the
  203. library will tolerate before assuming that a Kerberos message is
  204. invalid. The default value is 300 seconds, or five minutes.
  205. .sp
  206. The clockskew setting is also used when evaluating ticket start
  207. and expiration times. For example, tickets that have reached
  208. their expiration time can still be used (and renewed if they are
  209. renewable tickets) if they have been expired for a shorter
  210. duration than the \fBclockskew\fP setting.
  211. .TP
  212. \fBdefault_ccache_name\fP
  213. This relation specifies the name of the default credential cache.
  214. The default is \fBFILE:/tmp/krb5cc_%{uid}\fP\&. This relation is subject to parameter
  215. expansion (see below). New in release 1.11.
  216. .TP
  217. \fBdefault_client_keytab_name\fP
  218. This relation specifies the name of the default keytab for
  219. obtaining client credentials. The default is \fBFILE:/opt/conda/var/krb5/user/%{euid}/client.keytab\fP\&. This
  220. relation is subject to parameter expansion (see below).
  221. New in release 1.11.
  222. .TP
  223. \fBdefault_keytab_name\fP
  224. This relation specifies the default keytab name to be used by
  225. application servers such as sshd. The default is \fBFILE:/etc/krb5.keytab\fP\&. This
  226. relation is subject to parameter expansion (see below).
  227. .TP
  228. \fBdefault_rcache_name\fP
  229. This relation specifies the name of the default replay cache.
  230. The default is \fBdfl:\fP\&. This relation is subject to parameter
  231. expansion (see below). New in release 1.18.
  232. .TP
  233. \fBdefault_realm\fP
  234. Identifies the default Kerberos realm for the client. Set its
  235. value to your Kerberos realm. If this value is not set, then a
  236. realm must be specified with every Kerberos principal when
  237. invoking programs such as kinit(1)\&.
  238. .TP
  239. \fBdefault_tgs_enctypes\fP
  240. Identifies the supported list of session key encryption types that
  241. the client should request when making a TGS\-REQ, in order of
  242. preference from highest to lowest. The list may be delimited with
  243. commas or whitespace. See Encryption_types in
  244. kdc.conf(5) for a list of the accepted values for this tag.
  245. Starting in release 1.18, the default value is the value of
  246. \fBpermitted_enctypes\fP\&. For previous releases or if
  247. \fBpermitted_enctypes\fP is not set, the default value is
  248. \fBaes256\-cts\-hmac\-sha1\-96 aes128\-cts\-hmac\-sha1\-96 aes256\-cts\-hmac\-sha384\-192 aes128\-cts\-hmac\-sha256\-128 des3\-cbc\-sha1 arcfour\-hmac\-md5 camellia256\-cts\-cmac camellia128\-cts\-cmac\fP\&.
  249. .sp
  250. Do not set this unless required for specific backward
  251. compatibility purposes; stale values of this setting can prevent
  252. clients from taking advantage of new stronger enctypes when the
  253. libraries are upgraded.
  254. .TP
  255. \fBdefault_tkt_enctypes\fP
  256. Identifies the supported list of session key encryption types that
  257. the client should request when making an AS\-REQ, in order of
  258. preference from highest to lowest. The format is the same as for
  259. default_tgs_enctypes. Starting in release 1.18, the default
  260. value is the value of \fBpermitted_enctypes\fP\&. For previous
  261. releases or if \fBpermitted_enctypes\fP is not set, the default
  262. value is \fBaes256\-cts\-hmac\-sha1\-96 aes128\-cts\-hmac\-sha1\-96 aes256\-cts\-hmac\-sha384\-192 aes128\-cts\-hmac\-sha256\-128 des3\-cbc\-sha1 arcfour\-hmac\-md5 camellia256\-cts\-cmac camellia128\-cts\-cmac\fP\&.
  263. .sp
  264. Do not set this unless required for specific backward
  265. compatibility purposes; stale values of this setting can prevent
  266. clients from taking advantage of new stronger enctypes when the
  267. libraries are upgraded.
  268. .TP
  269. \fBdns_canonicalize_hostname\fP
  270. Indicate whether name lookups will be used to canonicalize
  271. hostnames for use in service principal names. Setting this flag
  272. to false can improve security by reducing reliance on DNS, but
  273. means that short hostnames will not be canonicalized to
  274. fully\-qualified hostnames. If this option is set to \fBfallback\fP (new
  275. in release 1.18), DNS canonicalization will only be performed the
  276. server hostname is not found with the original name when
  277. requesting credentials. The default value is true.
  278. .TP
  279. \fBdns_lookup_kdc\fP
  280. Indicate whether DNS SRV records should be used to locate the KDCs
  281. and other servers for a realm, if they are not listed in the
  282. krb5.conf information for the realm. (Note that the admin_server
  283. entry must be in the krb5.conf realm information in order to
  284. contact kadmind, because the DNS implementation for kadmin is
  285. incomplete.)
  286. .sp
  287. Enabling this option does open up a type of denial\-of\-service
  288. attack, if someone spoofs the DNS records and redirects you to
  289. another server. However, it\(aqs no worse than a denial of service,
  290. because that fake KDC will be unable to decode anything you send
  291. it (besides the initial ticket request, which has no encrypted
  292. data), and anything the fake KDC sends will not be trusted without
  293. verification using some secret that it won\(aqt know.
  294. .TP
  295. \fBdns_uri_lookup\fP
  296. Indicate whether DNS URI records should be used to locate the KDCs
  297. and other servers for a realm, if they are not listed in the
  298. krb5.conf information for the realm. SRV records are used as a
  299. fallback if no URI records were found. The default value is true.
  300. New in release 1.15.
  301. .TP
  302. \fBenforce_ok_as_delegate\fP
  303. If this flag to true, GSSAPI credential delegation will be
  304. disabled when the \fBok\-as\-delegate\fP flag is not set in the
  305. service ticket. If this flag is false, the \fBok\-as\-delegate\fP
  306. ticket flag is only enforced when an application specifically
  307. requests enforcement. The default value is false.
  308. .TP
  309. \fBerr_fmt\fP
  310. This relation allows for custom error message formatting. If a
  311. value is set, error messages will be formatted by substituting a
  312. normal error message for %M and an error code for %C in the value.
  313. .TP
  314. \fBextra_addresses\fP
  315. This allows a computer to use multiple local addresses, in order
  316. to allow Kerberos to work in a network that uses NATs while still
  317. using address\-restricted tickets. The addresses should be in a
  318. comma\-separated list. This option has no effect if
  319. \fBnoaddresses\fP is true.
  320. .TP
  321. \fBforwardable\fP
  322. If this flag is true, initial tickets will be forwardable by
  323. default, if allowed by the KDC. The default value is false.
  324. .TP
  325. \fBignore_acceptor_hostname\fP
  326. When accepting GSSAPI or krb5 security contexts for host\-based
  327. service principals, ignore any hostname passed by the calling
  328. application, and allow clients to authenticate to any service
  329. principal in the keytab matching the service name and realm name
  330. (if given). This option can improve the administrative
  331. flexibility of server applications on multihomed hosts, but could
  332. compromise the security of virtual hosting environments. The
  333. default value is false. New in release 1.10.
  334. .TP
  335. \fBk5login_authoritative\fP
  336. If this flag is true, principals must be listed in a local user\(aqs
  337. k5login file to be granted login access, if a \&.k5login(5)
  338. file exists. If this flag is false, a principal may still be
  339. granted login access through other mechanisms even if a k5login
  340. file exists but does not list the principal. The default value is
  341. true.
  342. .TP
  343. \fBk5login_directory\fP
  344. If set, the library will look for a local user\(aqs k5login file
  345. within the named directory, with a filename corresponding to the
  346. local username. If not set, the library will look for k5login
  347. files in the user\(aqs home directory, with the filename .k5login.
  348. For security reasons, .k5login files must be owned by
  349. the local user or by root.
  350. .TP
  351. \fBkcm_mach_service\fP
  352. On macOS only, determines the name of the bootstrap service used to
  353. contact the KCM daemon for the KCM credential cache type. If the
  354. value is \fB\-\fP, Mach RPC will not be used to contact the KCM
  355. daemon. The default value is \fBorg.h5l.kcm\fP\&.
  356. .TP
  357. \fBkcm_socket\fP
  358. Determines the path to the Unix domain socket used to access the
  359. KCM daemon for the KCM credential cache type. If the value is
  360. \fB\-\fP, Unix domain sockets will not be used to contact the KCM
  361. daemon. The default value is
  362. \fB/var/run/.heim_org.h5l.kcm\-socket\fP\&.
  363. .TP
  364. \fBkdc_default_options\fP
  365. Default KDC options (Xored for multiple values) when requesting
  366. initial tickets. By default it is set to 0x00000010
  367. (KDC_OPT_RENEWABLE_OK).
  368. .TP
  369. \fBkdc_timesync\fP
  370. Accepted values for this relation are 1 or 0. If it is nonzero,
  371. client machines will compute the difference between their time and
  372. the time returned by the KDC in the timestamps in the tickets and
  373. use this value to correct for an inaccurate system clock when
  374. requesting service tickets or authenticating to services. This
  375. corrective factor is only used by the Kerberos library; it is not
  376. used to change the system clock. The default value is 1.
  377. .TP
  378. \fBnoaddresses\fP
  379. If this flag is true, requests for initial tickets will not be
  380. made with address restrictions set, allowing the tickets to be
  381. used across NATs. The default value is true.
  382. .TP
  383. \fBpermitted_enctypes\fP
  384. Identifies the encryption types that servers will permit for
  385. session keys and for ticket and authenticator encryption, ordered
  386. by preference from highest to lowest. Starting in release 1.18,
  387. this tag also acts as the default value for
  388. \fBdefault_tgs_enctypes\fP and \fBdefault_tkt_enctypes\fP\&. The
  389. default value for this tag is \fBaes256\-cts\-hmac\-sha1\-96 aes128\-cts\-hmac\-sha1\-96 aes256\-cts\-hmac\-sha384\-192 aes128\-cts\-hmac\-sha256\-128 des3\-cbc\-sha1 arcfour\-hmac\-md5 camellia256\-cts\-cmac camellia128\-cts\-cmac\fP\&.
  390. .TP
  391. \fBplugin_base_dir\fP
  392. If set, determines the base directory where krb5 plugins are
  393. located. The default value is the \fBkrb5/plugins\fP subdirectory
  394. of the krb5 library directory. This relation is subject to
  395. parameter expansion (see below) in release 1.17 and later.
  396. .TP
  397. \fBpreferred_preauth_types\fP
  398. This allows you to set the preferred preauthentication types which
  399. the client will attempt before others which may be advertised by a
  400. KDC. The default value for this setting is "17, 16, 15, 14",
  401. which forces libkrb5 to attempt to use PKINIT if it is supported.
  402. .TP
  403. \fBproxiable\fP
  404. If this flag is true, initial tickets will be proxiable by
  405. default, if allowed by the KDC. The default value is false.
  406. .TP
  407. \fBqualify_shortname\fP
  408. If this string is set, it determines the domain suffix for
  409. single\-component hostnames when DNS canonicalization is not used
  410. (either because \fBdns_canonicalize_hostname\fP is false or because
  411. forward canonicalization failed). The default value is the first
  412. search domain of the system\(aqs DNS configuration. To disable
  413. qualification of shortnames, set this relation to the empty string
  414. with \fBqualify_shortname = ""\fP\&. (New in release 1.18.)
  415. .TP
  416. \fBrdns\fP
  417. If this flag is true, reverse name lookup will be used in addition
  418. to forward name lookup to canonicalizing hostnames for use in
  419. service principal names. If \fBdns_canonicalize_hostname\fP is set
  420. to false, this flag has no effect. The default value is true.
  421. .TP
  422. \fBrealm_try_domains\fP
  423. Indicate whether a host\(aqs domain components should be used to
  424. determine the Kerberos realm of the host. The value of this
  425. variable is an integer: \-1 means not to search, 0 means to try the
  426. host\(aqs domain itself, 1 means to also try the domain\(aqs immediate
  427. parent, and so forth. The library\(aqs usual mechanism for locating
  428. Kerberos realms is used to determine whether a domain is a valid
  429. realm, which may involve consulting DNS if \fBdns_lookup_kdc\fP is
  430. set. The default is not to search domain components.
  431. .TP
  432. \fBrenew_lifetime\fP
  433. (duration string.) Sets the default renewable lifetime
  434. for initial ticket requests. The default value is 0.
  435. .TP
  436. \fBspake_preauth_groups\fP
  437. A whitespace or comma\-separated list of words which specifies the
  438. groups allowed for SPAKE preauthentication. The possible values
  439. are:
  440. .TS
  441. center;
  442. |l|l|.
  443. _
  444. T{
  445. edwards25519
  446. T} T{
  447. Edwards25519 curve (\fI\%RFC 7748\fP)
  448. T}
  449. _
  450. T{
  451. P\-256
  452. T} T{
  453. NIST P\-256 curve (\fI\%RFC 5480\fP)
  454. T}
  455. _
  456. T{
  457. P\-384
  458. T} T{
  459. NIST P\-384 curve (\fI\%RFC 5480\fP)
  460. T}
  461. _
  462. T{
  463. P\-521
  464. T} T{
  465. NIST P\-521 curve (\fI\%RFC 5480\fP)
  466. T}
  467. _
  468. .TE
  469. .sp
  470. The default value for the client is \fBedwards25519\fP\&. The default
  471. value for the KDC is empty. New in release 1.17.
  472. .TP
  473. \fBticket_lifetime\fP
  474. (duration string.) Sets the default lifetime for initial
  475. ticket requests. The default value is 1 day.
  476. .TP
  477. \fBudp_preference_limit\fP
  478. When sending a message to the KDC, the library will try using TCP
  479. before UDP if the size of the message is above
  480. \fBudp_preference_limit\fP\&. If the message is smaller than
  481. \fBudp_preference_limit\fP, then UDP will be tried before TCP.
  482. Regardless of the size, both protocols will be tried if the first
  483. attempt fails.
  484. .TP
  485. \fBverify_ap_req_nofail\fP
  486. If this flag is true, then an attempt to verify initial
  487. credentials will fail if the client machine does not have a
  488. keytab. The default value is false.
  489. .TP
  490. \fBclient_aware_channel_bindings\fP
  491. If this flag is true, then all application protocol authentication
  492. requests will be flagged to indicate that the application supports
  493. channel bindings when operating over a secure channel. The
  494. default value is false.
  495. .UNINDENT
  496. .SS [realms]
  497. .sp
  498. Each tag in the [realms] section of the file is the name of a Kerberos
  499. realm. The value of the tag is a subsection with relations that
  500. define the properties of that particular realm. For each realm, the
  501. following tags may be specified in the realm\(aqs subsection:
  502. .INDENT 0.0
  503. .TP
  504. \fBadmin_server\fP
  505. Identifies the host where the administration server is running.
  506. Typically, this is the primary Kerberos server. This tag must be
  507. given a value in order to communicate with the kadmind(8)
  508. server for the realm.
  509. .TP
  510. \fBauth_to_local\fP
  511. This tag allows you to set a general rule for mapping principal
  512. names to local user names. It will be used if there is not an
  513. explicit mapping for the principal name that is being
  514. translated. The possible values are:
  515. .INDENT 7.0
  516. .TP
  517. \fBRULE:\fP\fIexp\fP
  518. The local name will be formulated from \fIexp\fP\&.
  519. .sp
  520. The format for \fIexp\fP is \fB[\fP\fIn\fP\fB:\fP\fIstring\fP\fB](\fP\fIregexp\fP\fB)s/\fP\fIpattern\fP\fB/\fP\fIreplacement\fP\fB/g\fP\&.
  521. The integer \fIn\fP indicates how many components the target
  522. principal should have. If this matches, then a string will be
  523. formed from \fIstring\fP, substituting the realm of the principal
  524. for \fB$0\fP and the \fIn\fP\(aqth component of the principal for
  525. \fB$n\fP (e.g., if the principal was \fBjohndoe/admin\fP then
  526. \fB[2:$2$1foo]\fP would result in the string
  527. \fBadminjohndoefoo\fP). If this string matches \fIregexp\fP, then
  528. the \fBs//[g]\fP substitution command will be run over the
  529. string. The optional \fBg\fP will cause the substitution to be
  530. global over the \fIstring\fP, instead of replacing only the first
  531. match in the \fIstring\fP\&.
  532. .TP
  533. \fBDEFAULT\fP
  534. The principal name will be used as the local user name. If
  535. the principal has more than one component or is not in the
  536. default realm, this rule is not applicable and the conversion
  537. will fail.
  538. .UNINDENT
  539. .sp
  540. For example:
  541. .INDENT 7.0
  542. .INDENT 3.5
  543. .sp
  544. .nf
  545. .ft C
  546. [realms]
  547. ATHENA.MIT.EDU = {
  548. auth_to_local = RULE:[2:$1](johndoe)s/^.*$/guest/
  549. auth_to_local = RULE:[2:$1;$2](^.*;admin$)s/;admin$//
  550. auth_to_local = RULE:[2:$2](^.*;root)s/^.*$/root/
  551. auth_to_local = DEFAULT
  552. }
  553. .ft P
  554. .fi
  555. .UNINDENT
  556. .UNINDENT
  557. .sp
  558. would result in any principal without \fBroot\fP or \fBadmin\fP as the
  559. second component to be translated with the default rule. A
  560. principal with a second component of \fBadmin\fP will become its
  561. first component. \fBroot\fP will be used as the local name for any
  562. principal with a second component of \fBroot\fP\&. The exception to
  563. these two rules are any principals \fBjohndoe/*\fP, which will
  564. always get the local name \fBguest\fP\&.
  565. .TP
  566. \fBauth_to_local_names\fP
  567. This subsection allows you to set explicit mappings from principal
  568. names to local user names. The tag is the mapping name, and the
  569. value is the corresponding local user name.
  570. .TP
  571. \fBdefault_domain\fP
  572. This tag specifies the domain used to expand hostnames when
  573. translating Kerberos 4 service principals to Kerberos 5 principals
  574. (for example, when converting \fBrcmd.hostname\fP to
  575. \fBhost/hostname.domain\fP).
  576. .TP
  577. \fBdisable_encrypted_timestamp\fP
  578. If this flag is true, the client will not perform encrypted
  579. timestamp preauthentication if requested by the KDC. Setting this
  580. flag can help to prevent dictionary attacks by active attackers,
  581. if the realm\(aqs KDCs support SPAKE preauthentication or if initial
  582. authentication always uses another mechanism or always uses FAST.
  583. This flag persists across client referrals during initial
  584. authentication. This flag does not prevent the KDC from offering
  585. encrypted timestamp. New in release 1.17.
  586. .TP
  587. \fBhttp_anchors\fP
  588. When KDCs and kpasswd servers are accessed through HTTPS proxies, this tag
  589. can be used to specify the location of the CA certificate which should be
  590. trusted to issue the certificate for a proxy server. If left unspecified,
  591. the system\-wide default set of CA certificates is used.
  592. .sp
  593. The syntax for values is similar to that of values for the
  594. \fBpkinit_anchors\fP tag:
  595. .sp
  596. \fBFILE:\fP \fIfilename\fP
  597. .sp
  598. \fIfilename\fP is assumed to be the name of an OpenSSL\-style ca\-bundle file.
  599. .sp
  600. \fBDIR:\fP \fIdirname\fP
  601. .sp
  602. \fIdirname\fP is assumed to be an directory which contains CA certificates.
  603. All files in the directory will be examined; if they contain certificates
  604. (in PEM format), they will be used.
  605. .sp
  606. \fBENV:\fP \fIenvvar\fP
  607. .sp
  608. \fIenvvar\fP specifies the name of an environment variable which has been set
  609. to a value conforming to one of the previous values. For example,
  610. \fBENV:X509_PROXY_CA\fP, where environment variable \fBX509_PROXY_CA\fP has
  611. been set to \fBFILE:/tmp/my_proxy.pem\fP\&.
  612. .TP
  613. \fBkdc\fP
  614. The name or address of a host running a KDC for that realm. An
  615. optional port number, separated from the hostname by a colon, may
  616. be included. If the name or address contains colons (for example,
  617. if it is an IPv6 address), enclose it in square brackets to
  618. distinguish the colon from a port separator. For your computer to
  619. be able to communicate with the KDC for each realm, this tag must
  620. be given a value in each realm subsection in the configuration
  621. file, or there must be DNS SRV records specifying the KDCs.
  622. .TP
  623. \fBkpasswd_server\fP
  624. Points to the server where all the password changes are performed.
  625. If there is no such entry, DNS will be queried (unless forbidden
  626. by \fBdns_lookup_kdc\fP). Finally, port 464 on the \fBadmin_server\fP
  627. host will be tried.
  628. .TP
  629. \fBmaster_kdc\fP
  630. The name for \fBprimary_kdc\fP prior to release 1.19. Its value is
  631. used as a fallback if \fBprimary_kdc\fP is not specified.
  632. .TP
  633. \fBprimary_kdc\fP
  634. Identifies the primary KDC(s). Currently, this tag is used in only
  635. one case: If an attempt to get credentials fails because of an
  636. invalid password, the client software will attempt to contact the
  637. primary KDC, in case the user\(aqs password has just been changed, and
  638. the updated database has not been propagated to the replica
  639. servers yet. New in release 1.19.
  640. .TP
  641. \fBv4_instance_convert\fP
  642. This subsection allows the administrator to configure exceptions
  643. to the \fBdefault_domain\fP mapping rule. It contains V4 instances
  644. (the tag name) which should be translated to some specific
  645. hostname (the tag value) as the second component in a Kerberos V5
  646. principal name.
  647. .TP
  648. \fBv4_realm\fP
  649. This relation is used by the krb524 library routines when
  650. converting a V5 principal name to a V4 principal name. It is used
  651. when the V4 realm name and the V5 realm name are not the same, but
  652. still share the same principal names and passwords. The tag value
  653. is the Kerberos V4 realm name.
  654. .UNINDENT
  655. .SS [domain_realm]
  656. .sp
  657. The [domain_realm] section provides a translation from hostnames to
  658. Kerberos realms. Each tag is a domain name, providing the mapping for
  659. that domain and all subdomains. If the tag begins with a period
  660. (\fB\&.\fP) then it applies only to subdomains. The Kerberos realm may be
  661. identified either in the \fI\%realms\fP section or using DNS SRV records.
  662. Tag names should be in lower case. For example:
  663. .INDENT 0.0
  664. .INDENT 3.5
  665. .sp
  666. .nf
  667. .ft C
  668. [domain_realm]
  669. crash.mit.edu = TEST.ATHENA.MIT.EDU
  670. .dev.mit.edu = TEST.ATHENA.MIT.EDU
  671. mit.edu = ATHENA.MIT.EDU
  672. .ft P
  673. .fi
  674. .UNINDENT
  675. .UNINDENT
  676. .sp
  677. maps the host with the name \fBcrash.mit.edu\fP into the
  678. \fBTEST.ATHENA.MIT.EDU\fP realm. The second entry maps all hosts under the
  679. domain \fBdev.mit.edu\fP into the \fBTEST.ATHENA.MIT.EDU\fP realm, but not
  680. the host with the name \fBdev.mit.edu\fP\&. That host is matched
  681. by the third entry, which maps the host \fBmit.edu\fP and all hosts
  682. under the domain \fBmit.edu\fP that do not match a preceding rule
  683. into the realm \fBATHENA.MIT.EDU\fP\&.
  684. .sp
  685. If no translation entry applies to a hostname used for a service
  686. principal for a service ticket request, the library will try to get a
  687. referral to the appropriate realm from the client realm\(aqs KDC. If
  688. that does not succeed, the host\(aqs realm is considered to be the
  689. hostname\(aqs domain portion converted to uppercase, unless the
  690. \fBrealm_try_domains\fP setting in [libdefaults] causes a different
  691. parent domain to be used.
  692. .SS [capaths]
  693. .sp
  694. In order to perform direct (non\-hierarchical) cross\-realm
  695. authentication, configuration is needed to determine the
  696. authentication paths between realms.
  697. .sp
  698. A client will use this section to find the authentication path between
  699. its realm and the realm of the server. The server will use this
  700. section to verify the authentication path used by the client, by
  701. checking the transited field of the received ticket.
  702. .sp
  703. There is a tag for each participating client realm, and each tag has
  704. subtags for each of the server realms. The value of the subtags is an
  705. intermediate realm which may participate in the cross\-realm
  706. authentication. The subtags may be repeated if there is more then one
  707. intermediate realm. A value of "." means that the two realms share
  708. keys directly, and no intermediate realms should be allowed to
  709. participate.
  710. .sp
  711. Only those entries which will be needed on the client or the server
  712. need to be present. A client needs a tag for its local realm with
  713. subtags for all the realms of servers it will need to authenticate to.
  714. A server needs a tag for each realm of the clients it will serve, with
  715. a subtag of the server realm.
  716. .sp
  717. For example, \fBANL.GOV\fP, \fBPNL.GOV\fP, and \fBNERSC.GOV\fP all wish to
  718. use the \fBES.NET\fP realm as an intermediate realm. ANL has a sub
  719. realm of \fBTEST.ANL.GOV\fP which will authenticate with \fBNERSC.GOV\fP
  720. but not \fBPNL.GOV\fP\&. The [capaths] section for \fBANL.GOV\fP systems
  721. would look like this:
  722. .INDENT 0.0
  723. .INDENT 3.5
  724. .sp
  725. .nf
  726. .ft C
  727. [capaths]
  728. ANL.GOV = {
  729. TEST.ANL.GOV = .
  730. PNL.GOV = ES.NET
  731. NERSC.GOV = ES.NET
  732. ES.NET = .
  733. }
  734. TEST.ANL.GOV = {
  735. ANL.GOV = .
  736. }
  737. PNL.GOV = {
  738. ANL.GOV = ES.NET
  739. }
  740. NERSC.GOV = {
  741. ANL.GOV = ES.NET
  742. }
  743. ES.NET = {
  744. ANL.GOV = .
  745. }
  746. .ft P
  747. .fi
  748. .UNINDENT
  749. .UNINDENT
  750. .sp
  751. The [capaths] section of the configuration file used on \fBNERSC.GOV\fP
  752. systems would look like this:
  753. .INDENT 0.0
  754. .INDENT 3.5
  755. .sp
  756. .nf
  757. .ft C
  758. [capaths]
  759. NERSC.GOV = {
  760. ANL.GOV = ES.NET
  761. TEST.ANL.GOV = ES.NET
  762. TEST.ANL.GOV = ANL.GOV
  763. PNL.GOV = ES.NET
  764. ES.NET = .
  765. }
  766. ANL.GOV = {
  767. NERSC.GOV = ES.NET
  768. }
  769. PNL.GOV = {
  770. NERSC.GOV = ES.NET
  771. }
  772. ES.NET = {
  773. NERSC.GOV = .
  774. }
  775. TEST.ANL.GOV = {
  776. NERSC.GOV = ANL.GOV
  777. NERSC.GOV = ES.NET
  778. }
  779. .ft P
  780. .fi
  781. .UNINDENT
  782. .UNINDENT
  783. .sp
  784. When a subtag is used more than once within a tag, clients will use
  785. the order of values to determine the path. The order of values is not
  786. important to servers.
  787. .SS [appdefaults]
  788. .sp
  789. Each tag in the [appdefaults] section names a Kerberos V5 application
  790. or an option that is used by some Kerberos V5 application[s]. The
  791. value of the tag defines the default behaviors for that application.
  792. .sp
  793. For example:
  794. .INDENT 0.0
  795. .INDENT 3.5
  796. .sp
  797. .nf
  798. .ft C
  799. [appdefaults]
  800. telnet = {
  801. ATHENA.MIT.EDU = {
  802. option1 = false
  803. }
  804. }
  805. telnet = {
  806. option1 = true
  807. option2 = true
  808. }
  809. ATHENA.MIT.EDU = {
  810. option2 = false
  811. }
  812. option2 = true
  813. .ft P
  814. .fi
  815. .UNINDENT
  816. .UNINDENT
  817. .sp
  818. The above four ways of specifying the value of an option are shown in
  819. order of decreasing precedence. In this example, if telnet is running
  820. in the realm EXAMPLE.COM, it should, by default, have option1 and
  821. option2 set to true. However, a telnet program in the realm
  822. \fBATHENA.MIT.EDU\fP should have \fBoption1\fP set to false and
  823. \fBoption2\fP set to true. Any other programs in ATHENA.MIT.EDU should
  824. have \fBoption2\fP set to false by default. Any programs running in
  825. other realms should have \fBoption2\fP set to true.
  826. .sp
  827. The list of specifiable options for each application may be found in
  828. that application\(aqs man pages. The application defaults specified here
  829. are overridden by those specified in the \fI\%realms\fP section.
  830. .SS [plugins]
  831. .INDENT 0.0
  832. .INDENT 3.5
  833. .INDENT 0.0
  834. .IP \(bu 2
  835. \fI\%pwqual\fP interface
  836. .IP \(bu 2
  837. \fI\%kadm5_hook\fP interface
  838. .IP \(bu 2
  839. \fI\%clpreauth\fP and \fI\%kdcpreauth\fP interfaces
  840. .UNINDENT
  841. .UNINDENT
  842. .UNINDENT
  843. .sp
  844. Tags in the [plugins] section can be used to register dynamic plugin
  845. modules and to turn modules on and off. Not every krb5 pluggable
  846. interface uses the [plugins] section; the ones that do are documented
  847. here.
  848. .sp
  849. New in release 1.9.
  850. .sp
  851. Each pluggable interface corresponds to a subsection of [plugins].
  852. All subsections support the same tags:
  853. .INDENT 0.0
  854. .TP
  855. \fBdisable\fP
  856. This tag may have multiple values. If there are values for this
  857. tag, then the named modules will be disabled for the pluggable
  858. interface.
  859. .TP
  860. \fBenable_only\fP
  861. This tag may have multiple values. If there are values for this
  862. tag, then only the named modules will be enabled for the pluggable
  863. interface.
  864. .TP
  865. \fBmodule\fP
  866. This tag may have multiple values. Each value is a string of the
  867. form \fBmodulename:pathname\fP, which causes the shared object
  868. located at \fIpathname\fP to be registered as a dynamic module named
  869. \fImodulename\fP for the pluggable interface. If \fIpathname\fP is not an
  870. absolute path, it will be treated as relative to the
  871. \fBplugin_base_dir\fP value from \fI\%[libdefaults]\fP\&.
  872. .UNINDENT
  873. .sp
  874. For pluggable interfaces where module order matters, modules
  875. registered with a \fBmodule\fP tag normally come first, in the order
  876. they are registered, followed by built\-in modules in the order they
  877. are documented below. If \fBenable_only\fP tags are used, then the
  878. order of those tags overrides the normal module order.
  879. .sp
  880. The following subsections are currently supported within the [plugins]
  881. section:
  882. .SS ccselect interface
  883. .sp
  884. The ccselect subsection controls modules for credential cache
  885. selection within a cache collection. In addition to any registered
  886. dynamic modules, the following built\-in modules exist (and may be
  887. disabled with the disable tag):
  888. .INDENT 0.0
  889. .TP
  890. \fBk5identity\fP
  891. Uses a .k5identity file in the user\(aqs home directory to select a
  892. client principal
  893. .TP
  894. \fBrealm\fP
  895. Uses the service realm to guess an appropriate cache from the
  896. collection
  897. .TP
  898. \fBhostname\fP
  899. If the service principal is host\-based, uses the service hostname
  900. to guess an appropriate cache from the collection
  901. .UNINDENT
  902. .SS pwqual interface
  903. .sp
  904. The pwqual subsection controls modules for the password quality
  905. interface, which is used to reject weak passwords when passwords are
  906. changed. The following built\-in modules exist for this interface:
  907. .INDENT 0.0
  908. .TP
  909. \fBdict\fP
  910. Checks against the realm dictionary file
  911. .TP
  912. \fBempty\fP
  913. Rejects empty passwords
  914. .TP
  915. \fBhesiod\fP
  916. Checks against user information stored in Hesiod (only if Kerberos
  917. was built with Hesiod support)
  918. .TP
  919. \fBprinc\fP
  920. Checks against components of the principal name
  921. .UNINDENT
  922. .SS kadm5_hook interface
  923. .sp
  924. The kadm5_hook interface provides plugins with information on
  925. principal creation, modification, password changes and deletion. This
  926. interface can be used to write a plugin to synchronize MIT Kerberos
  927. with another database such as Active Directory. No plugins are built
  928. in for this interface.
  929. .SS kadm5_auth interface
  930. .sp
  931. The kadm5_auth section (introduced in release 1.16) controls modules
  932. for the kadmin authorization interface, which determines whether a
  933. client principal is allowed to perform a kadmin operation. The
  934. following built\-in modules exist for this interface:
  935. .INDENT 0.0
  936. .TP
  937. \fBacl\fP
  938. This module reads the kadm5.acl(5) file, and authorizes
  939. operations which are allowed according to the rules in the file.
  940. .TP
  941. \fBself\fP
  942. This module authorizes self\-service operations including password
  943. changes, creation of new random keys, fetching the client\(aqs
  944. principal record or string attributes, and fetching the policy
  945. record associated with the client principal.
  946. .UNINDENT
  947. .SS clpreauth and kdcpreauth interfaces
  948. .sp
  949. The clpreauth and kdcpreauth interfaces allow plugin modules to
  950. provide client and KDC preauthentication mechanisms. The following
  951. built\-in modules exist for these interfaces:
  952. .INDENT 0.0
  953. .TP
  954. \fBpkinit\fP
  955. This module implements the PKINIT preauthentication mechanism.
  956. .TP
  957. \fBencrypted_challenge\fP
  958. This module implements the encrypted challenge FAST factor.
  959. .TP
  960. \fBencrypted_timestamp\fP
  961. This module implements the encrypted timestamp mechanism.
  962. .UNINDENT
  963. .SS hostrealm interface
  964. .sp
  965. The hostrealm section (introduced in release 1.12) controls modules
  966. for the host\-to\-realm interface, which affects the local mapping of
  967. hostnames to realm names and the choice of default realm. The following
  968. built\-in modules exist for this interface:
  969. .INDENT 0.0
  970. .TP
  971. \fBprofile\fP
  972. This module consults the [domain_realm] section of the profile for
  973. authoritative host\-to\-realm mappings, and the \fBdefault_realm\fP
  974. variable for the default realm.
  975. .TP
  976. \fBdns\fP
  977. This module looks for DNS records for fallback host\-to\-realm
  978. mappings and the default realm. It only operates if the
  979. \fBdns_lookup_realm\fP variable is set to true.
  980. .TP
  981. \fBdomain\fP
  982. This module applies heuristics for fallback host\-to\-realm
  983. mappings. It implements the \fBrealm_try_domains\fP variable, and
  984. uses the uppercased parent domain of the hostname if that does not
  985. produce a result.
  986. .UNINDENT
  987. .SS localauth interface
  988. .sp
  989. The localauth section (introduced in release 1.12) controls modules
  990. for the local authorization interface, which affects the relationship
  991. between Kerberos principals and local system accounts. The following
  992. built\-in modules exist for this interface:
  993. .INDENT 0.0
  994. .TP
  995. \fBdefault\fP
  996. This module implements the \fBDEFAULT\fP type for \fBauth_to_local\fP
  997. values.
  998. .TP
  999. \fBrule\fP
  1000. This module implements the \fBRULE\fP type for \fBauth_to_local\fP
  1001. values.
  1002. .TP
  1003. \fBnames\fP
  1004. This module looks for an \fBauth_to_local_names\fP mapping for the
  1005. principal name.
  1006. .TP
  1007. \fBauth_to_local\fP
  1008. This module processes \fBauth_to_local\fP values in the default
  1009. realm\(aqs section, and applies the default method if no
  1010. \fBauth_to_local\fP values exist.
  1011. .TP
  1012. \fBk5login\fP
  1013. This module authorizes a principal to a local account according to
  1014. the account\(aqs \&.k5login(5) file.
  1015. .TP
  1016. \fBan2ln\fP
  1017. This module authorizes a principal to a local account if the
  1018. principal name maps to the local account name.
  1019. .UNINDENT
  1020. .SS certauth interface
  1021. .sp
  1022. The certauth section (introduced in release 1.16) controls modules for
  1023. the certificate authorization interface, which determines whether a
  1024. certificate is allowed to preauthenticate a user via PKINIT. The
  1025. following built\-in modules exist for this interface:
  1026. .INDENT 0.0
  1027. .TP
  1028. \fBpkinit_san\fP
  1029. This module authorizes the certificate if it contains a PKINIT
  1030. Subject Alternative Name for the requested client principal, or a
  1031. Microsoft UPN SAN matching the principal if \fBpkinit_allow_upn\fP
  1032. is set to true for the realm.
  1033. .TP
  1034. \fBpkinit_eku\fP
  1035. This module rejects the certificate if it does not contain an
  1036. Extended Key Usage attribute consistent with the
  1037. \fBpkinit_eku_checking\fP value for the realm.
  1038. .TP
  1039. \fBdbmatch\fP
  1040. This module authorizes or rejects the certificate according to
  1041. whether it matches the \fBpkinit_cert_match\fP string attribute on
  1042. the client principal, if that attribute is present.
  1043. .UNINDENT
  1044. .SH PKINIT OPTIONS
  1045. .sp
  1046. \fBNOTE:\fP
  1047. .INDENT 0.0
  1048. .INDENT 3.5
  1049. The following are PKINIT\-specific options. These values may
  1050. be specified in [libdefaults] as global defaults, or within
  1051. a realm\-specific subsection of [libdefaults], or may be
  1052. specified as realm\-specific values in the [realms] section.
  1053. A realm\-specific value overrides, not adds to, a generic
  1054. [libdefaults] specification. The search order is:
  1055. .UNINDENT
  1056. .UNINDENT
  1057. .INDENT 0.0
  1058. .IP 1. 3
  1059. realm\-specific subsection of [libdefaults]:
  1060. .INDENT 3.0
  1061. .INDENT 3.5
  1062. .sp
  1063. .nf
  1064. .ft C
  1065. [libdefaults]
  1066. EXAMPLE.COM = {
  1067. pkinit_anchors = FILE:/usr/local/example.com.crt
  1068. }
  1069. .ft P
  1070. .fi
  1071. .UNINDENT
  1072. .UNINDENT
  1073. .IP 2. 3
  1074. realm\-specific value in the [realms] section:
  1075. .INDENT 3.0
  1076. .INDENT 3.5
  1077. .sp
  1078. .nf
  1079. .ft C
  1080. [realms]
  1081. OTHERREALM.ORG = {
  1082. pkinit_anchors = FILE:/usr/local/otherrealm.org.crt
  1083. }
  1084. .ft P
  1085. .fi
  1086. .UNINDENT
  1087. .UNINDENT
  1088. .IP 3. 3
  1089. generic value in the [libdefaults] section:
  1090. .INDENT 3.0
  1091. .INDENT 3.5
  1092. .sp
  1093. .nf
  1094. .ft C
  1095. [libdefaults]
  1096. pkinit_anchors = DIR:/usr/local/generic_trusted_cas/
  1097. .ft P
  1098. .fi
  1099. .UNINDENT
  1100. .UNINDENT
  1101. .UNINDENT
  1102. .SS Specifying PKINIT identity information
  1103. .sp
  1104. The syntax for specifying Public Key identity, trust, and revocation
  1105. information for PKINIT is as follows:
  1106. .INDENT 0.0
  1107. .TP
  1108. \fBFILE:\fP\fIfilename\fP[\fB,\fP\fIkeyfilename\fP]
  1109. This option has context\-specific behavior.
  1110. .sp
  1111. In \fBpkinit_identity\fP or \fBpkinit_identities\fP, \fIfilename\fP
  1112. specifies the name of a PEM\-format file containing the user\(aqs
  1113. certificate. If \fIkeyfilename\fP is not specified, the user\(aqs
  1114. private key is expected to be in \fIfilename\fP as well. Otherwise,
  1115. \fIkeyfilename\fP is the name of the file containing the private key.
  1116. .sp
  1117. In \fBpkinit_anchors\fP or \fBpkinit_pool\fP, \fIfilename\fP is assumed to
  1118. be the name of an OpenSSL\-style ca\-bundle file.
  1119. .TP
  1120. \fBDIR:\fP\fIdirname\fP
  1121. This option has context\-specific behavior.
  1122. .sp
  1123. In \fBpkinit_identity\fP or \fBpkinit_identities\fP, \fIdirname\fP
  1124. specifies a directory with files named \fB*.crt\fP and \fB*.key\fP
  1125. where the first part of the file name is the same for matching
  1126. pairs of certificate and private key files. When a file with a
  1127. name ending with \fB\&.crt\fP is found, a matching file ending with
  1128. \fB\&.key\fP is assumed to contain the private key. If no such file
  1129. is found, then the certificate in the \fB\&.crt\fP is not used.
  1130. .sp
  1131. In \fBpkinit_anchors\fP or \fBpkinit_pool\fP, \fIdirname\fP is assumed to
  1132. be an OpenSSL\-style hashed CA directory where each CA cert is
  1133. stored in a file named \fBhash\-of\-ca\-cert.#\fP\&. This infrastructure
  1134. is encouraged, but all files in the directory will be examined and
  1135. if they contain certificates (in PEM format), they will be used.
  1136. .sp
  1137. In \fBpkinit_revoke\fP, \fIdirname\fP is assumed to be an OpenSSL\-style
  1138. hashed CA directory where each revocation list is stored in a file
  1139. named \fBhash\-of\-ca\-cert.r#\fP\&. This infrastructure is encouraged,
  1140. but all files in the directory will be examined and if they
  1141. contain a revocation list (in PEM format), they will be used.
  1142. .TP
  1143. \fBPKCS12:\fP\fIfilename\fP
  1144. \fIfilename\fP is the name of a PKCS #12 format file, containing the
  1145. user\(aqs certificate and private key.
  1146. .TP
  1147. \fBPKCS11:\fP[\fBmodule_name=\fP]\fImodname\fP[\fB:slotid=\fP\fIslot\-id\fP][\fB:token=\fP\fItoken\-label\fP][\fB:certid=\fP\fIcert\-id\fP][\fB:certlabel=\fP\fIcert\-label\fP]
  1148. All keyword/values are optional. \fImodname\fP specifies the location
  1149. of a library implementing PKCS #11. If a value is encountered
  1150. with no keyword, it is assumed to be the \fImodname\fP\&. If no
  1151. module\-name is specified, the default is \fBopensc\-pkcs11.so\fP\&.
  1152. \fBslotid=\fP and/or \fBtoken=\fP may be specified to force the use of
  1153. a particular smard card reader or token if there is more than one
  1154. available. \fBcertid=\fP and/or \fBcertlabel=\fP may be specified to
  1155. force the selection of a particular certificate on the device.
  1156. See the \fBpkinit_cert_match\fP configuration option for more ways
  1157. to select a particular certificate to use for PKINIT.
  1158. .TP
  1159. \fBENV:\fP\fIenvvar\fP
  1160. \fIenvvar\fP specifies the name of an environment variable which has
  1161. been set to a value conforming to one of the previous values. For
  1162. example, \fBENV:X509_PROXY\fP, where environment variable
  1163. \fBX509_PROXY\fP has been set to \fBFILE:/tmp/my_proxy.pem\fP\&.
  1164. .UNINDENT
  1165. .SS PKINIT krb5.conf options
  1166. .INDENT 0.0
  1167. .TP
  1168. \fBpkinit_anchors\fP
  1169. Specifies the location of trusted anchor (root) certificates which
  1170. the client trusts to sign KDC certificates. This option may be
  1171. specified multiple times. These values from the config file are
  1172. not used if the user specifies X509_anchors on the command line.
  1173. .TP
  1174. \fBpkinit_cert_match\fP
  1175. Specifies matching rules that the client certificate must match
  1176. before it is used to attempt PKINIT authentication. If a user has
  1177. multiple certificates available (on a smart card, or via other
  1178. media), there must be exactly one certificate chosen before
  1179. attempting PKINIT authentication. This option may be specified
  1180. multiple times. All the available certificates are checked
  1181. against each rule in order until there is a match of exactly one
  1182. certificate.
  1183. .sp
  1184. The Subject and Issuer comparison strings are the \fI\%RFC 2253\fP
  1185. string representations from the certificate Subject DN and Issuer
  1186. DN values.
  1187. .sp
  1188. The syntax of the matching rules is:
  1189. .INDENT 7.0
  1190. .INDENT 3.5
  1191. [\fIrelation\-operator\fP]\fIcomponent\-rule\fP ...
  1192. .UNINDENT
  1193. .UNINDENT
  1194. .sp
  1195. where:
  1196. .INDENT 7.0
  1197. .TP
  1198. .B \fIrelation\-operator\fP
  1199. can be either \fB&&\fP, meaning all component rules must match,
  1200. or \fB||\fP, meaning only one component rule must match. The
  1201. default is \fB&&\fP\&.
  1202. .TP
  1203. .B \fIcomponent\-rule\fP
  1204. can be one of the following. Note that there is no
  1205. punctuation or whitespace between component rules.
  1206. .INDENT 7.0
  1207. .INDENT 3.5
  1208. .nf
  1209. \fB<SUBJECT>\fP\fIregular\-expression\fP
  1210. \fB<ISSUER>\fP\fIregular\-expression\fP
  1211. \fB<SAN>\fP\fIregular\-expression\fP
  1212. \fB<EKU>\fP\fIextended\-key\-usage\-list\fP
  1213. \fB<KU>\fP\fIkey\-usage\-list\fP
  1214. .fi
  1215. .sp
  1216. .UNINDENT
  1217. .UNINDENT
  1218. .sp
  1219. \fIextended\-key\-usage\-list\fP is a comma\-separated list of
  1220. required Extended Key Usage values. All values in the list
  1221. must be present in the certificate. Extended Key Usage values
  1222. can be:
  1223. .INDENT 7.0
  1224. .IP \(bu 2
  1225. pkinit
  1226. .IP \(bu 2
  1227. msScLogin
  1228. .IP \(bu 2
  1229. clientAuth
  1230. .IP \(bu 2
  1231. emailProtection
  1232. .UNINDENT
  1233. .sp
  1234. \fIkey\-usage\-list\fP is a comma\-separated list of required Key
  1235. Usage values. All values in the list must be present in the
  1236. certificate. Key Usage values can be:
  1237. .INDENT 7.0
  1238. .IP \(bu 2
  1239. digitalSignature
  1240. .IP \(bu 2
  1241. keyEncipherment
  1242. .UNINDENT
  1243. .UNINDENT
  1244. .sp
  1245. Examples:
  1246. .INDENT 7.0
  1247. .INDENT 3.5
  1248. .sp
  1249. .nf
  1250. .ft C
  1251. pkinit_cert_match = ||<SUBJECT>.*DoE.*<SAN>.*@EXAMPLE.COM
  1252. pkinit_cert_match = &&<EKU>msScLogin,clientAuth<ISSUER>.*DoE.*
  1253. pkinit_cert_match = <EKU>msScLogin,clientAuth<KU>digitalSignature
  1254. .ft P
  1255. .fi
  1256. .UNINDENT
  1257. .UNINDENT
  1258. .TP
  1259. \fBpkinit_eku_checking\fP
  1260. This option specifies what Extended Key Usage value the KDC
  1261. certificate presented to the client must contain. (Note that if
  1262. the KDC certificate has the pkinit SubjectAlternativeName encoded
  1263. as the Kerberos TGS name, EKU checking is not necessary since the
  1264. issuing CA has certified this as a KDC certificate.) The values
  1265. recognized in the krb5.conf file are:
  1266. .INDENT 7.0
  1267. .TP
  1268. \fBkpKDC\fP
  1269. This is the default value and specifies that the KDC must have
  1270. the id\-pkinit\-KPKdc EKU as defined in \fI\%RFC 4556\fP\&.
  1271. .TP
  1272. \fBkpServerAuth\fP
  1273. If \fBkpServerAuth\fP is specified, a KDC certificate with the
  1274. id\-kp\-serverAuth EKU will be accepted. This key usage value
  1275. is used in most commercially issued server certificates.
  1276. .TP
  1277. \fBnone\fP
  1278. If \fBnone\fP is specified, then the KDC certificate will not be
  1279. checked to verify it has an acceptable EKU. The use of this
  1280. option is not recommended.
  1281. .UNINDENT
  1282. .TP
  1283. \fBpkinit_dh_min_bits\fP
  1284. Specifies the size of the Diffie\-Hellman key the client will
  1285. attempt to use. The acceptable values are 1024, 2048, and 4096.
  1286. The default is 2048.
  1287. .TP
  1288. \fBpkinit_identities\fP
  1289. Specifies the location(s) to be used to find the user\(aqs X.509
  1290. identity information. If this option is specified multiple times,
  1291. each value is attempted in order until certificates are found.
  1292. Note that these values are not used if the user specifies
  1293. \fBX509_user_identity\fP on the command line.
  1294. .TP
  1295. \fBpkinit_kdc_hostname\fP
  1296. The presence of this option indicates that the client is willing
  1297. to accept a KDC certificate with a dNSName SAN (Subject
  1298. Alternative Name) rather than requiring the id\-pkinit\-san as
  1299. defined in \fI\%RFC 4556\fP\&. This option may be specified multiple
  1300. times. Its value should contain the acceptable hostname for the
  1301. KDC (as contained in its certificate).
  1302. .TP
  1303. \fBpkinit_pool\fP
  1304. Specifies the location of intermediate certificates which may be
  1305. used by the client to complete the trust chain between a KDC
  1306. certificate and a trusted anchor. This option may be specified
  1307. multiple times.
  1308. .TP
  1309. \fBpkinit_require_crl_checking\fP
  1310. The default certificate verification process will always check the
  1311. available revocation information to see if a certificate has been
  1312. revoked. If a match is found for the certificate in a CRL,
  1313. verification fails. If the certificate being verified is not
  1314. listed in a CRL, or there is no CRL present for its issuing CA,
  1315. and \fBpkinit_require_crl_checking\fP is false, then verification
  1316. succeeds.
  1317. .sp
  1318. However, if \fBpkinit_require_crl_checking\fP is true and there is
  1319. no CRL information available for the issuing CA, then verification
  1320. fails.
  1321. .sp
  1322. \fBpkinit_require_crl_checking\fP should be set to true if the
  1323. policy is such that up\-to\-date CRLs must be present for every CA.
  1324. .TP
  1325. \fBpkinit_revoke\fP
  1326. Specifies the location of Certificate Revocation List (CRL)
  1327. information to be used by the client when verifying the validity
  1328. of the KDC certificate presented. This option may be specified
  1329. multiple times.
  1330. .UNINDENT
  1331. .SH PARAMETER EXPANSION
  1332. .sp
  1333. Starting with release 1.11, several variables, such as
  1334. \fBdefault_keytab_name\fP, allow parameters to be expanded.
  1335. Valid parameters are:
  1336. .INDENT 0.0
  1337. .INDENT 3.5
  1338. .TS
  1339. center;
  1340. |l|l|.
  1341. _
  1342. T{
  1343. %{TEMP}
  1344. T} T{
  1345. Temporary directory
  1346. T}
  1347. _
  1348. T{
  1349. %{uid}
  1350. T} T{
  1351. Unix real UID or Windows SID
  1352. T}
  1353. _
  1354. T{
  1355. %{euid}
  1356. T} T{
  1357. Unix effective user ID or Windows SID
  1358. T}
  1359. _
  1360. T{
  1361. %{USERID}
  1362. T} T{
  1363. Same as %{uid}
  1364. T}
  1365. _
  1366. T{
  1367. %{null}
  1368. T} T{
  1369. Empty string
  1370. T}
  1371. _
  1372. T{
  1373. %{LIBDIR}
  1374. T} T{
  1375. Installation library directory
  1376. T}
  1377. _
  1378. T{
  1379. %{BINDIR}
  1380. T} T{
  1381. Installation binary directory
  1382. T}
  1383. _
  1384. T{
  1385. %{SBINDIR}
  1386. T} T{
  1387. Installation admin binary directory
  1388. T}
  1389. _
  1390. T{
  1391. %{username}
  1392. T} T{
  1393. (Unix) Username of effective user ID
  1394. T}
  1395. _
  1396. T{
  1397. %{APPDATA}
  1398. T} T{
  1399. (Windows) Roaming application data for current user
  1400. T}
  1401. _
  1402. T{
  1403. %{COMMON_APPDATA}
  1404. T} T{
  1405. (Windows) Application data for all users
  1406. T}
  1407. _
  1408. T{
  1409. %{LOCAL_APPDATA}
  1410. T} T{
  1411. (Windows) Local application data for current user
  1412. T}
  1413. _
  1414. T{
  1415. %{SYSTEM}
  1416. T} T{
  1417. (Windows) Windows system folder
  1418. T}
  1419. _
  1420. T{
  1421. %{WINDOWS}
  1422. T} T{
  1423. (Windows) Windows folder
  1424. T}
  1425. _
  1426. T{
  1427. %{USERCONFIG}
  1428. T} T{
  1429. (Windows) Per\-user MIT krb5 config file directory
  1430. T}
  1431. _
  1432. T{
  1433. %{COMMONCONFIG}
  1434. T} T{
  1435. (Windows) Common MIT krb5 config file directory
  1436. T}
  1437. _
  1438. .TE
  1439. .UNINDENT
  1440. .UNINDENT
  1441. .SH SAMPLE KRB5.CONF FILE
  1442. .sp
  1443. Here is an example of a generic krb5.conf file:
  1444. .INDENT 0.0
  1445. .INDENT 3.5
  1446. .sp
  1447. .nf
  1448. .ft C
  1449. [libdefaults]
  1450. default_realm = ATHENA.MIT.EDU
  1451. dns_lookup_kdc = true
  1452. dns_lookup_realm = false
  1453. [realms]
  1454. ATHENA.MIT.EDU = {
  1455. kdc = kerberos.mit.edu
  1456. kdc = kerberos\-1.mit.edu
  1457. kdc = kerberos\-2.mit.edu
  1458. admin_server = kerberos.mit.edu
  1459. primary_kdc = kerberos.mit.edu
  1460. }
  1461. EXAMPLE.COM = {
  1462. kdc = kerberos.example.com
  1463. kdc = kerberos\-1.example.com
  1464. admin_server = kerberos.example.com
  1465. }
  1466. [domain_realm]
  1467. mit.edu = ATHENA.MIT.EDU
  1468. [capaths]
  1469. ATHENA.MIT.EDU = {
  1470. EXAMPLE.COM = .
  1471. }
  1472. EXAMPLE.COM = {
  1473. ATHENA.MIT.EDU = .
  1474. }
  1475. .ft P
  1476. .fi
  1477. .UNINDENT
  1478. .UNINDENT
  1479. .SH FILES
  1480. .sp
  1481. \fB/etc/krb5.conf\fP
  1482. .SH SEE ALSO
  1483. .sp
  1484. syslog(3)
  1485. .SH AUTHOR
  1486. MIT
  1487. .SH COPYRIGHT
  1488. 1985-2022, MIT
  1489. .\" Generated by docutils manpage writer.
  1490. .