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
Links relacionados
- https://www.redhat.com/sysadmin/apache-yum-dnf-repo
- https://www.digitalocean.com/community/tutorials/how-to-create-an-ssl-certificate-on-apache-for-centos-7
- https://floatingoctothorpe.uk/2017/client-ssl-certificate-authentication-with-apache.html
- http://atodorov.org/blog/2011/09/15/protected-rpm-repositories-with-yum-and-ssl/