Pular para conteúdo

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

sudo mkdir -p /opt/certificate

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

sudo groupadd certusers
sudo usermod -a -G certusers 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.

sudo nano /opt/sonatype/sonatype-work/nexus3/etc/nexus.properties # (1)!
  1. O que alterar
    Adicione ou descomente as linhas abaixo.

Porta HTTP (Padrão)

application-port=8081 # (1)!
  1. Comente a linha caso queira desativar o http**

Porta HTTPS

application-port-ssl=8443

Endereço (0.0.0.0 aceita conexões externas)

application-host=0.0.0.0

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)!

  1. Remova o ${jetty.etc}/jetty-http.xml para 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:

sudo nano /opt/sonatype/nexus/etc/jetty/jetty-https.xml

4.2. Apague todo o conteúdo e cole o código abaixo (Substitua a senha changeit pela senha definido no seu certificado):

jetty-https.xml
<?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:

sudo systemctl restart nexus

Acesse em: https://SEU-IP:8443