Заставить веб-адрес проходить через HTTPS
На моей работе http://twitter.com/ заблокирован, а https://twitter/ нет. Есть ли способ, чтобы все программы / браузеры имели доступ к этому URL-адресу, используя протокол HTTPS вместо HTTP?
Это особенно относится к сторонним клиентам, которым требуется доступ к сайту, но обычно они жестко запрограммированы в HTTP без возможности их изменения.
ОБНОВЛЕНИЕ: я попытался создать сценарий fiddler, как предложено ниже, но я не смог его правильно запустить. Ответ со сценарием был бы наиболее полезным, или другой метод, полностью состоящий из доступа.
9 ответов
Интересно, все ли сторонние приложения будут учитывать настройки прокси. Или, если изменение общесистемных настроек прокси может помешать другим приложениям. (Например, когда для доступа в Интернет требуется прокси-сервер компании, его нельзя изменить, просто перенаправив трафик на twitter.com
К счастью, когда приложение не использует HTTPS, оно не может найти посредника. Итак: установите человека в середине для twitter.com
на порт 80, используя DeleGate.
Следующие шаги были протестированы на Mac OS X 10.6 и Windows XP с использованием учетных записей с полными правами администратора.
Загрузите DeleGate. Не позволяйте домашней странице 1990-х обмануть вас: программа все еще поддерживается.
Скажите DeleGate пересылать все локальные запросы через порт 80 (и 443) на сервер HTTPS, основываясь на значении заголовка Host в HTTP-запросе. Как для Mac на Intel (где
sudo
требуется использовать привилегированные порты ниже 1024):sudo ./macosxi-dg -v -P80,443 \ SERVER=https \ RELAY=vhost \ RESOLV=cache,dns \ STLS=-fcl,fsv \ ADMIN=a@b.c
Для Windows, если распакован в
c:\
:cd c:\dg9_9_4\bin dg9_9_4.exe -v -P80,443 SERVER=https RELAY=vhost RESOLV=cache,dns STLS=-fcl,fsv ADMIN=a@b.c
Если вам необходимо использовать прокси-сервер вашей компании для доступа в Интернет, то DeleGate с радостью воспользуется этим, если вы добавите что-то вроде
PROXY=proxy.example.com:8080
в командной строке.В вашем
/etc/hosts
файл (c:\windows\system32\drivers\etc\hosts
в Windows XP; см. википедию для определения местоположения в других ОС), добавьте следующую строку для направления всех запросов наtwitter.com
на свой компьютер. Обратите внимание, что сопоставление доменного имени с IP-адресом не учитывает протокол. Итак: это будет использоваться не только для HTTP, но и для HTTPS (и всего остального, например, таких команд, какping
).127.0.0.1 twitter.com
Убедитесь, что ваш браузер не настроен на использование прокси-сервера, или добавьте
twitter.com
как исключение. На случай, если ваш браузер кэширует IP-адрес Twitter, вы можете перезапустить его.Теперь http://twitter.com/ фактически получает вас (и все ваши приложения)
https://twitter.com
,
Вывод показывает, что действительно HTTPS-сайт запрашивается у 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
Когда используешь MOUNT="/* https://twitter.com/*"
вместо RELAY=vhost
тогда даже http://localhost
дал бы один https://twitter.com
:
Когда явно запрашивает HTTPS с помощью https://twitter.com
затем цепочка доверенных сертификатов разорвана: приложение, поддерживающее HTTPS , обнаружит атаку "человек посередине" и завершится неудачей, если не сможет запросить у вас разрешение на продолжение:
После тестирования для запуска в качестве службы в Windows просто удалите -v
параметр. Это установит программу как сервис. Затем он будет работать в фоновом режиме и спросит вас, хотите ли вы запустить его при запуске:
Trying to start as a service [DeleGate Server -P80,443] ...
Set Automatic Start on System Startup ? [y] / n :
После запуска вышеуказанной команды без -v
параметр: см. Панель управления "Администрирование" Службы для запуска или остановки DeleGate вручную. Обратите внимание, что этот сервис будет ссылаться на местоположение, из которого вы изначально запустили dg9_9_4.exe
программа. Таким образом, вы не должны удалять или перемещать эту программу; обязательно распакуйте загрузку, например, в c:\dg9_9_4
чтобы избежать ссылки на какой-либо каталог загрузок, который вы можете удалить в будущем.
Чтобы удалить службу, просто убедитесь, что указано то же значение для -P
параметр:
dg9_9_4.exe -P80,443 ADMIN=a@b.c
[..]
The service `DeleGate Server -P80,443' exists. Delete it ? [y] / n : y
OK. DELETEd the previous service.
Create a new service ? [y] / n : n
Наконец, можно задаться вопросом, откуда DeleGate знает IP-адрес twitter.com (поскольку мы сопоставили его с 127.0.0.1 в hosts
файл). DeleGate на самом деле получает это сам, из-за 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
Вам нужен какой-то прокси-сервер с возможностью перезаписи правил. Я подозреваю, что в отсутствие лучшего ответа вы могли бы написать правило модификатора для Fiddler, чтобы сделать это. Правила Fiddler написаны на JavaScript, и есть несколько примеров в Интернете.
Редактировать: Пожалуйста, посмотрите и проголосуйте, ответ Эрика Лоу на этой странице.
Правило скрипача довольно простое. Внутри OnBeforeRequest добавьте:
if (oSession.fullUrl.StartsWith("http://twitter.com/"))
{
oSession.oRequest.headers.UriScheme = "https";
}
Вы можете избежать всякого осуждения, используя VPN и туннелирование из вашей рабочей сети.
VPN-туннелирование включает в себя установление и поддержание логического сетевого соединения (которое может содержать промежуточные переходы). В этом соединении пакеты, созданные в определенном формате протокола VPN, инкапсулируются в некоторый другой базовый или несущий протокол, затем передаются между VPN-клиентом и сервером и, наконец, де-инкапсулируются на принимающей стороне.
Это означает, что все ваши пакеты отправляются через посредника в Интернете. Этот посредник обычно не блокируется брандмауэром вашей компании, и он перенаправляет все ваши пакеты в пункт назначения, а затем возвращает полученные ответы на ваш компьютер. Кроме того, VPN-соединение гарантирует, что все ваши пакеты в обоих направлениях закодированы и защищены от посторонних глаз.
Вы получите лучший сервис от коммерческих продуктов, но некоторые из них бесплатны и не так уж плохи. Например, HTTP-Tunnel Client - очень хороший продукт.
Это не бесплатно, но у Charles (прокси-сервер отладки) есть функция Map Remote Settings, которую можно настроить для отображения http://twitter.com
в https://twitter.com
легко с помощью графического интерфейса. Вы можете скачать пробную версию с сайта, чтобы увидеть, соответствует ли она вашим потребностям.
Вы можете написать скрипт Greasemonkey с помощью Firefox. Вот один для FriendFeed.
Изменить: скрипт для Twitter.
Под Firefox кажется, что дополнение Force-TLS решает вашу проблему.
Цитата:
Вот как это работает:
- Сайт x.com, обслуживаемый по HTTPS, в своем ответе предоставляет заголовок X-Force-TLS. Заголовок содержит значение максимального возраста (как долго запоминается принудительный TLS) и опционально флаг includeSubDomains.
- Браузер получает этот заголовок и добавляет его в базу данных Force TLS.
- В будущем любые запросы к x.com изменяются на HTTPS, если они выполняются через HTTP, прежде чем запрос попадет в сеть.
- Если какие-либо субдомены *.x.com запрашиваются через HTTP и был установлен флаг includeSubDomains, они также должны быть HTTPS.
Возможно, другим решением будет использование клиента, такого как DestroyTwitter или TweetDeck . Они не используют twitter.com напрямую, а пишут в Твиттере и читают API, который, вероятно, не заблокирован.
Я думаю, что нет =/
Кто-то может найти способ сделать это, но, видя это как разработчика программного обеспечения: многие приложения жестко запрограммированы на http://twitter.com/, и поскольку не только адрес, но и протокол другой, я не вижу способ сделать это автоматически, без изменения приложения. Некоторые приложения могут работать с обоими, так что вы можете настроить его.
Примечание: веб-приложения более хакерские, чем настольные.
РЕДАКТИРОВАТЬ: хорошо, crb. Прокси-сервер, в зависимости от способа блокировки Twitter, может помочь ему.