Como fornecer acesso HTTPS a um servidor da Web que não suporta SSL?

5

Eu tenho um programa (motion) que serve uma página da web mostrando um feed de câmera ao vivo. Quero disponibilizar esse feed pela Internet, mas usando SSL e um certificado para que o feed só possa ser visto por quem tiver o certificado apropriado. O que eu quero saber: existe algo como um proxy que lê o servidor e serve uma versão SSL dele?

    
por Tomas 08.08.2011 / 04:52

5 respostas

9

Instale o Apache com um vhost relevante e use ProxyPass (e provavelmente ProxyPassReverse ) para fazer o proxy na sua webcam. A autenticação de certificado de cliente é um pouco mais complicada, mas não muito; Surpreendentemente, os resultados de pesquisa do Google para "autenticação de certificado de cliente do Apache" são muito úteis .

    
por 08.08.2011 / 06:45
11

A sugestão de Womble de um proxy reverso do Apache é uma excelente sugestão. Uma solução alternativa seria configurar o stunnel para envolvê-lo. Stunnel será mais leve que o Apache se você não estiver procurando por nenhum dos benefícios de ter um servidor web completo na frente de sua câmera.

Editar 2016 : Já faz muito tempo, mas essa questão ainda recebe tráfego. Eu agora recomendo engate . O engate é projetado para escalabilidade, enquanto o stunnel não é. Se os cabeçalhos HTTP ou o conteúdo precisarem ser modificados pelo proxy, recomendo Nginx .

    
por 08.08.2011 / 09:28
3

A maioria dos servidores da Web para todos os propósitos também tem um módulo de proxy, que inclui o Apache com o mod_proxy, bem como o Nginx e o lighttpd para uma solução mais leve.

Se você quer apenas um proxy SSL, ou seja, um componente que recebe apenas tráfego SSL, descomprime, transfere para um serviço de back-end e criptografa novamente a resposta, você deve dar uma olhada em stunnel ou stud . Como essas ferramentas fazem apenas isso, elas são mais fáceis de configurar e geralmente mais rápidas e consomem menos recursos do que as alternativas (especialmente Apache)

    
por 08.08.2011 / 10:07
3

Outra opção que você já tem disponível é a VPN. Dependendo do firewall que você tem na frente da Web cam machine / DVR, você pode configurar a VPN IPSec móvel e discar para o firewall primeiro, depois acessar a câmera através do seu IP interno (supondo que a máquina da câmera esteja NAT atrás da firewall).

A maioria dos firewalls / roteadores "comerciais" oferecem agora recursos de VPN.

Com essa opção, você pode desabilitar completamente o encaminhamento de porta para que a sua máquina fotográfica não esteja mais ouvindo do lado de fora e só seja acessível depois de estabelecer uma conexão VPN.

Isso forneceria criptografia e autenticação com uma curva de aprendizado potencialmente menor do que configurar o Apache como um proxy reverso e nenhum custo adicional no hardware (novamente, isso depende do que você tem).

A desvantagem é que você precisa configurar um cliente VPN em cada máquina onde deseja visualizar as câmeras, mas também haverá uma sobrecarga adicional de administração com certificados de cliente.

Também deve ser mencionado que, dependendo da criptografia / protocolo, a VPN adiciona sobrecarga, o que pode levar ao throughput da rede, mas isso não deve ser um problema com o número de usuários que você espera e a probabilidade de que o a câmera não será visualizada simultaneamente com frequência.

Se você planeja apenas acessar a câmera a partir de um local remoto *, também pode configurar um túnel IPSec entre os firewalls do local remoto e do local da câmera (chamado de túnel VPN IPSec site-a-site). Dessa forma, você não precisaria configurar clientes VPN em cada máquina em que planeja visualizar as câmeras: basta acessar a interface da Web da câmera em qualquer navegador em qualquer máquina naquele local remoto (dependendo das regras de firewall de claro).

Se você nos fornecer a marca / modelo do firewall, podemos sugerir uma configuração melhor.

* você certamente pode configurar túneis VPN site-to-site adicionais. Mas se os 5 usuários estiverem em diferentes locais da Internet, é um pouco exagerado passar pelo processo de configuração de túneis IPSec, portanto, os clientes VPN seriam mais práticos (ou uma combinação dos dois: ou seja, se 4 dos 5 usuários estiverem em um local da Internet, configure um túnel IPSec; o 5º usuário pode usar um cliente VPN).

    
por 08.08.2011 / 14:02
1

O que você descreve é capaz de fazer, sim. Eu imagino que há uma série de ferramentas que podem fazer isso, mas estou bastante confiante de que o apache pode fazer isso. Você está descrevendo um 'proxy reverso' (algo para o google) e autenticação baseada em certificado. Para o primeiro, você provavelmente quer mod_rewrite, mas eu não tenho muita experiência com o último.

Eu não ficaria surpreso se algumas outras ferramentas pudessem fazer isso, por exemplo lula ou um dispositivo de aceleração SSL.

    
por 08.08.2011 / 05:24

Tags