kerberos preauth pkinit 초기화 실패: pkinit 지원을 위해 영역이 올바르게 구성되지 않았습니다.

kerberos preauth pkinit 초기화 실패: pkinit 지원을 위해 영역이 올바르게 구성되지 않았습니다.

Debian wheezy에 Kerberos를 성공적으로 설치했으며 kinit에서 Kerberos 티켓을 사용하여 서비스 인증(Apache, ssh)을 수행할 수 있습니다.

비밀번호 대신 kinit(pkinit) 인증서를 사용하고 싶습니다.

설명된 단계를 따랐습니다.여기.

다음 명령을 사용하여 인증하려고 합니다.

kinit -C FILE:client.pem,client.key [email protected]

반환된 비밀번호가 올바르지 않습니다.

나는 문제가 클라이언트가 아니라 서버에 있다고 확신합니다. 클라이언트는 pkinit를 사용할 때 Wireshark에서 인증서를 보냅니다. kdc는 AS-REP를 제공하지 않기 때문에 클라이언트는 일반 "비밀번호가 올바르지 않습니다"라는 오류 메시지를 받을 수 있습니다. 이는 티켓이 입력되지 않았기 때문에 티켓을 해독할 수 없다는 의미입니다.

나는 이 서버의 /etc/krb5.conf 구성으로 끝났습니다.

[realms]
 MAYTACAPAC.INC = { 
  kdc             = kerberos.maytacapac.inc
  admin_server    = kerberos.maytacapac.inc
  default_domain  = maytacapac.inc
  detabase_module = openldap_ldapconf

  kdc_tcp_ports   = 88
  allow_pkinit    = yes 
  pkinit_identity = FILE:/root/pkinit/kdc.pem,/root/pkinit_wiki/kdc.key
  pkinit_anchors  = FILE:/root/pkinit/ca.pem
  module          = pkinit:/usr/lib/x86_64-linux-gnu/krb5/plugins/preauth/pkinit.so
} 

그런 다음 krb5-kdc 서비스를 시작했는데 로그 파일에 다음 메시지가 있습니다.

# systemctl -l status krb5-kdc
● krb5-kdc.service - Kerberos 5 Key Distribution Center
Loaded: loaded (/lib/systemd/system/krb5-kdc.service; enabled)
Drop-In: /lib/systemd/system/krb5-kdc.service.d
       └─slapd-before-kdc.conf
Active: active (running) since Fri 2016-04-29 14:59:57 CEST; 1min 3s ago
Process: 1042 ExecStart=/usr/sbin/krb5kdc -P /var/run/krb5-kdc.pid $DAEMON_ARGS (code=exited, status=0/SUCCESS)
Main PID: 1043 (krb5kdc)
CGroup: /system.slice/krb5-kdc.service
       └─1043 /usr/sbin/krb5kdc -P /var/run/krb5-kdc.pid
Apr 29 14:59:57 kerberos krb5kdc[1042]: preauth pkinit failed to initialize: No realms configured correctly for pkinit support
Apr 29 14:59:57 kerberos krb5kdc[1042]: setting up network...
Apr 29 14:59:57 kerberos krb5kdc[1042]: listening on fd 8: udp 0.0.0.0.88 (pktinfo)
Apr 29 14:59:57 kerberos krb5kdc[1043]: commencing operation

이는 이쪽에 문제가 있음을 나타냅니다.

나는 성공하지 못한 채 한동안이 오류를 검색해 왔습니다. kinit은 비밀번호 확인에 여전히 잘 작동합니다.

고쳐 쓰다

인증서를 기본 디렉터리인 /var/lib/krb5kdc에 배치했습니다. 서버를 다시 시작하면 설명된 오류가 로그에서 사라집니다.

그러나 이제 클라이언트 서버에서 TGT를 가져오려고 하면 오류가 발생합니다. 서버 로그에 다음이 표시됩니다.

preauth (pkinit) verify failure: Key parameter not accepted

클라이언트 측에서 다음과 같은 오류 메시지가 나타납니다.

kinit: krb5_get_init_creds: PREAUTH_FAILED

Wireshark는 as-req에 대한 응답으로 이 오류를 표시합니다.

KDC_ERR_KEY_TOO_WEAK

client/etc/krb5.conf에 pkinit_dh_min_bits = 1024를 설정했습니다. 지금 일하고 있고 티켓을 받았어요\o/

그러나 dh 교환을 위해 최소 2048비트 길이의 키를 사용하는 것을 선호했지만 지금은 사용할 수 없습니다(동일한 마지막 오류 발생).

클라이언트가 1024비트 dh 매개변수를 사용하려는데 서버가 연결을 거부하고 닫는 것 같습니다. 클라이언트 /etc/krb5.conf의 pkinit_dh_min_bits = 2048이 효과가 없기 때문에 클라이언트가 dh 매개변수의 2048비트 이상을 제공하도록 강제하는 방법을 모르겠습니다.

관련 정보