Por: @jonasc Publicado em: 2021-05-31

Topologia

  • Servidor CentOS 8 WEB para repositório RPM
  • Cliente CentOS 8 para consumir o repositório RPM

OBS: Pode ser feito na mesma máquina

Instalação

yum install createrepo httpd mod_ssl openssl-perl

OBS: openssl-perl instalado apenas para facilitar a geração de CA para este lab.

Configuração do repositório básico

Criando repo local com um pacote de exemplo:

mkdir /var/opt/teste1/
cd /var/opt/teste1/
wget https://rpms.remirepo.net/enterprise/remi-release-8.rpm
createrepo /var/opt/teste1/

Configurando http server básico em /etc/httpd/conf/httpd.conf:

DocumentRoot "/var/opt/teste1"
<Directory "/var/opt/teste1">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

Remover configuração welcome:

rm /etc/httpd/conf.d/welcome.conf 

Iniciar e habiltiar apache:

systemctl start httpd
systemctl enable httpd

Configuação do servidor com HTTPS

Criar uma autoridade certificadora:

CA.pl -newca

OBS: CA em /etc/pki/CA/cacert.pem

Criando par de chaves para o servidor web HTTP:

CA.pl -newreq-nodes
CA.pl -sign
mv newcert.pem /etc/pki/CA/certs/teste1-server.pem
mv newkey.pem /etc/pki/CA/private/teste1-server-key.pem

Criando par de chaves para o cliente RPM:

CA.pl -newreq-nodes
CA.pl -sign
mv newcert.pem /etc/pki/CA/certs/teste1-client.pem
mv newkey.pem /etc/pki/CA/private/teste1-client-key.pem

Configuração do virtualhost default em /etc/httpd/conf.d/ssl.conf:

DocumentRoot "/var/opt/teste1/"
SSLCertificateFile /etc/pki/CA/certs/teste1-server.pem
SSLCertificateKeyFile /etc/pki/CA/private/teste1-server-key.pem
SSLCACertificateFile /etc/pki/CA/cacert.pem

Configurando autenticação de cliente SSL em /etc/httpd/conf.d/ssl.conf:

SSLVerifyClient require
SSLVerifyDepth  1

Configurando SSL com obrigatório em /etc/httpd/conf.d/ssl_required.conf:

<Location '/'>
  SSLRequireSSL
</Location>

Aplicando as configurações:

apachectl configtest
systemctl restart httpd

Configuração do repo file

Configuração do cliente em /etc/yum.repos.d/teste1.repo:

[teste1]
name=teste1
enabled=1
gpgcheck=0
baseurl=https://172.28.60.38/
sslverify=False
sslclientcert=/etc/pki/CA/certs/teste1-client.pem
sslclientkey=/etc/pki/CA/private/teste1-client-key.pem

Testes das funcionalidades

Search do pacote de exemplo:

yum search remi