Configuração do SSL/HTTPS
Este guia cobre a configuração do SSL/HTTPS na porta 8443, utilizando um diretório centralizado de certificados (/opt/certificate) para facilitar a gestão e integração futura com outras ferramentas.
1. Criar Diretório e Gerar o Keystore
Vamos criar uma pasta neutra para hospedar o certificado e gerar o arquivo .jks (o cofre de chaves).
1.1. Criar a pasta centralizada
1.2. Gerar o certificado
sudo keytool -genkeypair \
-alias jetty \
-keyalg RSA \
-keysize 2048 \
-keystore /opt/certificate/keystore.jks \
-storepass 'changeit' \
-keypass 'changeit' \
-validity 1460 \
-ext "SAN=IP:IP-DA-MAQUINA" \
-dname "CN=IP-DA-MAQUINA, OU=TI, O=Empresa, L=Cidade, ST=UF, C=BR"
Substitua "IP-DA-MAQUINA" pelo IP real do servidor e a senha "changeit" por uma segura.
2. Configurar Permissões de Segurança
Para que o usuário do Nexus leia o certificado sem ser o "dono" da pasta, criamos um grupo dedicado.
2.1. Criar grupo de segurança e adicionar o usuário nexus
2.2. Ajustar permissões do arquivo (Root é dono, Grupo apenas lê)
sudo chown root:certusers /opt/certificate/keystore.jks
sudo chmod 640 /opt/certificate/keystore.jks
3. Ativar o Módulo HTTPS
3.1. Edite o arquivo de propriedades principais para liberar a porta e carregar o módulo SSL.
- O que alterar
Adicione ou descomente as linhas abaixo.
Porta HTTP (Padrão)
- Comente a linha caso queira desativar o http**
Porta HTTPS
Endereço (0.0.0.0 aceita conexões externas)
Argumentos
nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml ,${jetty.etc}/jetty-https.xml,${jetty.etc}/jetty-requestlog.xml
nexus-context-path=/ # (1)!
- Remova o
${jetty.etc}/jetty-http.xmlpara desativar o http
Adicione ,${jetty.etc}/jetty-https.xml no final da lista, sem espaços.
4. Configurar o XML do Jetty
Este passo substitui o arquivo de configuração HTTPS para usar o novo certificado e evitar erros de dependência do Jetty.
4.1. Edite o arquivo:
4.2. Apague todo o conteúdo e cole o código abaixo (Substitua a senha changeit pela senha definido no seu certificado):
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "https://jetty.org/configure_10_0.dtd">
<Configure id="Server" class="org.eclipse.jetty.server.Server">
<New id="httpsConfig" class="org.eclipse.jetty.server.HttpConfiguration">
<Set name="outputBufferSize">32768</Set>
<Set name="requestHeaderSize">8192</Set>
<Set name="responseHeaderSize">8192</Set>
<Set name="secureScheme">https</Set>
<Set name="securePort"><Property name="application-port-ssl" /></Set>
<Call name="addCustomizer">
<Arg><New class="org.eclipse.jetty.server.SecureRequestCustomizer"/></Arg>
</Call>
</New>
<New id="sslContextFactory" class="org.eclipse.jetty.util.ssl.SslContextFactory$Server">
<Set name="KeyStorePath">/opt/certificate/keystore.jks</Set>
<Set name="KeyStorePassword">changeit</Set>
<Set name="KeyManagerPassword">changeit</Set>
<Set name="TrustStorePassword">changeit</Set>
<Set name="EndpointIdentificationAlgorithm"></Set>
<Set name="NeedClientAuth"><Property name="jetty.ssl.clientAuth" default="false"/></Set>
<Set name="WantClientAuth"><Property name="jetty.ssl.wantClientAuth" default="false"/></Set>
<Set name="IncludeCipherSuites">
<Array type="String">
<Item>TLS_ECDHE.*</Item>
<Item>TLS_DHE_RSA.*</Item>
</Array>
</Set>
<Set name="ExcludeCipherSuites">
<Array type="String">
<Item>.NULL.</Item>
<Item>.RC4.</Item>
<Item>.MD5.</Item>
<Item>.DES.</Item>
<Item>.DSS.</Item>
</Array>
</Set>
</New>
<Call name="addConnector">
<Arg>
<New class="org.eclipse.jetty.server.ServerConnector">
<Arg name="server"><Ref refid="Server" /></Arg>
<Arg name="factories">
<Array type="org.eclipse.jetty.server.ConnectionFactory">
<Item>
<New class="org.sonatype.nexus.bootstrap.jetty.InstrumentedConnectionFactory">
<Arg>
<New class="org.eclipse.jetty.server.SslConnectionFactory">
<Arg name="next">http/1.1</Arg>
<Arg name="sslContextFactory"><Ref refid="sslContextFactory"/></Arg>
</New>
</Arg>
</New>
</Item>
<Item>
<New class="org.eclipse.jetty.server.HttpConnectionFactory">
<Arg name="config"><Ref refid="httpsConfig" /></Arg>
</New>
</Item>
</Array>
</Arg>
<Set name="host"><Property name="application-host" /></Set>
<Set name="port"><Property name="application-port-ssl" /></Set>
<Set name="idleTimeout">30000</Set>
</New>
</Arg>
</Call>
</Configure>
5. Reinicie o serviço para aplicar as configurações:
Acesse em: https://SEU-IP:8443