Criação de um Nome do Principal Serviço Kerberos e um Arquivo keytab
Esta tarefa é necessária para processar pedidos de autenticação do Kerberos ou SPNEGO web para WebSphere Application Server. É possível criar um nome do principal do serviço Kerberos e um arquivo keytab usando os centros de distribuição de chaves (KDCs) dos sistemas operacionais Microsoft Windows, IBM i, Linux, Solaris, Massachusetts Institute of Technology (MIT) e z/OS.
Sobre Esta Tarefa
Criação de um nome do principal serviço Kerberos e um arquivo keytab usando o KDC do Microsoft Windows:
Essa tarefa é realizada na máquina controladora de domínio do diretório ativo. Conclua as seguintes etapas para assegurar que o Windows 2003 Server que está executando o controlador de domínio do Active Directory seja configurado corretamente para o centro de distribuição de chaves (KDC) associado.
- Crie uma conta de usuário no Microsoft Active Directory para o WebSphere Application
Server.
Clique em Iniciar->Programas->Ferramentas Administrativas->Computadores e Usuários do Active Directory.
Utilize o nome do WebSphere Application Server. Por exemplo, se o servidor de aplicativos que você está executando na máquina do WebSphere Application Server for chamado myappserver.austin.ibm.com, crie um novo nome em um diretório ativo chamado myappserver.
Certifique-se de não possuir o nome do computador myappserver em Computadores e Controladores de Domínio. Se você já tiver um computador chamado myappserver, crie um nome de conta de usuário diferente.- Clique em Iniciar->Programas->Ferramentas Administrativas->Computadores e Usuários do Active Directory->Computadores.
- Clique em Programas -> Ferramentas Administrativas -> Computadores e Usuários do Active Directory -> Controladores de Domínio.
- Utilize o comando setspn para mapear o service principal name do Kerberos, <service name>/<fully qualified host name>, para uma conta do usuário da Microsoft.
O nome do serviço para autenticação da Web SPNEGO deve ser HTTP. No entanto, o nome do serviço para autenticação do Kerberos pode ser qualquer cadeia permitida pelo KDC.
Um exemplo de uso do comando setspn para autenticação da Web SPNEGO é o seguinte:
C:\Program Files\Support Tools> setspn -A HTTP/myappserver.austin.ibm.com myappserver
Nota: O nome do host deve ser um nome completo.Importante: Certifique-se de não possuir o mesmo mapeamento do SPNs (Service Principle Names) para mais de uma conta de usuário do Microsoft. Se você mapear o mesmo SPN para mais de uma conta de usuário, o cliente do navegador da Web pode enviar um token NTLM (NT LAN Manager) em vez de um token SPNEGO para o WebSphere Application Server. - Crie o arquivo keytab Kerberos e disponibilize-o no WebSphere Application
Server. Utilize a ferramenta ktpass do kit de ferramentas do
Windows
Server para criar o arquivo keytab do Kerberos (krb5.keytab) para o SPN. Nota: Um arquivo keytab Kerberos contém uma lista de chaves que são semelhantes às senhas de usuário. É importante para os hosts protegerem seus arquivos keytab Kerberos armazenando-os no disco local.
Utilize a ferramenta ktpass a partir do kit de ferramentas Windows Server para criar o arquivo keytab Kerberos para o SPN (Service Principal Name). Use a versão mais recente da ferramenta ktpass que corresponde ao nível do servidor Windows que está sendo usado. Por exemplo, use a versão da ferramenta Windows 2003 para um servidor Windows 2003.
Para determinar os valores de parâmetro apropriados para a ferramenta ktpass, execute o comando ktpass -? a partir da linha de comandos. Este comando lista se a ferramenta ktpass, que corresponde ao sistema operacional específico, usa o valor de parâmetro -crypto RC4-HMAC ou -crypto RC4-HMAC-NT. Para evitar mensagens de aviso do kit de ferramentas, você deve especificar o valor de parâmetro -ptype KRB5_NT_PRINCIPAL.
A versão do servidor Windows 2003 da ferramenta ktpass suporta o tipo de criptografia, RC4-HMAC, e o padrão de criptografia de dados único (DES). Para obter mais informações sobre a ferramenta ktpass, consulte Referência Técnica do Windows 2003 - Visão Geral do Ktpass.
O código a seguir mostra as funções que estão disponíveis ao inserir o comando ktpass -? na linha de comandos. Estas informações podem ser diferentes, dependendo da versão do kit de ferramentas que está sendo usada.C:\Program Files\Support Tools>ktpass -? Opções da linha de comandos: ---------------------args mais úteis [- /] out : Keytab a ser produzido [- /] princ : Nome do Proprietário (user@REALM) [- /] pass : senha a ser utilizada utilizar "*" para solicitar a senha. [- +] rndPass : ... ou utilize +rndPass para gerar uma senha aleatória [- /] minPass : comprimento mínimo para senha aleatória (def:15) [- /] maxPass : comprimento máximo para senha aleatória (def:256) ---------------------itens menos úteis [- /] mapuser : map propr (acima) para esta conta do usuário (padrão: não) [- /] mapOp : como configurar o atributo de mapeamento (padrão: incluí-lo) [- /] mapOp : é um de: [- /] mapOp : add : incluir valor (padrão) [- /] mapOp : set : configurar valor [- +] DesOnly : Configure a conta para a criptografia des-only (default:don't) [- /] in : Keytab para leitura/assimilação ---------------------opções para geração de chave [- /] crypto : Cryptosystem a ser utilizado [- /] crypto : é um de: [- /] crypto : DES-CBC-CRC : para compatibilidade [- /] crypto : DES-CBC-MD5 : para compatibilidade [- /] crypto : RC4-HMAC-NT : criptografia padrão de 128 bits [- /] ptype : tipo do proprietário em questão [- /] ptype : é um de: [- /] ptype : KRB5_NT_PRINCIPAL : O ptype geral -- recomendado [- /] ptype : KRB5_NT_SRV_INST : instância de serviço do usuário [- /] ptype : KRB5_NT_SRV_HST : instância de serviço do host [- /] kvno : Substituir Número de Versão de Chave Padrão: consultar DC para kvno. Utilizar /kvno 1 para Win2K compat. [- +] Resposta: +Answer responde SIM para os prompts. -Answer responde Nº [- /] Destino : Qual DC utiliza. Padrão:detect ---------------------opções para atributos de confiança (Windows Server 2003 Sp1 Only [- /] MitRealmName : Região MIT na qual ativar confiança RC4. [- /] TrustEncryp : Criptografia Confiável a ser utilizada; DES é o padrão [- /] TrustEncryp : Uma destas: [- /] TrustEncryp : RC4 : Região de Confiança RC4 (padrão) [- /] TrustEncryp : DES : Voltar para DES
Importante: Não utilize o comutador -pass no comando ktpass para reconfigurar uma senha para uma conta de servidor Microsoft Windows.Consulte Referência Técnica do Windows 2003 - Visão Geral do Ktpass para obter mais informações.Dependendo do tipo de criptografia, use a ferramenta ktpass de uma das seguintes maneiras para criar o arquivo keytab do Kerberos. A seção a seguir mostra os diferentes tipos de criptografia que são usados pela ferramenta ktpass. É importante executar o comando ktpass -? para determinar qual valor de parâmetro -crypto é esperado pelo kit de ferramentas específico em seu ambiente do Microsoft Windows.- Tipo de criptografia DES único:A partir de um prompt de comandos, execute o comando ktpass:
ktpass -out c:\temp\myappserver.keytab -princ HTTP/myappserver.austin.ibm.com@WSSEC.AUSTIN.IBM.COM -mapUser myappserv -mapOp set -pass was1edu -crypto DES-CBC-MD5 -pType KRB5_NT_PRINCIPAL +DesOnly
Tabela 1. Utilizando o ktpass para um Tipo de Criptografia DES Único. Esta tabela descreve como utilizar ktpass para um único tipo de criptografia DES.
Opção Explicação -out c:\temp\myappserver.keytab A chave é gravada para um arquivo de saída. -princ HTTP/myappserver.austin.ibm.com@WSSEC.AUSTIN.IBM.COM A concatenação do nome de logon do usuário e a região devem estar em maiúscula. -mapUser A chave é mapeada para o usuário, myappserver. -mapOp Essa opção configura o mapeamento. -pass was1edu Esta opção é a senha para o ID do usuário. -crypto DES-CBC-MD5 Esta opção utiliza o tipo de criptografia DES único. -pType KRB5_NT_PRINCIPAL Esta opção especifica o valor principal KRB5_NT_PRINCIPAL. Especifique esta opção para evitar mensagens de aviso do kit de ferramentas. +DesOnly Esta opção gera apenas criptografias DES. - Tipo de criptografia RC4-HMAC:Importante: A criptografia RC4-HMAC é suportada apenas ao utilizar um Windows 2003 Server como KDC.A partir de um prompt de comandos, execute o comando ktpass.
ktpass -out c:\temp\myappserver.keytab -princ HTTP/myappserver.austin.ibm.com@WSSEC.AUSTIN.IBM.COM -mapUser myappserver -mapOp set –pass was1edu -crypto RC4-HMAC -pType KRB5_NT_PRINCIPAL
Tabela 2. Utilizando o ktpass para o tipo de criptografia RC4-HMAC Opção Explicação -out c:\temp\myappserver.keytab A chave é gravada para um arquivo de saída. -princ HTTP/myappserver.austin.ibm.com@WSSEC.AUSTIN.IBM.COM A concatenação do nome de logon do usuário e a região devem estar em maiúscula. -mapUser A chave é mapeada para o usuário, myappserver. -mapOp Essa opção configura o mapeamento. -pass was1edu Esta opção é a senha para o ID do usuário. -crypto RC4-HMAC Essa opção escolhe o tipo de criptografia RC4-HMAC. -pType KRB5_NT_PRINCIPAL Esta opção especifica o valor principal KRB5_NT_PRINCIPAL. Especifique esta opção para evitar mensagens de aviso do kit de ferramentas. - Para o tipo de criptografia RC4-HMAC-NTA partir de um prompt de comandos, execute o comando ktpass.
ktpass -out c:\temp\myappserver.keytab -princ HTTP/myappserver.austin.ibm.com@WSSEC.AUSTIN.IBM.COM -mapUser myappserver -mapOp set -pass was1edu -crypto RC4-HMAC-NT -pType KRB5_NT_PRINCIPAL
O arquivo keytab do Kerberos é criado para uso com SPNEGO.Tabela 3. Utilizando o tipo de criptografia ktpass para RC4-HMAC-NT Opção Explicação -out c:\temp\myappserver.keytab A chave é gravada para um arquivo de saída. -princ HTTP/myappserver.austin.ibm.com@WSSEC.AUSTIN.IBM.COM A concatenação do nome de logon do usuário e a região devem estar em maiúscula. -mapUser A chave é mapeada para o usuário, myappserver. -mapOp Essa opção configura o mapeamento. -pass was1edu Esta opção é a senha para o ID do usuário. -crypto RC4-HMAC-NT Esta opção escolhe o tipo de criptografia RC4-HMAC-NT. -pType KRB5_NT_PRINCIPAL Esta opção especifica o valor principal KRB5_NT_PRINCIPAL. Especifique esta opção para evitar mensagens de aviso do kit de ferramentas.
- Tipo de criptografia DES único:
Criação de um nome do principal serviço Kerberos e de um arquivo keytab usando os KDCs iSeries, Linux, Solaris e MIT:
Consulte seus documentos de implementação do Kerberos sobre os comandos kadmin, kadmin.local addprinc e ktadd para obter informações mais detalhadas.
Essa tarefa é realizada em uma máquina Linux, Solaris ou KDC MIT.
- Crie um diretor de serviço Kerberos para autenticação do
Kerberos, por exemplo:
WAS/testmach.austin.ibm.com kadmin.local: addprinc WAS/testmach.austin.ibm.com
- Inclua o diretor de serviço Kerberos recém criado,
WAS/testmach.austin.ibm.com para um arquivo padrão
krb5.keytab, por exemplo:
kadmin.local: ktadd WAS/testmach.austin.ibm.com
Criação de um nome do principal serviço Kerberos e de um arquivo keytab usando o KDC z/OS:
Antes da autenticação da Web e autenticação do Kerberos do Simple and Protected GSS-API Negotiation (SPNEGO) poder ser utilizada, o administrador do WebSphere Application Server primeiro deve criar um arquivo keytab de Kerberos no host que está executando o WebSphere Application Server.
Para criar um SPN, execute o seguinte procedimento:
- O ID Kerberos (KERBNAME) deve ter o formato <service>/<fully qualified system name>.
- O exemplo a seguir cria SPN do Kerberos para o SPNEGO Web, HTTP/host1.pok.ibm.com:
ALTUSER ASCR1 KERB(KERBNAME(HTTP/host1.pok.ibm.com))
Evitar Problemas: É necessário garantir que a lista de tipos de criptografia suportados especificada no comando ALTUSER esteja consistente com a especificada no arquivo de configuração do Kerberos krb5.conf. Por exemplo, se o arquivo de configuração krb5.conf especificar que apenas aes256-cts-hmac-sha1-96 é suportado, o operando ENCRYPT deverá ter todos os tipos de criptografia configurados como não suportados, exceto para AES256.gotcha
- Crie a chave do Kerberos para esse usuário. Para criar essa chave, uma senha deve ser
associada a esse ID. Não utilize esse ID para efetuar logon no
sistema. Insira as duas linhas a seguir sempre que uma nova chave do Kerberos for necessária.Nota: O administrador do WebSphere ou KDC deve saber essa senha para criar uma entrada no arquivo keytab.
ALTUSER ASCR1 PASSWORD(was1krb) NOEXPIRED ALTUSER ASCR1 NOPASSWORD
- Verifique se esse usuário tem um segmento de Kerberos válido e
uma chave, por exemplo:
LISTUSER ASCR1 KERB NORACF USER=ASCR1 KERB INFORMATION ---------------- KERBNAME= HTTP/host1.pok.ibm.com KEY VERSION= 001 KEY ENCRYPTION TYPE= DES NODES3 NODESD
Para criar um arquivo keytab Kerberos (krb5.keytab), utilize o comando ktab do Kerberos Java™, <$WAS_HOME>/java/bin/ktab, fazendo o seguinte:
- Em uma linha de comandos, digite o comando ktab –help para obter o
uso adequado desse comando. Por exemplo:
(host1)CTC03:/PYRSA1/usr/lpp/zWebSphere/V7R1/java/J5.0/bin(189):>ktab -help Uso: java com.ibm.security.krb5.internal.tools.Ktab [opções] Opções disponíveis: -l lista o nome e as entradas do keytab -a <principal_name> [senha] inclui uma entrada no keytab -d <principal_name> exclui uma entrada do keytab -k <keytab_name> especifique o caminho e o nome do keytab com o prefixo FILE: -m <source_keytab_name> <destination_keytab_name> especifique a mesclagem do nome do arquivo keytab de origem e do nome do arquivo keytab de destino
- De uma linha de comandos, utilize o comando ktab
para incluir o SPN em um arquivo keytab padrão, por exemplo:
(host1)CTC03:/PYRSA1/usr/lpp/zWebSphere/V7R1/java/J5.0/bin(201):>ktab -a HTTP/host1.pok.ibm.com@LSREALM.POK.IBM.COM ot56prod Feito! Chave de serviço do HTTP/host1.pok.ibm.com@LSREALM.POK.IBM.COM do proprietário salvo
- Verifique se o SPN correto está no arquivo keytab padrão, por
exemplo:
(host1)CTC03:/PYRSA1/usr/lpp/zWebSphere/V7R1/java/J5.0/bin(202):>ktab 1 entrada no keytab, nome: /etc/skrb/krb5.keytab KVNO Principal ---- --------- 1 HTTP/host1.pok.ibm.com@LSREALM.POK.IBM.COM
ftp> bin
ftp> put c:\temp\KRB5_NT_SEV_HST\krb5.keytab
wsadmin>$AdminTask help validateKrbConfig
No entanto, isto não se aplica se você tiver o JDK 1.6 com SR3 instalado.
Resultados
Foi criado um nome do principal serviço Kerberos e um arquivo keytab no KDC usado pelo WebSphere Application Server para processar solicitações de autenticação SPNEGO e/ou do Kerberos.