Причины безопасности - нет, вы не можете сбросить историю браузера (с javascript)
Я имею в виду, что вы не можете делать
for(i=0;i<window.history.length; i++)
{
alert(window.history[i]);
}
Однако у меня нет Хорошее объяснение, почему history.go(n);
в порядке
Не стесняйтесь пропустить этот ответ, если хотите решить проблему с сертификатами. Этот ответ касается туннелирования ssh через брандмауэр, который, на мой взгляд, является лучшим решением для работы с брандмауэрами / прокси-серверами.
Существует лучший способ, чем использование доступа по протоколу http, а именно использование службы ssh, предлагаемой github на порту 443 сервера ssh.github.com.
Мы используем инструмент под названием штопор. Это доступно как для CygWin (через настройку с домашней страницы cygwin), так и для Linux с использованием вашего любимого инструмента упаковки. Для MacOSX это доступно из macports и варится по крайней мере.
Командная строка выглядит следующим образом:
$ corkscrew <proxyhost> <proxyport> <targethost> <targetport> <authfile>
Proxyhost и proxyport - это координаты прокси https. Targethost и targetport - это местоположение хоста для туннелирования. Authfile представляет собой текстовый файл с 1 строкой, содержащей имя пользователя и пароль прокси-сервера, разделенные двоеточием
, например:
abc:very_secret
Установка для использования «обычного» протокола ssh для связи git
Добавив это в ~/.ssh/config
, этот трюк можно использовать для обычных соединений ssh.
Host github.com
HostName ssh.github.com
Port 443
User git
ProxyCommand corkscrew <proxyhost> <proxyport> %h %p ~/.ssh/proxy_auth
Теперь вы можете проверить его работоспособность, выполнив команду ssh-ging для gitproxy
pti@pti-laptop:~$ ssh github.com
PTY allocation request failed on channel 0
Hi ptillemans! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.
pti@pti-laptop:~$
(Примечание: если вы никогда ранее не входили в github, ssh попросит добавить ключ сервера в файл известных хостов. Если вы параноик, рекомендуется проверить отпечаток RSA на тот, который указан на сайте github, куда вы загрузили свой ключ).
Небольшой вариант этого метода - это случай, когда вам нужен доступ к хранилищу с другим ключом, например, отделить вашу личную учетную запись от вашей профессиональной учетной записи.
#
# account dedicated for the ACME private github account
#
Host acme.github.com
User git
HostName ssh.github.com
Port 443
ProxyCommand corkscrew <proxyhost> <3128> %h %p ~/.ssh/proxy_auth
IdentityFile ~/.ssh/id_dsa_acme
наслаждайтесь!
Мы используем его уже много лет как на Linux, Mac, так и на Windows.
Если вы хотите, вы можете узнать больше об этом в этом блоге
Для тех, кто использует Msys / MinGW GIT, добавьте это
export GIT_SSL_CAINFO=/mingw32/ssl/certs/ca-bundle.crt
Сгенерируйте токен доступа из Github и сохраните его, так как он больше не появится.
git -c http.sslVerify=false clone https://<username>:<token>@github.com/repo.git
или,
git config --global http.sslVerify false
git clone https://github.com/repo.git
У меня недавно (июль 2014 г.) была похожая проблема, и я обнаружил в OS X (10.9.4), что срок действия сертификата «DigiCert High Assurance EV Root CA» истек (хотя у меня был и другой, срок действия которого еще не истек).
Я нашел два сертификата с именем «DigiCert High» Assurance EV Root CA ", срок действия которого истекает ноябрь 2031 г., срок действия истек в июле 2014 г. (несколько дней назад). Удаление устаревшего сертификата решило проблему для меня.
Надеюсь, это поможет.
В системе Mac OSX 10.5 я смог заставить это работать простым способом. Во-первых, запустите процедуры github и тест, который работал нормально для меня, показывая, что мой сертификат на самом деле был в порядке. https://help.github.com/articles/generating-ssh-keys
ssh -T git@github.com
Тогда я наконец заметил еще один формат URL для удаленных. Я попробовал другие, выше, и они не работали. http://git-scm.com/book/ch2-5.html
git@github.com:MyGithubUsername/MyRepoName.git
Простой «git push myRemoteName» отлично работал!
Я просто отключил аутентификацию с помощью SSL-сертификата и использовал простой логин и пароль для входа в систему, как показано ниже
Я попробовал все, в конце концов я посмотрел в файле hosts и там была случайная запись для github Удаление псевдонима исправило проблему
% systemroot% \ system32 \ drivers \ etc \ hosts
Улучшите решение RouMao, временно отключив проверку GIT / curl ssl в Windows cmd:
set GIT_SSL_NO_VERIFY=true
git config --global http.proxy http://<your-proxy>:443
Преимущество этого решения в том, что оно действует только в текущем окне cmd.
Попробуйте использовать файл .netrc, он будет аутентифицироваться через https. Создайте файл вызова .netrc
в своем домашнем каталоге и поместите его в него:
machine github.com login myusername password mypass
См. Этот пост для получения дополнительной информации:
https://plus.google. ком / и / 0/104462765626035447305 / сообщений / WbwD4zcm2fj
при разбое pi у меня было
pi @ raspbmc: ~ $ git clone http: //github.com/andreafabrizi/Dropbox-Uploader .git Клонирование в «Dropbox-Uploader» ... ошибка: Проблема с сертификатом SSL CA (путь? Права доступа?) При доступе к http: // github.com/andreafabrizi/Dropbox-Uploader.git/info/refs неустранимый: HTTP-запрос не выполнен
, поэтому укажите
sudo apt-get install ca-certificates
затем
git clone http://github.com/andreafabrizi/Dropbox-Uploader.git
работал
Примечание. Отключение проверки SSL имеет последствия для безопасности . Он позволяет атаковать Man in the Middle, когда вы используете Git для передачи данных по сети. Убедитесь, что вы полностью понимаете последствия для безопасности, прежде чем использовать это в качестве решения. Или, что еще лучше, установите корневые сертификаты.
Один из способов - отключить проверку SSL CERT:
git config --global http.sslVerify false
Это не позволит CURL проверить подлинность HTTPS-сертификации.
Только для одного хранилища:
git config http.sslVerify false
Мне нужно было две вещи:
перейти к cygwin setup и включить пакет « ca-Certificates » (он находится под Net ) (как указано в другом месте).
Сообщите git, где найти установленные сертификаты:
GIT_SSL_CAINFO = / usr / ssl / certs / ca-bundle.crt GIT_CURL_VERBOSE = 1 git ...
(Подробная опция не нужна)
Или постоянное сохранение опции:
git config --global http.sslCAinfo / usr / ssl / certs / ca -bundle.crt
git ...
У меня возникла та же проблема с Solaris Express 11. Это заняло у меня некоторое время, но я смог найти, где нужно разместить сертификаты. Согласно /etc/openssl/openssl.cnf, путь к сертификатам - / etc / openssl / certs. Я разместил сертификаты, сгенерированные с помощью вышеприведенного совета Алексея.
Вы можете проверить, что все работает, используя openssl в командной строке:
openssl s_client -connect github.com:443
Обратите внимание, что для того, чтобы это заработало (установка RVM на CentOS 5.6), мне нужно было выполнить следующее:
export GIT_SSL_NO_VERIFY=true
и после этого стандартную процедуру установки для сворачивание установщика RVM в bash сработало:)
Чтобы клонировать окна при настройке SSL, установите значение false:
git -c http.sslVerify=false clone http://example.com/e.git
Если вы хотите клонировать без , нарушая ваши глобальные настройки.
У меня была такая же проблема. Импорт сертификата или команда для отмены ssl-проверки не работали. Оказалось, что срок действия пароля для сетевого прокси истек. Была запись о настройке прокси. в файле .gitconfig присутствует в моем профиле пользователя Windows. Я просто удалил всю запись, и она снова начала работать.
Самый популярный ответ (от Алексея Вишенцева) гласит:
Проблема в том, что в вашей системе не установлен ни один из сертификатов удостоверяющего центра. И эти сертификаты не могут быть установлены с помощью cygwin setup.exe.
Однако, последнее утверждение неверно (сейчас или всегда было, я не знаю).
Все, что вам нужно сделать, - это перейти к настройке cygwin и включить пакет ca-Certificates (он находится в сети). Это помогло мне.
Очень простое решение: заменить https: // на git: //
Использовать git: //the.repository вместо https: //the.repository и будет работать.
У меня была эта проблема в Windows с TortoiseGit, и это решило ее.
В CentOS 5.x простой yum update openssl
обновил пакет openssl, который обновил системный файл ca-bundle.crt
и исправил проблему для меня.
То же самое может быть верно для других распределений.
Я столкнулся с той же проблемой при настройке Git на платформе совместной разработки, которой я должен управлять.
Чтобы решить эту проблему:
Я обновил версию Curl, установленную на сервере. Загрузите последнюю версию на веб-сайте Загрузите страницу curl и следуйте процедуре установки Процедуры установки curl
Получите сертификат орган, который доставляет сертификат для сервера.
Добавьте этот сертификат в файл CAcert, используемый curl. На моем сервере он находится в /etc/pki/tls/certs/ca-bundle.crt
.
Сконфигурируйте git для использования этого файла сертификата, отредактировав файл .gitconfig и установив путь sslcainfo. sslcainfo= /etc/pki/tls/certs/ca-bundle.crt
На клиентском компьютере вы должны получить сертификат и настроить файл .gitconfig.
Надеюсь, это поможет некоторым из вас.
Вы проверили свое время?
Я абсолютно отказался сделать свои операции git небезопасными, и после того, как я попробовал все, что здесь упоминалось, меня поразило, что одной из возможных причин, по которой сертификаты не проходят проверку, является то, что даты неверно (либо дата окончания действия сертификата, либо местные часы).
Вы можете легко проверить это, набрав date
в терминале. В моем случае (новый Raspberry Pi) локальные часы были установлены на 1970, поэтому простой ntpdate -u 0.ubuntu.pool.ntp.org
все исправил. Для rPi я бы также рекомендовал вам поставить следующий скрипт в ежедневную работу cron (скажем, /etc/cron.daily/ntpdate
):
#!/bin/sh
/usr/sbin/ntpdate -u 0.ubuntu.pool.ntp.org 1> /dev/null 2>&1
Мне нужны были сертификаты только для Cygwin и git, поэтому я сделал то, что написал @esquifit. Однако мне пришлось выполнить шаг 5 вручную, c_rehash не был доступен в моей системе. Я следовал этому руководству: Установка сертификатов CA в платформу OpenSSL .
Если вы использовали ОС на базе Debian, вы можете просто запустить
apt-get install ca-сертификаты
Я исправил эту проблему, используя apt-cyg (отличный установщик, похожий на apt-get), чтобы легко загрузить CA-сертификаты (включая Git и многие другие):
apt-cyg install ca-certificates
Примечание : сначала следует установить apt-cyg. Вы можете сделать это из командной строки Windows:
cd c:\cygwin
setup.exe -q -P wget,tar,qawk,bzip2,subversion,vim
Закрыть Windows cmd и открыть Cygwin Bash:
wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg
install apt-cyg /bin
Я знаю оригинальные списки вопросов Cygwin, но вот решение для CentOS:
curl http://curl.haxx.se/ca/cacert.pem -o /etc/pki/tls/certs/ca-bundle.crt
Источник: http://eric.lubow.org/2011/security/fixing-centos -root-сертификат-орган-вопросы /
Я хотел, чтобы Git использовал обновленный комплект сертификатов без замены того, который использует вся моя система. Вот как заставить Git использовать определенный файл в моем домашнем каталоге:
mkdir ~/certs
curl http://curl.haxx.se/ca/cacert.pem -o ~/certs/cacert.pem
Теперь обновите .gitconfig
, чтобы использовать его для проверки в одноранговом режиме:
[http]
sslCAinfo = /home/radium/certs/cacert.pem
Примечание. Я использую абсолютный путь. Git здесь не расширяет путь, поэтому вы не можете использовать ~
без уродливого кладжа. Кроме того, вы можете пропустить файл конфигурации и установить путь через переменную окружения GIT_SSL_CAINFO
.
Чтобы устранить эту проблему, установите GIT_CURL_VERBOSE=1
. Путь к файлу CA, который использует Git, будет показан в строках, начинающихся с «CAfile:».
Проблема в том, что в вашей системе не установлен ни один из сертификатов удостоверяющего центра. И эти сертификаты не могут быть установлены с помощью cygwin setup.exe.
Обновление: Установите пакет Net / ca-Certificates в cygwin (спасибо dirkjot)
Существует два решения:
Фактически установите root сертификаты. Ребята из Curl извлекли для вас сертификаты из Mozilla .
cacert.pem
файл - это то, что вы ищете. Этот файл содержит> 250 сертификатов CA (не знаю, как доверять этому количеству госзакупок). Вам необходимо скачать этот файл, разделить его на отдельные сертификаты, поместить их в / usr / ssl / certs (ваш CApath) и проиндексировать их.
Вот как это сделать. С помощью cygwin setup.exe установите пакеты curl и openssl и выполните:
$ cd /usr/ssl/certs
$ curl http://curl.haxx.se/ca/cacert.pem |
awk '{print > "cert" (1+n) ".pem"} /-----END CERTIFICATE-----/ {n++}'
$ c_rehash
Важно : Для использования c_rehash
необходимо установить также openssl-perl
.
Игнорировать проверку сертификата SSL.
ВНИМАНИЕ: Отключение проверки сертификата SSL имеет последствия для безопасности. Без проверки подлинности соединений SSL / HTTPS злоумышленник может выдать себя за доверенную конечную точку (такую как GitHub или какой-либо другой удаленный хост Git), и вы будете уязвимы для атаки Man-in-the-Middle . Убедитесь, что вы полностью понимаете проблемы безопасности и своей модели угроз, прежде чем использовать это в качестве решения.
$ env GIT_SSL_NO_VERIFY=true git clone https://github...
Если вы работаете в Mac OS X, вы можете установить пакет ca-cert-bundle с помощью homebrew
:
$ brew install curl-ca-bundle
$ git config --system http.sslcainfo /usr/local/share/ca-bundle.crt
Формула устанавливает пакет сертификатов в вашу общую папку. via:
share.install 'ca-bundle.crt'
Метод share
является просто псевдонимом /usr/local/share
, а curl-ca-bundle предоставляется в Mozilla
. Это то, на что вы видите ссылки во многих вопросах. Надеюсь, что это поможет, поскольку не совсем понятно, как подойти к этому на Mac OS X. brew install curl
тоже не принесет вам много пользы, так как это только бочонок и не будет связан (работает which curl
всегда будет выводить /usr/bin/curl
, что по умолчанию поставляется с вашей ОС). Этот пост также может иметь некоторую ценность .
Вам, конечно, нужно будет отключить SSL перед установкой homebrew
, так как это git-репо. Просто делайте то, что говорит curl, когда происходит ошибка во время проверки SSL, и:
$ echo insecure >> ~/.curlrc
Как только вы установите homebrew
вместе с curl-ca-bundle
, удалите .curlrc
и попробуйте клонировать репо на github. Убедитесь, что ошибок нет, и вам будет хорошо.
ПРИМЕЧАНИЕ: Если вы прибегаете к .curlrc
, удалите его из системы, как только вы закончите тестирование. Этот файл может вызвать серьезные проблемы, поэтому используйте его во временных целях и с осторожностью. brew doctor
будет жаловаться, если вы забудете удалить его из своей системы).
ПРИМЕЧАНИЕ: Если вы обновите свою версию git, вам нужно будет повторно запустить эту команду, так как настройки вашей системы будут стерты (они сохраняются относительно двоичного файла git в зависимости от версии). [тысячу сто сорок одна]
Итак, после запуска:
$ brew update
$ brew upgrade
Если вы получите новую версию git, просто перезапустите:
$ git config --system http.sslcainfo /usr/local/share/ca-bundle.crt
И все будет готово.
Наконец, если у вас есть новая версия git, выполните:
$ git config -l --system
должно выдать вам ошибку в соответствии с
fatal: unable to read config file '/usr/local/Cellar/git/1.8.2.2/etc/gitconfig'
это ваша совет, который нужно указать git, где находится пакет Mozilla.
ОБНОВЛЕНИЕ:
.curlrc
может или не может быть решением вашей проблемы. В любом случае, просто установите пакет Mozilla, установленный на вашем компьютере, независимо от того, нужно ли вам загружать его вручную или нет. Вот что здесь важно. Как только вы получите пакет, вы готовы. Просто запустите команду git config и укажите git на пакет ca.
ОБНОВЛЕНИЕ
Мне недавно пришлось добавить:
export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crt
в мой файл точек .zshenv
, так как я использую zsh
. опция git config
работала в большинстве случаев, но при использовании github по SSL (например, rvm get stable
) я все еще сталкивался с проблемами сертификатов. @Maverick указал на это в своем комментарии, но на тот случай, если кто-то пропустит это или предположит, что ему не обязательно экспортировать эту переменную среды в дополнение к выполнению команды git config --system....
. Спасибо и надеюсь, что это поможет.
ОБНОВЛЕНИЕ
Похоже, что curl-ca-bundle был недавно удален из доморощенного . Здесь есть рекомендация .
Вы хотите добавить некоторые файлы в:
$(brew --prefix)/etc/openssl/certs
Если все, что вы хотите сделать, это просто использовать git-клиент Cygwin с github.com, то есть гораздо более простой способ без необходимости загружать, извлекать, преобразовывать, разбивать файлы сертификатов. Действуйте следующим образом (я предполагаю, что Windows XP с Cygwin и Firefox)
Вот и все.
Конечно, это устанавливает только одну иерархию сертификатов, ту, которая вам нужна для github. Конечно, вы можете использовать этот метод с любым другим сайтом без необходимости устанавливать 200 сертификатов сайтов, которым вы (не обязательно) доверяете.
Можно попробовать эту команду в Терминал :
конфигурация мерзавца - глобальная http.sslVerify ложь