Recentemente, deparei-me com o repositório apt da minha empresa. O problema era que, se usarmos o transporte http padrão, qualquer outra pessoa poderá obter o pacote facilmente. Como a empresa está empacotando seu próprio software proprietário e não deseja compartilhá-lo com todos, o transporte http se torna um problema. Não é uma tragédia, mas um problema. Existem algumas maneiras de limitar o acesso ao pacote - firewall, restrição de acesso no nível de servidor da web, usando ssh como transporte. Pode ser encontrada aqui uma leitura bastante fácil de consumir: Restrinja o acesso ao seu repositório Debian privado
No nosso caso, decidimos usar o transporte https + autenticação de certificado de cliente. Resumidamente, basta:
- Preparar certificados autoassinados, cliente e servidor (usando o easy-rsa);
Configure o servidor da web que está localizado no repositório para aceitar apenas https; No caso do nginx, pode parecer com:
server {
listen 443;
root /path/to/public;
server_name secure_repo;
ssl on;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:;
ssl_prefer_server_ciphers on;
ssl_client_certificate /etc/nginx/ssl/ca.crt;
ssl_verify_client on;
location / {
autoindex on;
}
}
Coloque o certificado do cliente, a chave do cliente e o certificado ca em / etc / apt / ssl e, no caso do Ubuntu, adicione o arquivo 00https ao /etc/apt/apt.conf.d:
Debug::Acquire::https "true";
Acquire::https::example.com {
Verify-Peer "true";
Verify-Host "false";
CaInfo "/etc/apt/ssl/ca.crt";
SslCert "/etc/apt/ssl/client.crt";
SslKey "/etc/apt/ssl/client.key";
};
Lembre-se de que, se você estiver usando um certificado autoassinado, é importante desativar a verificação do host: Verify-Host "false";
se você não fizer isso, verá um erro:
SSL: certificate subject name (blah-blah-blah) does not match target host name 'example.com'
E aqui vamos nós, não há mais acesso não autorizado ao repositório. Então isso é uma coisa bastante útil e poderosa.