xref: /netbsd-src/crypto/external/bsd/heimdal/dist/lib/krb5/krb5.conf.5 (revision 9fd8799cb5ceb66c69f2eb1a6d26a1d587ba1f1e)
1.\"	$NetBSD: krb5.conf.5,v 1.6 2017/01/28 21:31:49 christos Exp $
2.\"
3.\" Copyright (c) 1999 - 2005 Kungliga Tekniska Högskolan
4.\" (Royal Institute of Technology, Stockholm, Sweden).
5.\" All rights reserved.
6.\"
7.\" Redistribution and use in source and binary forms, with or without
8.\" modification, are permitted provided that the following conditions
9.\" are met:
10.\"
11.\" 1. Redistributions of source code must retain the above copyright
12.\"    notice, this list of conditions and the following disclaimer.
13.\"
14.\" 2. Redistributions in binary form must reproduce the above copyright
15.\"    notice, this list of conditions and the following disclaimer in the
16.\"    documentation and/or other materials provided with the distribution.
17.\"
18.\" 3. Neither the name of the Institute nor the names of its contributors
19.\"    may be used to endorse or promote products derived from this software
20.\"    without specific prior written permission.
21.\"
22.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
23.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
26.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32.\" SUCH DAMAGE.
33.\"
34.\" Id
35.\"
36.Dd May  4, 2005
37.Dt KRB5.CONF 5
38.Os
39.Sh NAME
40.Nm krb5.conf
41.Nd configuration file for Kerberos 5
42.Sh SYNOPSIS
43.In krb5/krb5.h
44.Sh DESCRIPTION
45The
46.Nm
47file specifies several configuration parameters for the Kerberos 5
48library, as well as for some programs.
49.Pp
50The file consists of one or more sections, containing a number of
51bindings.
52The value of each binding can be either a string or a list of other
53bindings.
54The grammar looks like:
55.Bd -literal -offset indent
56file:
57	/* empty */
58	sections
59
60sections:
61	section sections
62	section
63
64section:
65	'[' section_name ']' bindings
66
67section_name:
68	STRING
69
70bindings:
71	binding bindings
72	binding
73
74binding:
75	name '=' STRING
76	name '=' '{' bindings '}'
77
78name:
79	STRING
80
81.Ed
82.Li STRINGs
83consists of one or more non-whitespace characters.
84.Pp
85STRINGs that are specified later in this man-page uses the following
86notation.
87.Bl -tag -width "xxx" -offset indent
88.It boolean
89values can be either yes/true or no/false.
90.It time
91values can be a list of year, month, day, hour, min, second.
92Example: 1 month 2 days 30 min.
93If no unit is given, seconds is assumed.
94.It etypes
95valid encryption types are: des-cbc-crc, des-cbc-md4, des-cbc-md5,
96des3-cbc-sha1, arcfour-hmac-md5, aes128-cts-hmac-sha1-96, and
97aes256-cts-hmac-sha1-96 .
98.It address
99an address can be either a IPv4 or a IPv6 address.
100.El
101.Pp
102Currently recognised sections and bindings are:
103.Bl -tag -width "xxx" -offset indent
104.It Li [appdefaults]
105Specifies the default values to be used for Kerberos applications.
106You can specify defaults per application, realm, or a combination of
107these.
108The preference order is:
109.Bl -enum -compact
110.It
111.Va application Va realm Va option
112.It
113.Va application Va option
114.It
115.Va realm Va option
116.It
117.Va option
118.El
119.Pp
120The supported options are:
121.Bl -tag -width "xxx" -offset indent
122.It Li forwardable = Va boolean
123When obtaining initial credentials, make the credentials forwardable.
124.It Li proxiable = Va boolean
125When obtaining initial credentials, make the credentials proxiable.
126.It Li no-addresses = Va boolean
127When obtaining initial credentials, request them for an empty set of
128addresses, making the tickets valid from any address.
129.It Li ticket_lifetime = Va time
130Default ticket lifetime.
131.It Li renew_lifetime = Va time
132Default renewable ticket lifetime.
133.It Li encrypt = Va boolean
134Use encryption, when available.
135.It Li forward = Va boolean
136Forward credentials to remote host (for
137.Xr rsh 1 ,
138.Xr telnet 1 ,
139etc).
140.El
141.It Li [libdefaults]
142.Bl -tag -width "xxx" -offset indent
143.It Li default_realm = Va REALM
144Default realm to use, this is also known as your
145.Dq local realm .
146The default is the result of
147.Fn krb5_get_host_realm "local hostname" .
148.It Li allow_weak_crypto = Va boolean
149are weak crypto algorithms allowed to be used, among others, DES is
150considered weak.
151.It Li clockskew = Va time
152Maximum time differential (in seconds) allowed when comparing
153times.
154Default is 300 seconds (five minutes).
155.It Li kdc_timeout = Va time
156Maximum time to wait for a reply from the kdc, default is 3 seconds.
157.It Li capath = {
158.Bl -tag -width "xxx" -offset indent
159.It Va destination-realm Li = Va next-hop-realm
160.It ...
161.It Li }
162.El
163This is deprecated, see the
164.Li capaths
165section below.
166.It Li default_cc_type = Va cctype
167sets the default credentials type.
168.It Li default_cc_name = Va ccname
169the default credentials cache name.
170If you want to change the type only use
171.Li default_cc_type .
172The string can contain variables that are expanded on runtime.
173The Only supported variable currently is
174.Li %{uid}
175which expands to the current user id.
176.It Li default_etypes = Va etypes ...
177A list of default encryption types to use. (Default: all enctypes if
178allow_weak_crypto = TRUE, else all enctypes except single DES enctypes.)
179.It Li default_as_etypes = Va etypes ...
180A list of default encryption types to use in AS requests.  (Default: the
181value of default_etypes.)
182.It Li default_tgs_etypes = Va etypes ...
183A list of default encryption types to use in TGS requests.  (Default:
184the value of default_etypes.)
185.It Li default_etypes_des = Va etypes ...
186A list of default encryption types to use when requesting a DES credential.
187.It Li default_keytab_name = Va keytab
188The keytab to use if no other is specified, default is
189.Dq FILE:/etc/krb5.keytab .
190.It Li dns_lookup_kdc = Va boolean
191Use DNS SRV records to lookup KDC services location.
192.It Li dns_lookup_realm = Va boolean
193Use DNS TXT records to lookup domain to realm mappings.
194.It Li kdc_timesync = Va boolean
195Try to keep track of the time differential between the local machine
196and the KDC, and then compensate for that when issuing requests.
197.It Li max_retries = Va number
198The max number of times to try to contact each KDC.
199.It Li large_msg_size = Va number
200The threshold where protocols with tiny maximum message sizes are not
201considered usable to send messages to the KDC.
202.It Li ticket_lifetime = Va time
203Default ticket lifetime.
204.It Li renew_lifetime = Va time
205Default renewable ticket lifetime.
206.It Li forwardable = Va boolean
207When obtaining initial credentials, make the credentials forwardable.
208This option is also valid in the [realms] section.
209.It Li proxiable = Va boolean
210When obtaining initial credentials, make the credentials proxiable.
211This option is also valid in the [realms] section.
212.It Li verify_ap_req_nofail = Va boolean
213If enabled, failure to verify credentials against a local key is a
214fatal error.
215The application has to be able to read the corresponding service key
216for this to work.
217Some applications, like
218.Xr su 1 ,
219enable this option unconditionally.
220.It Li warn_pwexpire = Va time
221How soon to warn for expiring password.
222Default is seven days.
223.It Li http_proxy = Va proxy-spec
224A HTTP-proxy to use when talking to the KDC via HTTP.
225.It Li dns_proxy = Va proxy-spec
226Enable using DNS via HTTP.
227.It Li extra_addresses = Va address ...
228A list of addresses to get tickets for along with all local addresses.
229.It Li time_format = Va string
230How to print time strings in logs, this string is passed to
231.Xr strftime 3 .
232.It Li date_format = Va string
233How to print date strings in logs, this string is passed to
234.Xr strftime 3 .
235.It Li log_utc = Va boolean
236Write log-entries using UTC instead of your local time zone.
237.It Li scan_interfaces = Va boolean
238Scan all network interfaces for addresses, as opposed to simply using
239the address associated with the system's host name.
240.It Li fcache_version = Va int
241Use file credential cache format version specified.
242.It Li fcc-mit-ticketflags = Va boolean
243Use MIT compatible format for file credential cache.
244It's the field ticketflags that is stored in reverse bit order for
245older than Heimdal 0.7.
246Setting this flag to
247.Dv TRUE
248makes it store the MIT way, this is default for Heimdal 0.7.
249.It Li check-rd-req-server
250If set to "ignore", the framework will ignore any of the server input to
251.Xr krb5_rd_req 3 ,
252this is very useful when the GSS-API server input the
253wrong server name into the gss_accept_sec_context call.
254.It Li k5login_directory = Va directory
255Alternative location for user .k5login files. This option is provided
256for compatibility with MIT krb5 configuration files.
257.It Li k5login_authoritative = Va boolean
258If true then if a principal is not found in k5login files then
259.Xr krb5_userok 3
260will not fallback on principal to username mapping. This option is
261provided for compatibility with MIT krb5 configuration files.
262.It Li kuserok = Va rule ...
263Specifies
264.Xr krb5_userok 3
265behavior.  If multiple values are given, then
266.Xr krb5_userok 3
267will evaluate them in order until one succeeds or all fail.  Rules are
268implemented by plugins, with three built-in plugins
269described below. Default: USER-K5LOGIN SIMPLE DENY.
270.It Li kuserok = Va DENY
271If set and evaluated then
272.Xr krb5_userok 3
273will deny access to the given username no matter what the principal name
274might be.
275.It Li kuserok = Va SIMPLE
276If set and evaluated then
277.Xr krb5_userok 3
278will use principal to username mapping (see auth_to_local below).  If
279the principal maps to the requested username then access is allowed.
280.It Li kuserok = Va SYSTEM-K5LOGIN[:directory]
281If set and evaluated then
282.Xr krb5_userok 3
283will use k5login files named after the
284.Va luser
285argument to
286.Xr krb5_userok 3
287in the given directory or in
288.Pa /etc/k5login.d/ .
289K5login files are text files, with each line containing just a principal
290name; principals apearing in a user's k5login file are permitted access
291to the user's account. Note: this rule performs no ownership nor
292permissions checks on k5login files; proper ownership and
293permissions/ACLs are expected due to the k5login location being a
294system location.
295.It Li kuserok = Va USER-K5LOGIN
296If set and evaluated then
297.Xr krb5_userok 3
298will use
299.Pa ~luser/.k5login
300and
301.Pa ~luser/.k5login.d/* .
302User k5login files and directories must be owned by the user and must
303not have world nor group write permissions.
304.It Li aname2lname-text-db = Va filename
305The named file must be a sorted (in increasing order) text file where
306every line consists of an unparsed principal name optionally followed by
307whitespace and a username.  The aname2lname function will do a binary
308search on this file, if configured, looking for lines that match the
309given principal name, and if found the given username will be used, or,
310if the username is missing, an error will be returned.  If the file
311doesn't exist, or if no matching line is found then other plugins will
312be allowed to run.
313.It Li fcache_strict_checking
314strict checking in FILE credential caches that owner, no symlink and
315permissions is correct.
316.It Li name_canon_rules = Va rules
317One or more service principal name canonicalization rules.  Each rule
318consists of one or more tokens separated by colon (':').  Currently
319these rules are used only for hostname canonicalization (usually when
320getting a service ticket, from a ccache or a TGS, but also when
321acquiring GSS initiator credentials from a keytab).  These rules can be
322used to implement DNS resolver-like search lists without having to use
323DNS.
324.Pp
325NOTE: Name canonicalization rules are an experimental feature.
326.Pp
327The first token is a rule type, one of:
328.Va as-is,
329.Va qualify, or
330.Va nss.
331.Pp
332Any remaining tokens must be options tokens:
333.Va use_fast
334(use FAST to protect TGS exchanges; currently not supported),
335.Va use_dnssec
336(use DNSSEC to protect hostname lookups; currently not supported),
337.Va ccache_only
338,
339.Va use_referrals,
340.Va no_referrals,
341.Va lookup_realm,
342.Va mindots=N,
343.Va maxdots=N,
344.Va order=N,
345domain=
346.Va domain,
347realm=
348.Va realm,
349match_domain=
350.Va domain,
351and match_realm=
352.Va realm.
353.Pp
354When trying to obtain a service ticket for a host-based service
355principal name, name canonicalization rules are applied to that name in
356the order given, one by one, until one succeds (a service ticket is
357obtained), or all fail.  Similarly when acquiring GSS initiator
358credentials from a keytab, and when comparing a non-canonical GSS name
359to a canonical one.
360.Pp
361For each rule the system checks that the hostname has at least
362.Va mindots
363periods (if given) in it, at most
364.Va maxdots
365periods (if given), that the hostname ends in the given
366.Va match_domain
367(if given),
368and that the realm of the principal matches the
369.Va match_realm
370(if given).
371.Pp
372.Va As-is
373rules leave the hostname unmodified but may set a realm.
374.Va Qualify
375rules qualify the hostname with the given
376.Va domain
377and also may set the realm.
378The
379.Va nss
380rule uses the system resolver to lookup the host's canonical name and is
381usually not secure.  Note that using the
382.Va nss
383rule type implies having to have principal aliases in the HDB (though
384not necessarily in keytabs).
385.Pp
386The empty realm denotes "ask the client's realm's TGS".  The empty realm
387may be set as well as matched.
388.Pp
389The order in which rules are applied is as follows: first all the rules
390with explicit
391.Va order
392then all other rules in the order in which they appear.  If any two
393rules have the same explicit
394.Va order ,
395their order of appearance in krb5.conf breaks the tie.  Explicitly
396specifying order can be useful where tools read and write the
397configuration file without preserving parameter order.
398.Pp
399Malformed rules are ignored.
400.It Li allow_hierarchical_capaths = Va boolean
401When validating cross-realm transit paths, absent any explicit capath from the
402client realm to the server realm, allow a hierarchical transit path via the
403common ancestor domain of the two realms.
404Defaults to true.
405Note, absent an explicit setting, hierarchical capaths are always used by
406the KDC when generating a referral to a destination with which is no direct
407trust.
408.El
409.It Li [domain_realm]
410This is a list of mappings from DNS domain to Kerberos realm.
411Each binding in this section looks like:
412.Pp
413.Dl domain = realm
414.Pp
415The domain can be either a full name of a host or a trailing
416component, in the latter case the domain-string should start with a
417period.
418The trailing component only matches hosts that are in the same domain, ie
419.Dq .example.com
420matches
421.Dq foo.example.com ,
422but not
423.Dq foo.test.example.com .
424.Pp
425The realm may be the token `dns_locate', in which case the actual
426realm will be determined using DNS (independently of the setting
427of the `dns_lookup_realm' option).
428.It Li [realms]
429.Bl -tag -width "xxx" -offset indent
430.It Va REALM Li = {
431.Bl -tag -width "xxx" -offset indent
432.It Li kdc = Va [service/]host[:port]
433Specifies a list of kdcs for this realm.
434If the optional
435.Va port
436is absent, the
437default value for the
438.Dq kerberos/udp
439.Dq kerberos/tcp ,
440and
441.Dq http/tcp
442port (depending on service) will be used.
443The kdcs will be used in the order that they are specified.
444.Pp
445The optional
446.Va service
447specifies over what medium the kdc should be
448contacted.
449Possible services are
450.Dq udp ,
451.Dq tcp ,
452and
453.Dq http .
454Http can also be written as
455.Dq http:// .
456Default service is
457.Dq udp
458and
459.Dq tcp .
460.It Li admin_server = Va host[:port]
461Specifies the admin server for this realm, where all the modifications
462to the database are performed.
463.It Li kpasswd_server = Va host[:port]
464Points to the server where all the password changes are performed.
465If there is no such entry, the kpasswd port on the admin_server host
466will be tried.
467.It Li tgs_require_subkey
468a boolan variable that defaults to false.
469Old DCE secd (pre 1.1) might need this to be true.
470.It Li auth_to_local_names = {
471.Bl -tag -width "xxx" -offset indent
472.It Va principal_name = Va username
473The given
474.Va principal_name
475will be mapped to the given
476.Va username
477if the
478.Va REALM
479is a default realm.
480.El
481.It Li }
482.It Li auth_to_local = HEIMDAL_DEFAULT
483Use the Heimdal default principal to username mapping.
484Applies to principals from the
485.Va REALM
486if and only if
487.Va REALM
488is a default realm.
489.It Li auth_to_local = DEFAULT
490Use the MIT default principal to username mapping.
491Applies to principals from the
492.Va REALM
493if and only if
494.Va REALM
495is a default realm.
496.It Li auth_to_local = DB:/path/to/db.txt
497Use a binary search of the given DB.  The DB must be a flat-text
498file sortedf in the "C" locale, with each record being a line
499(separated by either LF or CRLF) consisting of a principal name
500followed by whitespace followed by a username.
501Applies to principals from the
502.Va REALM
503if and only if
504.Va REALM
505is a default realm.
506.It Li auth_to_local = DB:/path/to/db
507Use the given DB, if there's a plugin for it.
508Applies to principals from the
509.Va REALM
510if and only if
511.Va REALM
512is a default realm.
513.It Li auth_to_local = RULE:...
514Use the given rule, if there's a plugin for it.
515Applies to principals from the
516.Va REALM
517if and only if
518.Va REALM
519is a default realm.
520.It Li auth_to_local = NONE
521No additional principal to username mapping is done. Note that
522.Va auth_to_local_names
523and any preceding
524.Va auth_to_local
525rules have precedence.
526.El
527.It Li }
528.El
529.It Li [capaths]
530.Bl -tag -width "xxx" -offset indent
531.It Va client-realm Li = {
532.Bl -tag -width "xxx" -offset indent
533.It Va server-realm Li = Va hop-realm ...
534This serves two purposes. First the first listed
535.Va hop-realm
536tells a client which realm it should contact in order to ultimately
537obtain credentials for a service in the
538.Va server-realm .
539Secondly, it tells the KDC (and other servers) which realms are
540allowed in a multi-hop traversal from
541.Va client-realm
542to
543.Va server-realm .
544Except for the client case, the order of the realms are not important.
545.El
546.It Va }
547.El
548.It Li [logging]
549.Bl -tag -width "xxx" -offset indent
550.It Va entity Li = Va destination
551Specifies that
552.Va entity
553should use the specified
554.Li destination
555for logging.
556See the
557.Xr krb5_openlog 3
558manual page for a list of defined destinations.
559.El
560.It Li [kdc]
561.Bl -tag -width "xxx" -offset indent
562.It Li database Li = {
563.Bl -tag -width "xxx" -offset indent
564.It Li dbname Li = Va [DATBASETYPE:]DATABASENAME
565Use this database for this realm.  The
566.Va DATABASETYPE
567should be one of 'lmdb', 'db3', 'db1', 'db', 'sqlite', or 'ldap'.
568See the info documetation how to configure different database backends.
569.It Li realm Li = Va REALM
570Specifies the realm that will be stored in this database.
571It realm isn't set, it will used as the default database, there can
572only be one entry that doesn't have a
573.Li realm
574stanza.
575.It Li mkey_file Li = Pa FILENAME
576Use this keytab file for the master key of this database.
577If not specified
578.Va DATABASENAME Ns .mkey
579will be used.
580.It Li acl_file Li = PA FILENAME
581Use this file for the ACL list of this database.
582.It Li log_file Li = Pa FILENAME
583Use this file as the log of changes performed to the database.
584This file is used by
585.Nm ipropd-master
586for propagating changes to slaves.  It is also used by
587.Nm kadmind
588and
589.Nm kadmin
590(when used with the
591.Li -l
592option), and by all applications using
593.Nm libkadm5
594with the local backend, for two-phase commit functionality.  Slaves also
595use this.  Setting this to
596.Nm /dev/null
597disables two-phase commit and incremental propagation.  Use
598.Nm iprop-log
599to show the contents of this log file.
600.It Li log-max-size = Pa number
601When the log reaches this size (in bytes), the log will be truncated,
602saving some entries, and keeping the latest version number so as to not
603disrupt incremental propagation.  If set to a negative value then
604automatic log truncation will be disabled.  Defaults to 52428800 (50MB).
605.El
606.It Li }
607.It Li max-request = Va SIZE
608Maximum size of a kdc request.
609.It Li require-preauth = Va BOOL
610If set pre-authentication is required.
611.It Li ports = Va "list of ports"
612List of ports the kdc should listen to.
613.It Li addresses = Va "list of interfaces"
614List of addresses the kdc should bind to.
615.It Li enable-http = Va BOOL
616Should the kdc answer kdc-requests over http.
617.It Li tgt-use-strongest-session-key = Va BOOL
618If this is TRUE then the KDC will prefer the strongest key from the
619client's AS-REQ or TGS-REQ enctype list for the ticket session key that
620is supported by the KDC and the target principal when the target
621principal is a krbtgt principal.  Else it will prefer the first key from
622the client's AS-REQ enctype list that is also supported by the KDC and
623the target principal.  Defaults to FALSE.
624.It Li svc-use-strongest-session-key = Va BOOL
625Like tgt-use-strongest-session-key, but applies to the session key
626enctype of tickets for services other than krbtgt principals. Defaults
627to FALSE.
628.It Li preauth-use-strongest-session-key = Va BOOL
629If TRUE then select the strongest possible enctype from the client's
630AS-REQ for PA-ETYPE-INFO2 (i.e., for password-based pre-authentication).
631Else pick the first supported enctype from the client's AS-REQ.  Defaults
632to FALSE.
633.It Li use-strongest-server-key = Va BOOL
634If TRUE then the KDC picks, for the ticket encrypted part's key, the
635first supported enctype from the target service principal's hdb entry's
636current keyset. Else the KDC picks the first supported enctype from the
637target service principal's hdb entry's current keyset.  Defaults to TRUE.
638.It Li check-ticket-addresses = Va BOOL
639Verify the addresses in the tickets used in tgs requests.
640.\" XXX
641.It Li allow-null-ticket-addresses = Va BOOL
642Allow address-less tickets.
643.\" XXX
644.It Li allow-anonymous = Va BOOL
645If the kdc is allowed to hand out anonymous tickets.
646.It Li encode_as_rep_as_tgs_rep = Va BOOL
647Encode as-rep as tgs-rep tobe compatible with mistakes older DCE secd did.
648.\" XXX
649.It Li kdc_warn_pwexpire = Va TIME
650The time before expiration that the user should be warned that her
651password is about to expire.
652.It Li logging = Va Logging
653What type of logging the kdc should use, see also [logging]/kdc.
654.It Li hdb-ldap-structural-object Va structural object
655If the LDAP backend is used for storing principals, this is the
656structural object that will be used when creating and when reading
657objects.
658The default value is account .
659.It Li hdb-ldap-create-base Va creation dn
660is the dn that will be appended to the principal when creating entries.
661Default value is the search dn.
662.It Li enable-digest = Va BOOL
663Should the kdc answer digest requests. The default is FALSE.
664.It Li digests_allowed = Va list of digests
665Specifies the digests the kdc will reply to. The default is
666.Li ntlm-v2 .
667.It Li kx509_ca = Va file
668Specifies the PEM credentials for the kx509 certification authority.
669.It Li require_initial_kca_tickets = Va boolean
670Specified whether to require that tickets for the
671.Li kca_service
672service principal be INITIAL.
673This may be set on a per-realm basis as well as globally.
674Defaults to true for the global setting.
675.It Li kx509_include_pkinit_san = Va boolean
676If true then the kx509 client principal's name and realm will be
677included in an
678.Li id-pkinit-san
679certificate extension.
680This can be set on a per-realm basis as well as globally.
681Defaults to true for the global setting.
682.It Li kx509_template = Va file
683Specifies the PEM file with a template for the certificates to be
684issued.
685The following variables can be interpolated in the subject name using
686${variable} syntax:
687.Bl -tag -width "xxx" -offset indent
688.It principal-name
689The full name of the kx509 client principal.
690.It principal-name-without-realm
691The full name of the kx509 client principal, excluding the realm name.
692.It principal-name-realm
693The name of the client principal's realm.
694.El
695.El
696The
697.Li kx509 ,
698.Li kx509_template ,
699.Li kx509_include_pkinit_san ,
700and
701.Li require_initial_kca_tickets
702parameters may be set on a per-realm basis as well.
703.It Li [kadmin]
704.Bl -tag -width "xxx" -offset indent
705.It Li password_lifetime = Va time
706If a principal already have its password set for expiration, this is
707the time it will be valid for after a change.
708.It Li default_keys = Va keytypes...
709For each entry in
710.Va default_keys
711try to parse it as a sequence of
712.Va etype:salttype:salt
713syntax of this if something like:
714.Pp
715[(des|des3|etype):](pw-salt|afs3-salt)[:string]
716.Pp
717If
718.Ar etype
719is omitted it means everything, and if string is omitted it means the
720default salt string (for that principal and encryption type).
721Additional special values of keytypes are:
722.Bl -tag -width "xxx" -offset indent
723.It Li v5
724The Kerberos 5 salt
725.Va pw-salt
726.El
727.It Li default_key_rules = Va {
728.Bl -tag -width "xxx" -offset indent
729.It Va globing-rule Li = Va keytypes...
730a globbing rule to matching a principal, and when true, use the
731keytypes as specified the same format as [kadmin]default_keys .
732.El
733.It Li }
734.It Li prune-key-history = Va BOOL
735When adding keys to the key history, drop keys that are too old to match
736unexpired tickets (based on the principal's maximum ticket lifetime).
737If the KDC keystore is later compromised traffic protected with the
738discarded older keys may remain protected.  This also keeps the HDB
739records for principals with key history from growing without bound.
740The default (backwards compatible) value is "false".
741.It Li use_v4_salt = Va BOOL
742When true, this is the same as
743.Pp
744.Va default_keys = Va des3:pw-salt Va v4
745.Pp
746and is only left for backwards compatibility.
747.It Li [password_quality]
748Check the Password quality assurance in the info documentation for
749more information.
750.Bl -tag -width "xxx" -offset indent
751.It Li check_library = Va library-name
752Library name that contains the password check_function
753.It Li check_function = Va function-name
754Function name for checking passwords in check_library
755.It Li policy_libraries = Va library1 ... libraryN
756List of libraries that can do password policy checks
757.It Li policies = Va policy1 ... policyN
758List of policy names to apply to the password. Builtin policies are
759among other minimum-length, character-class, external-check.
760.El
761.El
762.El
763.Sh ENVIRONMENT
764.Ev KRB5_CONFIG
765points to the configuration file to read.
766.Sh FILES
767.Bl -tag -width "/etc/krb5.conf"
768.It Pa /etc/krb5.conf
769configuration file for Kerberos 5.
770.El
771.Sh EXAMPLES
772.Bd -literal -offset indent
773[libdefaults]
774	default_realm = FOO.SE
775	name_canon_rules = as-is:realm=FOO.SE
776	name_canon_rules = qualify:domain=foo.se:realm=FOO.SE
777	name_canon_rules = qualify:domain=bar.se:realm=FOO.SE
778	name_canon_rules = nss
779[domain_realm]
780	.foo.se = FOO.SE
781	.bar.se = FOO.SE
782[realms]
783	FOO.SE = {
784		kdc = kerberos.foo.se
785		default_domain = foo.se
786	}
787[logging]
788	kdc = FILE:/var/heimdal/kdc.log
789	kdc = SYSLOG:INFO
790	default = SYSLOG:INFO:USER
791[kadmin]
792	default_key_rules = {
793		*/ppp@* = arcfour-hmac-md5:pw-salt
794	}
795.Ed
796.Sh DIAGNOSTICS
797Since
798.Nm
799is read and parsed by the krb5 library, there is not a lot of
800opportunities for programs to report parsing errors in any useful
801format.
802To help overcome this problem, there is a program
803.Nm verify_krb5_conf
804that reads
805.Nm
806and tries to emit useful diagnostics from parsing errors.
807Note that this program does not have any way of knowing what options
808are actually used and thus cannot warn about unknown or misspelled
809ones.
810.Sh SEE ALSO
811.Xr kinit 1 ,
812.Xr krb5_openlog 3 ,
813.Xr strftime 3 ,
814.Xr verify_krb5_conf 8
815