在JDK8中,可以像这样创建一个keytab文件:
static File a(String spn, String password) throws Exception {
final File f = File.createTempFile("tmp_", ".ktab");
final sun.security.krb5.internal.ktab.KeyTab ktab = sun.security.krb5.internal.ktab.KeyTab.create(f.getAbsolutePath());
final sun.security.krb5.PrincipalName p = new sun.security.krb5.PrincipalName(spn, sun.security.krb5.PrincipalName.KRB_NT_SRV_HST);
ktab.addEntry(p, password.toCharArray(), 1, true);
ktab.save();
return f;
}
在JDK9中生成
error: package sun.security.krb5 is not visible
有
javax.security.auth.kerberos.KeyTab
但it似乎缺少ktab和密码功能。
在Java9中创建keytab文件的最佳方法是什么?
使用JDK8的1.5M sun.security.jar可以正常工作但不理想。
使用ProcessBuilder中的ktab更好但仍然很难看,并且ktab不包含在JRE / JDK(8或9)中。