Guia de Automação: Renovação SSL Certbot no OCI Load Balancer

Publicado em Março 2026 | Por Okeh | ... visualizações

Este documento descreve a configuração passo a passo para automatizar a renovação de certificados Let's Encrypt e o respectivo upload/atualização no Load Balancer da Oracle Cloud Infrastructure (OCI).

1. Pré-requisitos na OCI (Identidade e Acesso)

Antes de qualquer configuração no servidor, é necessário preparar o ambiente de identidade no console da OCI para o "robô" de automação.


1.1. Criação de Usuário e Grupo


1.2. Definição de Permissões (Policies)

Para que o usuário da API consiga gerenciar o Load Balancer, é necessário criar uma Policy.

Allow group grp_certbot_automation to manage load-balancers in compartment [NOME_DO_COMPARTIMENTO]

Nota de Segurança: A política acima é um modelo funcional. Caso deseje seguir o princípio do privilégio mínimo, você pode restringir a política apenas para verbos específicos como use ou update em recursos determinados, conforme as diretrizes de compliance da sua organização.

2. Configuração da Instância (VM)

Com as permissões prontas, agora configuramos o ambiente Linux para gerenciar os certificados.

2.1. Instalação do Certbot (Ubuntu 24.04)

O Certbot é instalado via Snap para garantir a versão mais estável e o gerenciamento automático de renovação (timers).

# Instalar Certbot via Snap
sudo snap install --classic certbot

# Vincular o comando certbot ao sistema
sudo ln -s /snap/bin/certbot /usr/bin/certbot

2.2. Configuração da OCI CLI

A CLI deve ser instalada no usuário que gerenciará a automação (ex: ubuntu).

# Instalação
bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/install.sh)"

Arquivo de Configuração (~/.oci/config):

Deve conter os caminhos absolutos para a chave privada da API gerada no Passo 1.

[DEFAULT]
user=ocid1.user.oc1..aaaaaaaaxxxxxxxx
fingerprint=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
key_file=/home/ubuntu/.oci/certbot_key.pem
tenancy=ocid1.tenancy.oc1..aaaaaaaaxxxxxxxx
region=sa-saopaulo-1

Nota: Garanta que as permissões da chave sejam restritas: chmod 400 ~/.oci/certbot_key.pem.

3. Implementação do Script de Automação

O script /usr/local/bin/atualiza_ssl_oci.sh realiza a integração entre os arquivos locais e a API da Oracle.

#!/bin/bash
# Automação SSL OCI - seu-site.com.br
set -e

# --- CONFIGURAÇÕES FIXAS ---
LB_ID="ocid1.loadbalancer.oc1.sa-saopaulo-1.xxxx_SEU_ID_AQUI_xxxx"
OCI_BIN="/home/ubuntu/bin/oci" 
CONFIG_PATH="/home/ubuntu/.oci/config"
DOMAIN="seu-site.com.br"
CERT_NAME="Cert_LE_$(date +%Y%m%d_%H%M)"
TEMP_DIR="/tmp/oci_certs"

# --- FILTRO DE SEGURANÇA ---
if [[ "$RENEWED_DOMAINS" != *"$DOMAIN"* ]] && [ -n "$RENEWED_DOMAINS" ]; then
    echo "Domínio $RENEWED_DOMAINS não é o alvo. Encerrando."
    exit 0
fi

echo "Iniciando integração OCI para $DOMAIN..."

# 1. Preparação (Copia do root para temp)
mkdir -p $TEMP_DIR
cp /etc/letsencrypt/live/$DOMAIN/privkey.pem $TEMP_DIR/
cp /etc/letsencrypt/live/$DOMAIN/cert.pem $TEMP_DIR/
cp /etc/letsencrypt/live/$DOMAIN/chain.pem $TEMP_DIR/
chmod 600 $TEMP_DIR/*.pem

# 2. Upload para OCI
$OCI_BIN lb certificate create \
    --config-file "$CONFIG_PATH" \
    --load-balancer-id "$LB_ID" \
    --certificate-name "$CERT_NAME" \
    --private-key-file "$TEMP_DIR/privkey.pem" \
    --public-certificate-file "$TEMP_DIR/cert.pem" \
    --ca-certificate-file "$TEMP_DIR/chain.pem" \
    --wait-for-state SUCCEEDED

# 3. Atualização do Listener
$OCI_BIN lb listener update \
    --config-file "$CONFIG_PATH" \
    --load-balancer-id "$LB_ID" \
    --listener-name "443-https" \
    --default-backend-set-name "bs_lb_2026-0302-1753" \
    --protocol HTTP \
    --port 443 \
    --ssl-certificate-name "$CERT_NAME" \
    --cipher-suite-name "oci-modern-ssl-cipher-suite-v1" \
    --force

# 4. Limpeza
rm -rf $TEMP_DIR
echo "Sucesso! Load Balancer atualizado com $CERT_NAME."

Permissões do Script:

sudo chmod +x /usr/local/bin/atualiza_ssl_oci.sh

4. Configuração do Hook de Renovação (Certbot)

Para que o script rode automaticamente após o Certbot renovar o certificado:

[renewalparams]
renew_hook = /usr/local/bin/atualiza_ssl_oci.sh

Teste a simulação: sudo certbot renew --dry-run

5. Monitoramento

O agendamento automático é gerenciado pelo Systemd:

systemctl list-timers | grep certbot
/var/log/letsencrypt/letsencrypt.log
journalctl -u snap.certbot.renew.service

Logs Úteis:

Precisa de ajuda com automação SSL na OCI?

Nossa equipe especializada pode implementar e configurar automação de certificados para seu ambiente Oracle Cloud.

Fale Conosco
C:\Users\afons\OneDrive\Assuntos Pessoais\Empresa Afonso\Git-Okeh\Okeh_Sites\blog\automacao-renovacao-ssl-certbot-oci.html