====== Configuração de certificado para um servidor OpenLDAP ======
Os comandos fornecidos são parte de um processo para configurar certificados SSL/TLS para um servidor OpenLDAP, utilizando a ferramenta **certutil** para gerenciar certificados. Vou analisar cada comando para explicar o que eles fazem:
===== certutil =====
===== 1. Criação do diretório e geração da senha =====
mkdir /etc/openldap/certs
pwgen -sy 32 1 > /etc/openldap/certs/password
* **mkdir /etc/openldap/certs**: Cria um diretório para armazenar os certificados e a senha do OpenLDAP.
* **pwgen -sy 32 1**: Gera uma senha segura de 32 caracteres que inclui símbolos e salva no arquivo especificado. Esta senha será usada para proteger a chave privada do certificado.
===== 2. Inicialização do repositório de certificados =====
certutil -d /etc/openldap/certs -N -f /etc/openldap/certs/password
* **certutil -d /etc/openldap/certs -N**: Cria um novo repositório de certificados no diretório especificado.
* **-f /etc/openldap/certs/password**: Usa o arquivo de senha para acessar ou criar o banco de dados de certificados.
===== 3. Geração de ruído para aleatoriedade =====
head -c 1024 /dev/urandom > /tmp/noise.txt
* Gera 1024 bytes de dados aleatórios de **/dev/urandom** e salva em **/tmp/noise.txt**, usado posteriormente como fonte de entropia na criação do certificado.
===== 4. Criação do certificado da Autoridade Certificadora (CA) =====
certutil -S -n LDAP-CA -t "C,C,C" -x \
-f /etc/openldap/certs/password \
-d /etc/openldap/certs \
-z /tmp/noise.txt \
-s "CN=LDAP-CA,OU=IT,O=Company,L=City,ST=State,C=NL" \
-v 120 \
-Z SHA256 \
-g 4096
certutil -S: Cria um novo certificado.
**-n LDAP-CA**: Nome do certificado.
**-t "C,C,C"**: Define as regras de confiança para o certificado (aqui, confiado para tudo).
**-z /tmp/noise.txt**: Usa o arquivo de ruído como fonte de entropia.
**-s "CN=..."**: Especifica o sujeito do certificado.
**-v 120**: Define a validade do certificado para 120 meses.
**-Z SHA256**: Usa SHA-256 como algoritmo de hash.
**-g 4096**: Gera uma chave de 4096 bits.
===== 5. Criação do certificado do servidor OpenLDAP =====
certutil -S -n 'OpenLDAP Server' -t ",," \
-c LDAP-CA \
-f /etc/openldap/certs/password \
-d /etc/openldap/certs \
-z /tmp/noise.txt \
-s "CN=OpenLDAP Server,OU=IT,O=Company,L=City,ST=State,C=NL" \
-8 "ldap.domain.tld,ldap.mgmt.domain.tld-example!" \
-v 36 \
-Z SHA256 \
-g 4096
* Semelhante ao comando anterior, mas cria um certificado para o servidor LDAP específico, referenciando a CA criada no passo anterior.
* **-8 "ldap.domain.tld,..."**: Inclui nomes alternativos para o certificado.
===== 6. Alteração das permissões de arquivos e diretórios =====
chmod 440 /etc/openldap/certs/password
chown ldap. /etc/openldap/certs/*
* **chmod 440**: Define as permissões de leitura para o usuário e grupo do arquivo de senha.
* **chown ldap.**: Muda a propriedade de todos os arquivos no diretório para o usuário e grupo **ldap**.
===== 7. Verificação e listagem dos certificados =====
certutil -L -d /etc/openldap/certs/
certutil -K -d /etc/openldap/certs/ -f /etc/openldap/certs/password
certutil -L -d /etc/openldap/certs/ -n LDAP-CA
certutil -V -d /etc/openldap/certs -n "OpenLDAP Server" -u C
* Várias operações de **certutil** para listar, verificar e validar os certificados e chaves no repositório.
Esses comandos representam uma configuração completa de certificados para um servidor OpenLDAP, utilizando práticas seguras de gestão de chaves e certificados.
===== OpenSSL =====
O OpenSSL é uma ferramenta poderosa e flexível que é frequentemente usada para criar certificados e gerenciar chaves públicas e privadas. Abaixo, segue um processo detalhado para criar um certificado de Autoridade Certificadora (CA) e um certificado de servidor usando o OpenSSL, similar ao que você descreveu para o certutil.
===== 1. Criação do diretório e geração da senha =====
mkdir /etc/openldap/certs
openssl rand -base64 32 > /etc/openldap/certs/password
* **Criação do diretório**: Armazena os certificados e chaves.
* **Geração de senha**: Gera uma senha segura e a salva em um arquivo.
===== 2. Preparação para criação de chaves e certificados =====
cd /etc/openldap/certs
===== 3. Criação da chave privada da CA =====
openssl genrsa -aes256 -passout file:/etc/openldap/certs/password -out ca-key.pem 4096
* **genrsa**: Gera uma chave RSA.
* **aes256**: Utiliza a criptografia AES-256 para proteger a chave.
* **passout file**: Especifica o arquivo que contém a senha para a chave privada.
* **4096**: Tamanho da chave em bits.
===== 4. Criação do certificado da CA =====
openssl req -new -x509 -days 3650 -key ca-key.pem -sha256 -out ca-cert.pem -passin file:/etc/openldap/certs/password \
-subj "/C=NL/ST=State/L=City/O=Company/OU=IT/CN=LDAP-CA"
* **req -new -x509**: Cria um novo pedido de assinatura de certificado (CSR) e o auto-assina, tornando-o um certificado CA.
* **days 3650**: Validade do certificado (10 anos).
* **sha256**: Usa SHA-256 como o algoritmo de hash.
* **subj**: Linha de comando para preencher o campo de assunto do certificado.
===== 5. Criação da chave privada do servidor LDAP =====
openssl genrsa -aes256 -passout file:/etc/openldap/certs/password -out server-key.pem 4096
===== 6. Criação do CSR (Pedido de Assinatura de Certificado) para o servidor LDAP =====
openssl req -new -key server-key.pem -out server-csr.pem -passin file:/etc/openldap/certs/password \
-subj "/C=NL/ST=State/L=City/O=Company/OU=IT/CN=OpenLDAP Server"
===== 7. Assinatura do CSR com a CA criada =====
openssl x509 -req -days 1095 -in server-csr.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial \
-out server-cert.pem -passin file:/etc/openldap/certs/password -extensions v3_req -extfile <(echo "subjectAltName=DNS:ldap.domain.tld,DNS:ldap.mgmt.domain.tld")
* **x509 -req**: Usa o CSR para criar um certificado.
* **days 1095**: Validade do certificado (3 anos).
* **CAcreateserial**: Cria um arquivo de número serial se não existir.
* **subjectAltName**: Adiciona nomes alternativos ao certificado.
===== 8. Mudança de permissões e propriedade dos arquivos =====
chmod 440 /etc/openldap/certs/password
chown ldap:ldap /etc/openldap/certs/*
* Ajusta as permissões para que apenas o usuário e grupo `ldap` possam ler os arquivos críticos.
===== 9. Verificação dos Certificados =====
openssl x509 -in ca-cert.pem -text -noout
openssl x509 -in server-cert.pem -text -noout
* **x509 -text**: Exibe o conteúdo dos certificados.
Este conjunto de comandos cobre a geração de chaves e certificados para uma CA e um servidor LDAP usando o OpenSSL, proporcionando uma configuração segura similar à que seria feita com certutil.