2014-04-24 15 views
6

Tôi đã tự hỏi nếu có một cách để tạo keytab của riêng tôi trong java mà không cần đi đến kdc? Tôi tìm thấy mã tương tự như sau trong một thử nghiệm ApachDS:Tôi có thể tạo keytab của riêng mình lập trình bằng Java không?

Keytab keytab = Keytab.getInstance(); 
    KerberosTime timeStamp = new KerberosTime(KerberosUtils.UTC_DATE_FORMAT.parse("20070217235745Z")); 

    Map<EncryptionType, EncryptionKey> keys = KerberosKeyFactory 
     .getKerberosKeys(principalName, userPassword); 



    KeytabEntry keytabEntry = new KeytabEntry(
     principalName, 
     1L, 
     timeStamp, 
     (byte) 0, 
     keys.get(EncryptionType.DES_CBC_MD5)); 

    List<KeytabEntry> entry = Arrays.asList(keytabEntry); 

    keytab.setEntries(entry); 

    keytab.write(keytabFile); 

    return keytabFile; 

Tôi có thể một klist trên keytab mà tôi tạo ra:

VNO Loại ngày Principal biệt hiệu

0 des-cbc- md5 ssh/[email protected] 2007-02-17

Ngoài ra, nếu điều này là không thể, có cách nào để lập trình lấy keytab bằng ApacheDS hoặc bất kỳ thư viện java nào khác không?

Trả lời

1

Bạn phải có 3 thứ trong một keytab cho mỗi cửa hàng mã hóa trong KDC cho hiệu trưởng.

  1. Tên chính

  2. Giá trị quan trọng

  3. Phiên bản phím số

Đầu tiên hai bạn có thể tái tạo nếu bạn biết mật khẩu cho hiệu trưởng, tuy nhiên điều cuối cùng yêu cầu bạn liên hệ với KDC. Bạn cũng cần sử dụng mật khẩu để tạo tất cả các loại mã có trong KDC. Những gì bạn muốn làm là về lý thuyết có thể, nhưng trong thực tế nó rất khó để đạt được. Nếu bạn sử dụng knvo = 0 trong keytab, điều đó có nghĩa là "thử khóa này với bất kỳ số phiên bản nào" và điều đó có thể giúp bạn khắc phục hầu hết các sự cố.

Điều gì có thể đạt được với hiệu trưởng và mật khẩu là "khởi động" quy trình. Nếu bạn có thể lấy keytab có ít nhất một khóa làm việc, bạn nên có thể sử dụng keytab đó để "cập nhật" keytab với các phiên bản mới của tất cả các phím từ KDC sử dụng các tiện ích hệ thống như ktutil.

Lưu ý: des-cbc-md5 không nên được sử dụng làm mã hóa nếu có thể, có thể là do bạo lực bị nứt với nguồn tài nguyên phần cứng rất vừa trong những ngày này.

Thật không may, các giao thức kadmin để tải xuống keytabs khác nhau giữa các phiên bản của kerberos và tôi không biết liệu có bất kỳ ai trong số họ có API java hay không.

Các vấn đề liên quan