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ビット以上を提供するように強制する方法がわかりません。