Forçar endereço da web para passar pelo HTTPS

6

No meu trabalho, o link está bloqueado, mas o link não é. Existe alguma maneira de ter todos os programas / navegadores acessar essa URL usando o protocolo HTTPS em vez de HTTP?

Isso se refere especificamente a clientes de terceiros que precisam acessar o site, mas geralmente são codificados para HTTP sem a opção de alterá-los.

UPDATE: tentei criar um script de violinista como sugerido abaixo, mas não consegui executá-lo corretamente. Uma resposta com o script seria mais útil, ou outro método consistindo inteiramente em acessar.

    
por dancramer 15.07.2009 / 15:16

9 respostas

8

Gostaria de saber se todos os aplicativos de terceiros terão as configurações de proxy em consideração. Ou se a alteração das configurações de proxy em todo o sistema puder interferir em outros aplicativos. (Por exemplo, quando o proxy da empresa é necessário para acesso à Internet, não é possível alterá-lo apenas para redirecionar o tráfego para twitter.com .) Felizmente, quando o aplicativo não usa HTTPS, ele não consegue encontrar um intermediário. Então, configure um man-in-the-middle para twitter.com na porta 80, usando DeleGate .

As etapas a seguir foram testadas no Mac OS X 10.6 e no Windows XP, usando contas com direitos administrativos completos.

  1. Download DeleGate. Não deixe a homepage dos anos 90 te enganar: o programa ainda é mantido.

  2. Informe o DeleGate para encaminhar todas as solicitações locais na porta 80 (e 443) para o servidor HTTPS, com base no valor do cabeçalho do Host na solicitação HTTP. Como para um Mac na Intel (onde sudo é necessário para usar portas com privilégios abaixo de 1024):

    sudo ./macosxi-dg -v -P80,443 \
    SERVER=https \
    RELAY=vhost \
    RESOLV=cache,dns \
    STLS=-fcl,fsv \
    [email protected]
    

    Para o Windows, se descompactado para c:\ :

    cd c:\dg9_9_4\bin
    dg9_9_4.exe -v -P80,443 SERVER=https RELAY=vhost RESOLV=cache,dns STLS=-fcl,fsv [email protected]
    

    Se você precisar usar o proxy de sua empresa para acesso à Internet, o DeleGate terá prazer em usá-lo se adicionar algo como PROXY=proxy.example.com:8080 à linha de comando.

  3. Em seu arquivo /etc/hosts ( c:\windows\system32\drivers\etc\hosts no Windows XP; consulte para os locais em outros sistemas operacionais), adicione a seguinte linha para direcionar todas as solicitações de twitter.com para seu próprio computador. Observe que o mapeamento do nome do domínio para o endereço IP não leva o protocolo em consideração. Então, isso não só será usado para HTTP, mas também para HTTPS (e tudo mais, como comandos como ping ).

    127.0.0.1 twitter.com
    
  4. Verifique se o seu navegador não está configurado para usar um servidor proxy ou adicione twitter.com como uma exceção. Apenas para o caso de seu navegador ter armazenado o endereço IP do Twitter, convém reiniciá-lo.

  5. Agora, o link na verdade faz com que você (e todos os seus aplicativos) https://twitter.com .


A saída mostra que, de fato, o site HTTPS é solicitado a partir de https://twitter.com :

REQUEST - GET / HTTP/1.1
REQUEST = https://twitter.com:443/ GET / HTTP/1.1
[..]
ConnectToServer connected [16] {168.143.161.20:443 <- 192.168.1.68:57067}
## SSLway -- TLSxSNI: sent ru=0 ty=0 nm=localhost
## SSLway ## 0.459622 connected/accepted
## SSLway server's cert. = 
  **subject /
  C=US/
  O=twitter.com/
  OU=GT09721236/
  OU=See www.rapidssl.com/resources/cps (c)09/
  OU=Domain Control Validated - RapidSSL(R)/
  CN=twitter.com
  **issuer /
  C=US/
  O=Equifax Secure Inc./
  CN=Equifax Secure Global eBusiness CA-1


Ao usar MOUNT="/* https://twitter.com/*" em vez de RELAY=vhost , então, mesmo http://localhost forneceria um https://twitter.com :


AosolicitarexplicitamenteoHTTPSusandohttps://twitter.com,acadeiadecertificadosconfiáveiséinterrompida:umaplicativocomreconhecimentoHTTPSirádescobriroataqueman-in-the-middleefalharásenãopuderpedirsuapermissãoparacontinuar:


Após o teste, para executar como um serviço no Windows, basta remover o parâmetro -v . Isso instalará o programa como um serviço. Em seguida, ele será executado em segundo plano e perguntará se você deseja executá-lo na inicialização:

Trying to start as a service [DeleGate Server -P80,443] ...
Set Automatic Start on System Startup ? [y] / n :

Depois de executar o comando acima sem o parâmetro -v : consulte Painel de Controle »Ferramentas Administrativas» Serviços para iniciar ou parar manualmente o DeleGate. Observe que esse serviço se referirá ao local do qual você iniciou inicialmente o programa dg9_9_4.exe . Portanto, você não deve excluir ou mover esse programa; não se esqueça de descompactar o download para, por exemplo, c:\dg9_9_4 para evitar uma referência a algum diretório de downloads que você possa excluir no futuro.

Para remover o serviço, apenas especifique o mesmo valor para o parâmetro -P :

dg9_9_4.exe -P80,443 [email protected]
[..]
The service 'DeleGate Server -P80,443' exists.  Delete it ? [y] / n : y
OK. DELETEd the previous service.
Create a new service ? [y] / n : n


Finalmente, pode-se imaginar como o DeleGate sabe o endereço IP do twitter.com (como mapeamos para 127.0.0.1 no arquivo hosts ). DeleGate, na verdade, recupera isso por causa de RESOLV=cache,dns :

MOUNT[5]X[2] /* https://twitter.com/*  
{R} SOA got [162.143.168.in-addr.arpa][ns1.dn.net]
  [dnsadmin.enterprise.verio.net] 2008121001 10800 3600 604800 86400
    
por 17.09.2009 / 13:59
5

Você precisa de algum tipo de servidor proxy com um recurso de regra de reconfiguração. Eu suspeito que, na ausência de uma melhor resposta sendo oferecida, você poderia escrever uma regra modificadora para Fiddler fazer isso. As regras do Fiddler são escritas em JavaScript e existem vários exemplos online.

Editar: Veja e vote, a resposta de Eric Law nesta página.

    
por 15.07.2009 / 15:21
3

A regra Fiddler é bem simples. Dentro de OnBeforeRequest, adicione:

if (oSession.fullUrl.StartsWith("http://twitter.com/"))
{
    oSession.oRequest.headers.UriScheme = "https";
}
    
por 06.11.2009 / 06:41
2

Você pode escapar de toda a censura usando uma VPN e o tunelamento de sua rede de trabalho.

VPN tunneling involves establishing and maintaining a logical network connection (that may contain intermediate hops). On this connection, packets constructed in a specific VPN protocol format are encapsulated within some other base or carrier protocol, then transmitted between VPN client and server, and finally de-encapsulated on the receiving side.

O que significa é que todos os seus pacotes são enviados através de um intermediário na internet. Esse intermediário normalmente não será bloqueado pelo firewall da sua empresa e encaminha todos os seus pacotes para o destino, retornando as respostas recebidas para o seu computador. Além disso, a conexão VPN garante que todos os seus pacotes sejam codificados e protegidos de olhares indiscretos.

Você receberá o melhor serviço de produtos comerciais, mas alguns são gratuitos e não muito ruins. Por exemplo, HTTP-Tunnel Client é um produto muito bom.

    
por 17.09.2009 / 16:08
1

não é gratuito , mas o Charles (um proxy de depuração da web) tem uma função Map Remote Settings que pode ser solicitada para mapear http://twitter.com to https://twitter.com facilmente usando uma GUI. Você pode baixar uma versão de avaliação do site para ver se ela atende às suas necessidades.

    
por 21.09.2009 / 05:34
0

Sob o Firefox, parece que o add-on Force-TLS responde ao seu problema.
Citação:

Here's how it works:

  1. A site x.com served via HTTPS provides a header X-Force-TLS in its response. The header contains a max-age value (how long to remember the forced TLS) and optionally an includeSubDomains flag.
  2. The browser recieves this header and adds it to a Force TLS database.
  3. In the future, any requests to x.com are modified to be via HTTPS if they are attempted through HTTP before the request hits the network.
  4. If any subdomains *.x.com are requested via HTTP and the includeSubDomains flag was set, they are also forced to be HTTPS.
    
por 17.09.2009 / 12:19
0

Você pode escrever um script Greasemonkey com o Firefox. Aqui está uma para FriendFeed .

Edite: Script para o Twitter.

    
por 15.07.2009 / 15:23
-1

Eu acho que não há = /

Alguém pode mostrar uma maneira de fazer isso, mas vendo isso como um desenvolvedor de software: muitos aplicativos têm link codificado e, como não apenas o endereço, mas o protocolo é diferente, não vejo uma maneira de fazê-lo automaticamente, sem alterar o aplicativo. Alguns aplicativos podem funcionar com ambos, então você pode configurá-lo.

Observação: os aplicativos da web são mais hacky que os da área de trabalho.

EDIT: bom, crb. Um servidor proxy, dependendo da maneira como o Twitter está sendo bloqueado, poderia ajudá-lo.

    
por 15.07.2009 / 15:22
-1

Uma solução diferente, talvez, seria usar um cliente, como DestroyTwitter ou TweetDeck . Eles não usam twitter.com diretamente, mas tweet e leem uma API que provavelmente não está bloqueada.

    
por 17.09.2009 / 18:01