Hi, I try to setup kerberos authentication in Postgresql 8.1.18 on centos.
But I have some problem. I setup postgresql.conf as below: krb_server_keyfile = '/usr/local/pgsql/data/ postgresql.keytab' krb_srvname = 'postgres/s...@example.com' krb_server_hostname = 'star' # empty string matches any keytab entry krb_caseins_users = off (star is localhost IP, but in hosts.conf I configure like: 213.233.169.93 star) Then hba.conf host all all 0.0.0.0/0 krb5 host all all 127.0.0.1/32 krb5 When I want to conne ct postgresql, it give error. # kinit frank [r...@star bin]# ./psql -h star -U frank -d test psql: krb5_sendauth: Bad application version was sent (via sendauth) and both postgresql server and krb-server are in same system. Where is wrong. Please help me. On Sat, Oct 17, 2009 at 12:42 AM, Geoff Tolley <geoff.tol...@yougov.com>wrote: > Hi Rahimeh, > > Is PG on the same box as the kadmind? > > > rahimeh khodadadi wrote: > >> have never been worked with krb5 in postgresql? >> >> On 10/12/09, rahimeh khodadadi <rahimeh.khodad...@gmail.com> wrote: >> >>> nobody could help me? >>> >>> On Sun, Oct 11, 2009 at 5:06 PM, rahimeh khodadadi < >>> rahimeh.khodad...@gmail.com> wrote: >>> >>> Hi, >>>> >>>> after compling the postgresql --with-krb5 and setting up the >>>> krb5-server >>>> in centos, I configured the *postgresql.conf* as bellow: >>>> >>>> *krb_server_keyfile = '/var/kerberos/krb5kdc/kadm5.keytab'* >>>> *krb_srvname = 'POSTGRES' * # (Kerberos only) >>>> #krb_caseins_users = off >>>> >>> > I like to specify my krb_server_hostname explicitly here. > > > and >>>> >>>> my *pg_hba.conf* is : >>>> >>>> # "local" is for Unix domain socket connections only >>>> local all postgres trust >>>> # IPv4 local connections: >>>> host all *frank* 0.0.0.0/0 krb5 >>>> #host all all 127.0.0.1/32 trust >>>> # IPv6 local connections: >>>> host all all ::1/128 trust >>>> >>>> >>>> ,and kdc.conf >>>> >>>> kdcdefaults] >>>> v4_mode = nopreauth >>>> kdc_tcp_ports = 88 >>>> >>>> [realms] >>>> EXAMPLE.COM = { >>>> #master_key_type = des3-hmac-sha1 >>>> * acl_file = /var/kerberos/krb5kdc/kadm5.acl* >>>> dict_file = /usr/share/dict/words >>>> admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab >>>> >>> > If this is the same machine as PG, I'm not sure why you have the same file > here as for the keytab to keep the PG service principal in. My manpage for > kdc.conf says that admin_keytab specifies the keytab to be used by kadmin to > authenticate to the database, so really shouldn't be kept very distinct from > the keytab with the PG service principal. > > > supported_enctypes = des3-hmac-sha1:normal arcfour-hmac:normal >>>> des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal >>>> des-cbc-crc:v4 >>>> des-cbc-crc:afs3 >>>> } >>>> >>>> Then, I created the user frank as : >>>> >>>> kadmin.local >>>> Authenticating as principal rahimeh/ad...@example.com with password. >>>> kadmin.local: * ank frank* >>>> WARNING: no policy specified for fr...@example.com; defaulting to no >>>> policy >>>> Enter password for principal "fr...@example.com": >>>> Re-enter password for principal "fr...@example.com": >>>> >>>> *kadmin.local: ktadd -k /var/kerberos/krb5kdc/kadm5.keytab frank* >>>> Entry for principal frank with kvno 2, encryption type Triple DES cbc >>>> mode >>>> with HMAC/sha1 added to keytab >>>> WRFILE:/var/kerberos/krb5kdc/kadm5.keytab. >>>> Entry for principal frank with kvno 2, encryption type ArcFour with >>>> HMAC/md5 added to keytab WRFILE:/var/kerberos/krb5kdc/kadm5.keytab. >>>> Entry for principal frank with kvno 2, encryption type DES with >>>> HMAC/sha1 >>>> added to keytab WRFILE:/var/kerberos/krb5kdc/kadm5.keytab. >>>> Entry for principal frank with kvno 2, encryption type DES cbc mode with >>>> RSA-MD5 added to keytab WRFILE:/var/kerberos/krb5kdc/kadm5.keytab. >>>> >>> > But for PG you'll need a keytab with the service principal you've defined > to be POSTGRES/<hostname>@EXAMPLE.COM in it. > > > Finally, it gives error like: >>>> >>>> [r...@localhost ~]# *kinit frank* -t /var/kerberos/krb5kdc/kadm5.keytab >>>> Password for fr...@example.com: >>>> *kinit(v5): Password incorrect while getting initial credentials* >>>> >>> > I've never had much joy myself when getting tickets from a -t keytab, I > usually just kinit and enter a password instead. > > > or >>>> >>>> in cmd when I run this instruction the below error is shown. >>>> >>>> [r...@localhost bin]# ./psql -h 127.0.0.1 -U frank >>>> *psql: krb5_sendauth: Bad application version was sent (via sendauth)* >>>> >>> > To construct the service principal the library takes the the -h argument, > then gets the A record for it (if applicable), then gets the PTR record for > the A record to get the hostname for the service principal name (unless > you're using Windows I have found, in which case it just stops and takes the > originally given hostname if an A record exists). Just use a non-127 > address instead, it'll make things a lot easier to keep straight. For that > matter, /etc/hostname and /etc/resolv.conf would be good to see too because > of their importance here. > > HTH, > Geoff > > > --------- > Geoff Tolley > DBA/Systems Administrator > > YouGovPolimetrix > 285 Hamilton Avenue Suite 200 > Palo Alto, CA 94301 > geoff.tol...@yougov.com > http://www.yougov.com/ > > > > -- With Best Regards Miss.KHodadadi