Merge keytabs
Background
Kantega SSO can be used with keytab files containing any number of Kerberos keys.
This is useful when:
You need to support more than one Active Directory domain, but the domains are not in a trust relationship
You need to support more than one hostname / SPN (some clients, like for instance Git clients, do not canonicalize CNAMES)
You want to support more than one encryption type
Keys from individual keytab files must be merged into a single keytab file before they can be used.
If there is a trust relationship between your domains, please read about Cross-domain trust instead.
Merging keys using Kantega SSO
From version 2.8.0, Kantega SSO has built-in support for merging keytab files.
All you need to do is to select "Add to existing keytab" when uploading keytab files.
The functionality of merging keytabs is since version 2.8.0 built into Kantega SSO. Therefore the guide below is only here for historical purposes. The page is relevant if you need to merge keytab files for other purposes.
Merge keytab files using external tools
If you need to merge keytab files for use outside Kantega SSO, here are two ways of doing it:
Merge using ktpass with the /in parameter
In the example below, we want to enable Kerberos SSO for users in the two domains example.local and kerbauth.com
After creating the first keytab, the keytab file is transferred to the other domain controller where a new key is produced and added to the keytab.
The output is a new keytab file with keys from both domains.
In both domains, we need to create a separate user account (mapuser) for mapping the SPN.
When adding a principal to the Keytab, we use the first keytab as an -in argument creating a new keytab with both keys.
Step 1: Create the keytab for the domain to be merged (the second/third domain)
First, create a keytab file in the KERBAUTH.COM domain.
ktpass /out c:\issues-KERBAUTH.keytab /mapuser KERBAUTH\svc-jira-sso /princ HTTP/issues.example.com@KERBAUTH.COM /pass * /ptype KRB5_NT_PRINCIPAL |
Step 2: Adding a principal to the keytab
After transferring the keytab file from a domain controller in the first domain, the ktpass command is run with the keytab file from the other domain as an -in parameter in the second domain. The result is a new keytab file with both keys.
ktpass /out EXAMPLE-merged-with-KERBAUTH.keytab /mapuser EXAMPLE\svc-jira-sso /princ HTTP/issues.example.com@EXAMPLE.LOCAL /pass * /ptype KRB5_NT_PRINCIPAL /in c:\issues-KERBAUTH.keytab |
Merge using ktutil Linux/Unix command-line tool
ktutil is a Linux command most commonly found in the krb5-workstation package. The advantage of using ktutil is that instead of adding SPN to an existing keytab file, it can be used to merge two Keytabs without increasing the version number of the SPN.
It also supports updating the Keytab file with multiple versions of an SPN, which can be useful in cases where multiple versions of the same SPN must coexist, like when changing encryption types.
Merge two or more keys to one keytab file
In the below example, we have two keys: issues.example.com.keytab and issues-KERBAUTH.keytab
We use ktutil to read both keys (read_kt)
We output the keys to a single file (write_kt)
The output is one merged file: merged_keytab_file.keytab