LINUX.ORG.RU
ФорумAdmin

Внешняя проверка веб-сайтов: есть ли сервис с поддержкой ssl client certificate?

 ,


1

2

Собственно, нужно проверять доступность веб-портала, закрытого от посторонних глаз HTTP-авторизацией по клиентскому SSL-сертификату.

Обыскал и опросил уже множество провайдеров данной немудрёной услуги - ни один почему-то не предполагает даже о том, что сайт их заказчиков может «не пустить» проверяющих в случае, если те не предоставят на этапе SSL-рукопожатия валидный сертификат. Серверный сертификат проверяют все. А вот предоставлять при этом правильный клиентский сертификат - не умеет никто.

Отсюда вопрос: есть ли «enterprise-ready» сервисы проверки веб-сайтов из множества локаций (обязательно российских), которые умеют работать с предоставленным заказчиком клиентским сертификатом SSL?

★★★★★
Ответ на: комментарий от Vovka-Korovka

Вообще-то клиентский сертификат - это подписанный CA открытый ключ. Может быть, сначала всё-таки стоит подумать, а потом отвечать?

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от DRVTiny

а без приватного ключа этот сертификат сервером не будет аутентифицирован, приватный ключ отдать таки придётся

Harald ★★★★★
()
Ответ на: комментарий от Harald

Да, но миниум 5 разных независимых белых IP-адресов - это разве несложно?

Я понимаю, что российский менталитет - это «запили на коленке как-нибудь, зачем деньги пл`отить», но ни для одной крупной организации грубый кустарный «авось-на-глазок» почему-то не подходит.

Как минимум хотелось бы платить за определённый сервис с определённым SLA, а не за машинки на Амазоне. Причём для нас критично, чтобы проверки осуществлялись с российских IP, а не из произвольных стран мира, откуда и клиенты-то к нам не ходят. А то будет печально, если половина российских клиентов отвалится, но из Гондураса сайт будет открываться просто превосходно.

DRVTiny ★★★★★
() автор топика
Последнее исправление: DRVTiny (всего исправлений: 1)
Ответ на: комментарий от DRVTiny

Да, а 5 разных независимых белых IP-адресов - тоже несложно?

купить 5 VPS в соответствующих местах

маловероятно, что такой сервис существует, особенно с российскими IP адресами, клиентская аутентификация по сертификатам не очень популярна

Harald ★★★★★
()
Ответ на: комментарий от Harald

Эмм... Вот вы когда на https://google.com ходите, Вы там тоже приватный ключ предоставляете?

Насколько я знаю, всё, что в данном случае требуется от сервера - это проверить, подписан ли клиентский сертификат известным ему Certification Authority. Точно так же ваш браузер проверяет «валидность» сертификата Google.com - для этого ему совершенно не нужен приватный ключ Google.com'а!

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от DRVTiny

Эмм... Вот вы когда на https://google.com ходите, Вы там тоже приватный ключ предоставляете?

нет, потому что гугл меня не аутентифицирует

Точно так же ваш браузер проверяет «валидность» сертификата Google.com - для этого ему совершенно не нужен приватный ключ Google.com'а!

но приватный ключ нужен серверу гугла, чтобы мой браузер мог его аутентифицировать

Harald ★★★★★
()
Ответ на: комментарий от Harald

но приватный ключ нужен серверу гугла, чтобы мой браузер мог его аутентифицировать

А можно поподробнее? ;)

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от DRVTiny

Вообще-то клиентский сертификат - это подписанный CA открытый ключ.

Вообще-то открытый ключ без приватного совершенно бесполезен. Для того, чтобы прошел хендшейк, нужно чтобы клиент доказал, что он знает приватный ключ, соответствующий отосланному открытому.

Vovka-Korovka ★★★★★
()
Ответ на: комментарий от DRVTiny

всё, что в данном случае требуется от сервера - это проверить, подписан ли клиентский сертификат известным ему Certification Authority

...и еще убедиться, что подключающийся чувак этот сертификат не выдурил, притворившись тем же сервером чуть ранее (или как-то еще), а обладает им по праву.

thesis ★★★★★
()
Ответ на: комментарий от Harald

Ты в курсе что клиентский сертификат у каждого клиента свой, и приватный ключ свой? Это как пара логин/пароль. ТС просто выдает бесправную тестовую учетку провайдеру, и он себе шлет запросы.

Вообще в интернетах мало кто дружит с этими штуками. Наверное слишком сложно.

redixin ★★★★
()
Ответ на: комментарий от redixin

Ты в курсе что клиентский сертификат у каждого клиента свой, и приватный ключ свой? Это как пара логин/пароль. ТС просто выдает бесправную тестовую учетку провайдеру, и он себе шлет запросы.

это ТС-у надо быть в курсе, я при чём

Harald ★★★★★
()
Ответ на: комментарий от redixin

ТС просто выдает бесправную тестовую учетку провайдеру, и он себе шлет запросы.

Только очень часто настраивают так, что сервер клиентов по сертификату не различает никак.

Vovka-Korovka ★★★★★
()
Ответ на: комментарий от Vovka-Korovka

Ничоси - ты хочешь другому сервису приватный ключ засветить.

Ога ога. Только клиент обычно сам генерит приватный ключ и никто кроме клиента его не знает. На пересдачу.

Только очень часто настраивают так, что сервер клиентов по сертификату не различает никак.

Очень часто некоторые неучи так делают. Например те которые сейчас идут на пересдачу.

redixin ★★★★
()
Ответ на: комментарий от redixin

Ога ога. Только клиент обычно сам генерит приватный ключ и никто кроме клиента его не знает. На пересдачу.

ЧСВ свое подкрути, а то в экран не влезает. ТС пришлось бы этому сервису и сертификат подписать. Т.е. владельцы сервиса получили бы доступ к их сайту, если там не различают клиента по сертификату.

Очень часто некоторые неучи так делают.

Ну так никто и не спорит. Только проблема в том, что среди неучей попадаются авторы популярного софта. Найди, мне, например, ручку в uwsgi, позволяющую различать клиентов по SSL сертификату.

Vovka-Korovka ★★★★★
()
Ответ на: комментарий от Vovka-Korovka

ТС пришлось бы этому сервису и сертификат подписать.

Значит приватный ключ уже светить не надо? Прогресс.

Найди, мне, например, ручку в uwsgi, позволяющую различать клиентов по SSL сертификату.

Не там ищешь. Это лежит на плечах того кто непосредственно занят работой с сертификатами. Например для nginx http://nginx.org/en/docs/http/ngx_http_ssl_module.html (ctrl+f $ssl_client_)

redixin ★★★★
()
Ответ на: комментарий от Vovka-Korovka

вот только этого в uwsgi не хватало еще

leave ★★★★★
()
Ответ на: комментарий от Harald

Ты сам-то читал, что по твоей ссылке написано?

The server requests a certificate from the client, so that the connection can be mutually authenticated, using a CertificateRequest message.

The server sends a ServerHelloDone message, indicating it is done with handshake negotiation.

The client responds with a Certificate message, which contains the client's certificate.

The client sends a ClientKeyExchange message, which may contain a PreMasterSecret, public key, or nothing. (Again, this depends on the selected cipher.) This PreMasterSecret is encrypted using the public key of the server certificate.

The client sends a CertificateVerify message, which is a signature over the previous handshake messages using the client's certificate's private key. This signature can be verified by using the client's certificate's public key. This lets the server know that the client has access to the private key of the certificate and thus owns the certificate.

Где здесь про наличие твоего закрытого ключа у гугла?

leave ★★★★★
()
Ответ на: комментарий от leave

почему моего закрытого ключа, очевидно, что имелся в виду закрытый ключ от серверного сертификата гугла, выданный для домена google.com или какого ещё, а ты что подумал?

Harald ★★★★★
()
Ответ на: комментарий от redixin

Значит приватный ключ уже светить не надо? Прогресс

ТС-у пришлось бы отдать и приватный ключ, и сертификат. Ну только если бы этот гипотетический сервис сам генерил ключи, отдавал пользователю CSR, пользователь его подписывал и отдавал назад.

Не там ищешь. Это лежит на плечах того кто непосредственно занят работой с сертификатами.

Ты не поверишь, но некоторые пользуются uwsgi без nginx. И даже пользователи nginx часто о таких вещах не задумываются.

Vovka-Korovka ★★★★★
()
Ответ на: комментарий от Vovka-Korovka

Чего это не поверю? Я и не такое видел. Например один персонаж на лоре говорит что клиентские сертификаты не нужны потому что некоторые юзают uwsgi без nginx. Иногда у людей оч слабо работает логическое мышление.

redixin ★★★★
()
Ответ на: комментарий от redixin

Например один персонаж на лоре говорит что клиентские сертификаты не нужны потому что некоторые юзают uwsgi без nginx.

А давай ты ссылку дашь на это заявление о том, что клиентские сертификаты не нужны. А то есть мнение, что кто-то не тем местом читает.

Vovka-Korovka ★★★★★
()
Ответ на: комментарий от Vovka-Korovka

Трудно признавать свою безграмотность да? Ну ты постарайся. Через нихочу к выздоровлению.

redixin ★★★★
()
Ответ на: комментарий от Vovka-Korovka

просто рассуждаем логически, безо всяких знаний о реальном устройстве дел. В асимметричной криптографии любой может зашифровать данные твоим открытым ключом, но расшифровать это послание можешь только ты своим приватным, значит, для того, чтобы отправить сообщение, серверу достаточно только твоего открытого ключа. Дальше, аутентификация - как сервер проверит, что этот открытый ключ действительно твой? Очень просто, этот открытый ключ должен быть подписан приватным ключом, который известен серверу, или центром сертификации, которому доверяет сервер. И снова серверу не нужен твой приватный ключ.

На техническом ресурсе надо такие простые вещи разжевывать, до чего довели планету это веб-хипсторы!

anonymous
()
Ответ на: комментарий от anonymous

просто рассуждаем логически

Ага, давай. Это я люблю.

Дальше, аутентификация - как сервер проверит, что этот открытый ключ действительно твой? Очень просто, этот открытый ключ должен быть подписан приватным ключом, который известен серверу, или центром сертификации, которому доверяет сервер.

Это только первая часть проверки. Сервер еще должен удостовериться, что клиент знает приватный ключ - поэтому клиент отсылает специальное сообщение, подписанное приватным ключом

https://tools.ietf.org/html/rfc5246#section-7.4.8

И снова серверу не нужен твой приватный ключ.

Клиенту нужен. Если ты прочитаешь исходный пост, то увидишь, что сервис, который нужен ТС, должен действовать как SSL клиент.

На техническом ресурсе надо такие простые вещи разжевывать

И не говори.

Vovka-Korovka ★★★★★
()
Ответ на: комментарий от anonymous

Очень просто, этот открытый ключ должен быть подписан приватным ключом, который известен серверу, или центром сертификации, которому доверяет сервер. И снова серверу не нужен твой приватный ключ.

а дальше я беру и перехватываю сниффером этот самый «открытый ключ подписанный приватным ключом центра сертификации» и тоже аутентифицируюсь с ним, не имея приватного ключа

Harald ★★★★★
()
Ответ на: комментарий от Harald

А давай я тебе разжую почему ты тупой, а?

Вот смотри:

  • Перехватил ты этот открытый ключ
  • Отправил его в аутентификационном запросе серверу
  • Сервер авторизовал твой запрос и отправил тебе ответ
  • ...
  • Обосрись, ответ зашифрован тем самым открытым ключём и без закрытого хер ты его расшифруешь

    Ну и что дала тебе эта аутентификация?
Goury ★★★★★
()
Ответ на: комментарий от Vovka-Korovka

Если клиент не знает приватного ключа — он не сможет расшифровать то, что зашифровано публичным.

Goury ★★★★★
()
Ответ на: комментарий от Vovka-Korovka

Но нам то ни к чему знать приватный ключ этого проверяющего сервиса или делиться с ним нашим, у него свой собственный. Зачем «светить свой приватный ключ»?

anonymous
()
Ответ на: комментарий от Harald

да, вовка-коровка про подпись приватным ключем сказал, я этот этап пропустил, прошу прощения. тем не менее, зачем мне давать сервису проверки свой приватный ключ?

anonymous
()
Ответ на: комментарий от Harald

Чтобы он запрос обработал тебе придётся подтвердить получение авторизационного ответа, а ты его прочитать не сможешь.

В этом топике уже достаточно людей обосралось на технической безгамотности. Достаточно. Асинхронное шифрование не дураки и не на коленке придумывали.

Goury ★★★★★
()
Ответ на: комментарий от anonymous

Чтобы вовка смог тебя похакоть же!

Goury ★★★★★
()
Ответ на: комментарий от Goury

Чтобы он запрос обработал тебе придётся подтвердить получение авторизационного ответа, а ты его прочитать не сможешь.

зачем ты сочиняешь на ходу свой велосипедный криптопротокол? теперь внезапно авторизационные ответы откуда-то появились. Сначала всю спецификацию выложи, потом можно дальше дискуссию продолжать

Harald ★★★★★
()
Ответ на: комментарий от Goury

Если клиент не знает приватного ключа — он не сможет расшифровать то, что зашифровано публичным.

Я чего-то не понял, что тебе не понравилось. Я с этим твоим утверждением и не спорил.

Vovka-Korovka ★★★★★
()
Ответ на: комментарий от anonymous

тем не менее, зачем мне давать сервису проверки свой приватный ключ?

Сервис должен проверить доступность сайта по HTTPS. Для этого нужно, чтобы прошел полный хендшейк. А для этого нужна пара из закрытого и открытого ключа, а также сертификат с этим открытым ключом, подписанный рутовым сертификатом, которому доверяет сервер. Эту пару ключей может, конечно, сгенерировать и сам сервис, но пользователю сервиса все равно нужно будет подписать сертификат для открытого ключа. Гораздо проще бы выглядело, если бы пользователь сразу выдавал сервису приватный ключ и сертификат.

Vovka-Korovka ★★★★★
()
Ответ на: комментарий от Goury

сообщение, подписанное приватным ключом

И что не так? В ходе хендшейка, клиент отсылает специальное сообщение Certificate Verify, которое содержит все предыдущие сообщения из хендшейка, зашифрованные приватным ключом клиента. Сервер расшифровывает это сообщение публичным ключом клиента и сверяет, что сообщение переданное клиентом совпадает со всеми сообщениями из хендшейка, которые видел сервер.

Vovka-Korovka ★★★★★
()
Ответ на: комментарий от Goury

Единственное, что клиент не шифрует сообщение, а просто подписывает.

Vovka-Korovka ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.