Pivotal Knowledge Base

フォローする

RHEL 7.x で生成されたkeytabファイルを、RHEL 6.xで使用した場合にkinitが失敗する

環境

製品 バージョン
Pivotal HD 3.0.x
OS RHEL 6.x and 7.x

事象

Pivotal HD 3.0.xクラスタでセキュリティ認証を有効化しようとすると、kinitが「Bad encryption type while getting initial credentials」といったエラーを出して失敗する。

エラーメッセージ:

[root@admin temp]# kinit -kt hdfs.service.keytab hdfs/hdm1.hadoop.local@PIVOTAL.IO
kinit: Bad encryption type while getting initial credentials

原因

RHEL 7.xホストで稼働しているKDCサーバーは、keytabファイル内の暗号化種別を異なった形で認識している。

根本原因解析

RHEL 7.xのkeytabファイルの内容の例を以下に示す。

Keytab name: FILE:hdfs.service.keytab
KVNO Timestamp Principal
---- ------------------- ------------------------------------------------------
2 11/18/2015 14:43:41 hdfs/hdm1.hadoop.local@PIVOTAL.IO (aes256-cts-hmac-sha1-96)
2 11/18/2015 14:43:41 hdfs/hdm1.hadoop.local@PIVOTAL.IO (aes128-cts-hmac-sha1-96)
2 11/18/2015 14:43:41 hdfs/hdm1.hadoop.local@PIVOTAL.IO (des3-cbc-sha1)
2 11/18/2015 14:43:41 hdfs/hdm1.hadoop.local@PIVOTAL.IO (arcfour-hmac)
2 11/18/2015 14:43:41 hdfs/hdm1.hadoop.local@PIVOTAL.IO (camellia256-cts-cmac)
2 11/18/2015 14:43:41 hdfs/hdm1.hadoop.local@PIVOTAL.IO (camellia128-cts-cmac)
2 11/18/2015 14:43:41 hdfs/hdm1.hadoop.local@PIVOTAL.IO (des-hmac-sha1)
2 11/18/2015 14:43:41 hdfs/hdm1.hadoop.local@PIVOTAL.IO (des-cbc-md5)

次にRHEL 6.xの同じkeytabファイルの内容の例を示す。

Keytab name: FILE:hdfs.service.keytab
KVNO Timestamp Principal
---- ----------------- --------------------------------------------------------
2 11/18/15 01:43:41 hdfs/hdm1.hadoop.local@PIVOTAL.IO (aes256-cts-hmac-sha1-96)
2 11/18/15 01:43:41 hdfs/hdm1.hadoop.local@PIVOTAL.IO (aes128-cts-hmac-sha1-96)
2 11/18/15 01:43:41 hdfs/hdm1.hadoop.local@PIVOTAL.IO (des3-cbc-sha1)
2 11/18/15 01:43:41 hdfs/hdm1.hadoop.local@PIVOTAL.IO (arcfour-hmac)
2 11/18/15 01:43:41 hdfs/hdm1.hadoop.local@PIVOTAL.IO (etype 26)
2 11/18/15 01:43:41 hdfs/hdm1.hadoop.local@PIVOTAL.IO (etype 25)
2 11/18/15 01:43:41 hdfs/hdm1.hadoop.local@PIVOTAL.IO (des-hmac-sha1)
2 11/18/15 01:43:41 hdfs/hdm1.hadoop.local@PIVOTAL.IO (des-cbc-md5)

上記赤文字の行における暗号化種別名が、RHEL 6.x と 7.xの両システムで異なっている事が分かる。これにより、RHEL 6.xホストからのkinit要求の際に、KDCサーバーにおいて上記2つの暗号化方式の承認に失敗する。

解決策

RHEL 6.xシステム上のKDCサーバーを設定し、もう一度keytabファイルを生成する。

もしRHEL 7.xシステムのKDCサーバーを使用しなければならない場合は、一つの回避策として、クライアント側(今回の場合はRHEL 6.xシステム)のKerberos上のkeytabファイルから、上記2つの暗号化種別名が競合するエントリーを削除することがあげられる。

以下の手順でkeytabファイルのエントリーを削除できる。

1. keytabファイル内の削除すべきエントリーの順番を確認する。上記の例だと5番目と6番目である。

2. 以下の様に「ktutil」ツールを使用して削除する。

注意:降順で削除しなければならない。今回の例では6番目から削除する。

[root@admin temp]# ktutil
ktutil: rkt /root/temp/hdfs.service.keytab
ktutil: delent 6
ktutil: delent 5
ktutil: wkt /root/temp/hdfs.service.keytab.new
ktutil: quit

3. 「klist」を実行し、エントリーの削除が成功している事を確認する。

[root@admin temp]# klist -ekt hdfs.service.keytab.new
Keytab name: FILE:hdfs.service.keytab.new
KVNO Timestamp Principal
---- ----------------- --------------------------------------------------------
2 11/18/15 01:51:52 hdfs/hdm1.hadoop.local@PIVOTAL.IO (aes256-cts-hmac-sha1-96)
2 11/18/15 01:51:52 hdfs/hdm1.hadoop.local@PIVOTAL.IO (aes128-cts-hmac-sha1-96)
2 11/18/15 01:51:52 hdfs/hdm1.hadoop.local@PIVOTAL.IO (des3-cbc-sha1)
2 11/18/15 01:51:52 hdfs/hdm1.hadoop.local@PIVOTAL.IO (arcfour-hmac)
2 11/18/15 01:51:52 hdfs/hdm1.hadoop.local@PIVOTAL.IO (des-hmac-sha1)
2 11/18/15 01:51:52 hdfs/hdm1.hadoop.local@PIVOTAL.IO (des-cbc-md5)

4. 新しいkeytabファイルを使用して「kinit」を実行し、Kerberosチケットを取得する。

追加情報

Pivotal HD Documentationに、より詳しい情報とkeytabファイルの認証方法やkinitを使用したKerberosチケットの取得方法が記載されている。

コメント

Powered by Zendesk