> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.flexbox.cloud/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Como Instalar o Certificado SSL (.pfx) no WildFly (via Elytron)

Instalar um certificado SSL no formato **PFX (PKCS#12)** no WildFly é uma prática recomendada, já que o Java agora trata o PKCS#12 como o formato de keystore padrão, tornando a conversão para JKS desnecessária.

Abaixo, apresento o guia passo a passo utilizando o subsistema **Elytron**, que é o framework de segurança moderno do WildFly.

Este guia assume que você já possui o arquivo `.pfx` e a senha do certificado. 
O certificado no formato PFX pode ser obtido no Portal do Cliente, caso o CSR tenha sido gerado através do nosso sistema.

### 1. Preparação do Arquivo
Mova o arquivo do certificado  SSL (ex: `meu_certificado.pfx`) para o diretório de configuração do WildFly para facilitar a gestão:
* **Standalone:** `WILDFLY_HOME/standalone/configuration/`
* **Domain:** `WILDFLY_HOME/domain/configuration/`

### 2. Configuração via CLI
A forma mais segura e eficiente de configurar o WildFly é através do **JBoss CLI**. 
Acesse o console executando o script `jboss-cli.sh` (Linux) ou `jboss-cli.bat` (Windows).

Execute os comandos abaixo (ajustando os caminhos e senhas):

###### A. Criar o Key Store
Aqui definimos o arquivo PFX. O ponto crucial é o atributo `type="PKCS12"`.

```
/subsystem=elytron/key-store=PFXKeyStore:add( \
    path="meu_certificado.pfx", \
    relative-to=jboss.server.config.dir, \
    type=PKCS12, \
    credential-reference={clear-text="SuaSenhaAqui"})
```

###### B. Criar o Key Manager
O Key Manager é responsável por gerenciar as chaves dentro do Key Store criado acima.

```
/subsystem=elytron/key-manager=PFXKeyManager:add( \
    key-store=PFXKeyStore, \
    credential-reference={clear-text="SuaSenhaAqui"})
```

###### C. Criar o Server SSL Context
Este é o componente que define as regras do SSL (protocolos, cifras, etc.) e utiliza o Key Manager.

```
/subsystem=elytron/server-ssl-context=PFXSSLContext:add( \
    key-manager=PFXKeyManager, \
    protocols=["TLSv1.2", "TLSv1.3"])
```

### 3. Aplicar o SSL ao Servidor Web (Undertow)
Agora que o contexto SSL está pronto, precisamos dizer ao servidor web do WildFly (**Undertow**) para utilizá-lo no listener HTTPS.

| Se você já tiver um listener HTTPS configurado que usa o modo legado (security-realm), você deve primeiro remover o atributo antigo ou deletar o listener e criar um novo.

**Para atualizar um listener existente:**

```
/subsystem=undertow/server=default-server/https-listener=https:write-attribute( \
    name=ssl-context, \
    value=PFXSSLContext)
```

**Se o listener ainda não existir:**

```
/subsystem=undertow/server=default-server/https-listener=https:add( \
    socket-binding=https, \
    ssl-context=PFXSSLContext, \
    enable-http2=true)
```

### 4. Recarregar as Configurações
Para que as alterações entrem em vigor, execute o comando de reload:

```
reload
```


### Considerações Importantes
* **Alias do Certificado:** Geralmente, o WildFly consegue ler o alias dentro do PFX automaticamente. Se o seu PFX contiver múltiplas chaves, você pode especificar qual usar no `key-manager` adicionando o atributo `alias-filter="nome_do_seu_alias"`.
* **Segurança de Senhas:** Em ambientes de produção, evite usar `clear-text` no CLI. Recomenda-se utilizar o **Expression Resolver** ou o **Credential Store** do Elytron para mascarar as senhas.
* **Portas:** Certifique-se de que a porta 8443 (padrão do WildFly para HTTPS) está aberta no seu firewall.

