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비트 이상을 제공하도록 강제하는 방법을 모르겠습니다.