Capítulo 18. Criptografia da Senha Keystore num Conector Tomcat


O JBoss Web está baseado no Apache Tomcat.
O SSL com o Tomcat requer um conector de segurança. Isto significa que a senha keystore/truststore não pode ser passada como um atributo no elemento conector do arquivo server.xml do Tomcat.
Recomenda-se um trabalho de entendimento do JaasSecurityDomain que suporta os keystores, truststores e senha baseados na criptografia.
Refira-se ao Capítulo 13, Protocolo de Senha Remota de Segurança e Capítulo 17, Criptografia das Senhas de Fonte de Dados para informações de suporte e procedimentos relacionados.

Procedimento 18.1. Criptografia da Senha Keystore do Recipiente Tomcat

  1. Anexe o elemento conector

    Adicione o elemento conector ao server.xml no $JBOSS_HOME/server/$PROFILE/deploy/jbossweb.sar
    <!-- SSL/TLS Connector with encrypted keystore password configuration -->
    <Connector port="8443" address="${jboss.bind.address}"
    maxThreads="100" minSpareThreads="5" maxSpareThreads="15"
    scheme="https" secure="true" clientAuth="true"
    sslProtocol="TLS"
    securityDomain="java:/jaas/encrypt-keystore-password"
    SSLImplementation="org.jboss.net.ssl.JBossImplementation" >
    </Connector>
    Copy to Clipboard Toggle word wrap
    .
  2. Configuração do JaasSecurityDomain MBean

    Consulte o JaasSecurityDomain MBean no arquivo $JBOSS_HOME/server/$PROFILE/deploy/security-service.xml.
    Crie o arquivo caso ele ainda não exista. A amostra do código descreve o conteúdo solicitado quando o arquivo não existir. Caso você já tenha um security-service.xml, anexe o bloqueio do elemento <mbean> ao arquivo.
    <server>
    <mbean code="org.jboss.security.plugins.JaasSecurityDomain"
    name="jboss.security:service=PBESecurityDomain">
    <constructor>
    <arg type="java.lang.String" value="encrypt-keystore-password"></arg>
    </constructor>
    <attribute name="KeyStoreURL">resource:localhost.keystore</attribute>
    <attribute name="KeyStorePass">{CLASS}org.jboss.security.plugins.FilePassword:${jboss.server.home.dir}/conf/keystore.password</attribute>
    <attribute name="Salt">welcometojboss</attribute>
    <attribute name="IterationCount">13</attribute>
    </mbean>
    </server>
    Copy to Clipboard Toggle word wrap
    O Salt e IterationCount são variáveis que definem a intensidade de sua senha criptografada, de forma que você pode variar isto da maneira que é apresentada. Certifique-se de gravar novos valores e usá-los quando gerando a senha criptografada.

    Nota

    O Salt deve possuir pelo menos oito caracteres.
  3. Geração de uma senha criptografada

    A configuração <mbean> especifica que o keystore está armazenado no arquivo jboss-as/server/$PROFILE/conf/localhost.keystore. O <mbean> também especifica que o arquivo de senha criptografado está armazenado no arquivo jboss-as/server/$PROFILE/conf/keystore.password.
    Você deve criar um arquivo localhost.keystore.
    Execute o seguinte comando no diretório jboss-as/server/$PROFILE/conf.
    [conf]$ java -cp $JBOSS_HOME/lib/jbosssx.jar \org.jboss.security.plugins.FilePassword welcometojboss 13 unit-tests-server keystore.password
    Copy to Clipboard Toggle word wrap
    Este comando usa um jbosssx.jar como classpath (-cp) e o puglin de segurança FilePassword para criação de um arquivo keystore.password com a senha configurada para unit-tests-server. Você deverá fornecer os parâmetros salt e interation configurados nos elementos <mbean> <attribute> do JaasSecurityDomain, com o objetivo de certificar-se de que tem permissão para criar um arquivo keystore.password.
    Você pode executar este comando no diretório /conf, de forma que o arquivo keystore.password é salvo a este diretório.
  4. Atualização do MBean do serviço Tomcat

    Navegue ao $JBOSS_HOME/server/$PROFILE/deploy/jbossweb.sar/META-INF .
    Abra um jboss-service.xml e anexe a seguinte tag <depends> no final do arquivo. A adição da tag <depends> especifica que o Tomcat deve iniciar após o jboss.security:service=PBESecurityDomain .
    <depends>jboss.security:service=PBESecurityDomain</depends>
    </mbean>
    </server>
    Copy to Clipboard Toggle word wrap

Exemplo 18.1. Definição do JaasSecurityDomain para pkcs12 keystores

Segundo o Procedimento 18.1, “Criptografia da Senha Keystore do Recipiente Tomcat”, os recipientes pkcs12 keystore referenciados pelo Tomcat Connector parecem-se com o seguinte:
<mbean code="org.jboss.security.plugins.JaasSecurityDomain"
name="jboss.security:service=PBESecurityDomain">
<constructor>
<arg type="java.lang.String" value="encrypt-keystore-password"></arg>
</constructor>
<attribute name="KeyStoreType">pkcs12</attribute>
<attribute name="KeyStoreURL">resource:localhost.keystore</attribute>
<attribute name="KeyStorePass">{CLASS}org.jboss.security.plugins.FilePassword:${jboss.server.home.dir}/conf/keystore.password</attribute>
<attribute name="Salt">welcometojboss</attribute>
<attribute name="IterationCount">13</attribute>
</mbean>
Copy to Clipboard Toggle word wrap

18.1. Caso de Uso de Segurança Média

Um usuário não deseja criptografar a senha keystore, mas deseja externalizá-la (fora do server.xml) ou deseja fazer uso de um JaasSecurityDomain pré-definido.

Procedimento 18.2. JaasSecurityDomain Pré-definido

  1. Atualize o jboss-service.xml para adicionar um conector

    Navegue ao $JBOSS_HOME/server/ $PROFILE /deploy/jbossweb.sar/META-INF e adicione o bloqueio de código ao arquivo jboss-service.xml.
    <mbean code="org.jboss.security.plugins.JaasSecurityDomain"
    name="jboss.security:service=SecurityDomain">
    <constructor>
    <arg type="java.lang.String" value="jbosstest-ssl"></arg>
    </constructor>
    <attribute name="KeyStoreURL">resource:localhost.keystore</attribute>
    <attribute name="KeyStorePass">unit-tests-server</attribute>
    </mbean>
    
    Copy to Clipboard Toggle word wrap
  2. Adicione uma tag <depends> ao serviço Tomcat

    Navegue ao $JBOSS_HOME/server/$PROFILE/deploy/jbossweb.sar .
    Abra o server.xml e anexe o seguinte elemento <depends> no final do arquivo:
    <depends>jboss.security:service=SecurityDomain</depends>
    </mbean>
    </server>
    
    Copy to Clipboard Toggle word wrap
  3. Defina o JaasSecurityDomain MBean num arquivo *-service.xml

    Por exemplo, o security-service.xml no diretório implantar:
    <mbean code="org.jboss.security.plugins.JaasSecurityDomain"
    name="jboss.security:service=SecurityDomain">
    <constructor>
    <arg type="java.lang.String" value="jbosstest-ssl"></arg>
    </constructor>
    <attribute name="KeyStoreURL">resource:localhost.keystore</attribute>
    <attribute name="KeyStorePass">unit-tests-server</attribute>
    </mbean>
    
    Copy to Clipboard Toggle word wrap

Nota

Caso você encontre este erro, lembre-se que a id do usuário deve possuir permissão de gravação do arquivo keystore que está rodando a Plataforma do Aplicativo JBoss Enterprise.
Voltar ao topo
Red Hat logoGithubredditYoutubeTwitter

Aprender

Experimente, compre e venda

Comunidades

Sobre a documentação da Red Hat

Ajudamos os usuários da Red Hat a inovar e atingir seus objetivos com nossos produtos e serviços com conteúdo em que podem confiar. Explore nossas atualizações recentes.

Tornando o open source mais inclusivo

A Red Hat está comprometida em substituir a linguagem problemática em nosso código, documentação e propriedades da web. Para mais detalhes veja o Blog da Red Hat.

Sobre a Red Hat

Fornecemos soluções robustas que facilitam o trabalho das empresas em plataformas e ambientes, desde o data center principal até a borda da rede.

Theme

© 2025 Red Hat