OpenSSL и SelfSSL.exe

Тема в разделе "WASM.NETWORKS", создана пользователем _DEN_, 25 апр 2008.

  1. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    OpenSSL отказывается работать с самоподписанным сертификатом, созданным с помощью утилиты SelfSSL.exe из IIS 6.0 Resource Kit. В чем может быть дело?
     
  2. wvlg

    wvlg New Member

    Публикаций:
    0
    Регистрация:
    25 сен 2007
    Сообщения:
    44
    А как он отказывается? Чем мотивирует, что говорит? Просто так ничего не работает?
     
  3. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Говорит мол

    Код (Text):
    1. SSL_connect() failed: error:00000001:lib(0):func(0):reason(1) error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
     
  4. wvlg

    wvlg New Member

    Публикаций:
    0
    Регистрация:
    25 сен 2007
    Сообщения:
    44
    А может он вообще его получить не может, шоб проверить??? Сам запрос-то срабатывает? Я просто не пойму че код делает... вернее кусок.
     
  5. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Берем иис, делаем сайт, на сайт втыкаем селф-сайнет сертификат, созданный SelfSSL.exe. Берем OpenSSL и идем на этот сайт (openssl.exe s_client -host localhost -port 443). Получаем:

    Код (Text):
    1. D:\...>openssl.exe s_client -host localhost -port 443
    2. Loading 'screen' into random state - done
    3. CONNECTED(00000758)
    4. depth=0 /CN=...
    5. verify error:num=20:unable to get local issuer certificate
    6. verify return:1
    7. depth=0 /CN=...
    8. verify error:num=21:unable to verify the first certificate
    9. verify return:1
    10. ---
    11. Certificate chain
    12.  0 s:/CN=...
    13.    i:/CN=...
    14. ---
    15. Server certificate
    16. -----BEGIN CERTIFICATE-----
    17. ...
    18. -----END CERTIFICATE-----
    19. subject=/CN=...
    20. issuer=/CN=...
    21. ---
    22. No client certificate CA names sent
    23. ---
    24. SSL handshake has read 606 bytes and written 338 bytes
    25. ---
    26. New, TLSv1/SSLv3, Cipher is DES-CBC3-SHA
    27. Server public key is 1024 bit
    28. Compression: NONE
    29. Expansion: NONE
    30. SSL-Session:
    31.     Protocol  : TLSv1
    32.     Cipher    : DES-CBC3-SHA
    33.     Session-ID: ...
    34.     Session-ID-ctx:
    35.     Master-Key: ...
    36.     Key-Arg   : None
    37.     Start Time: 1209127253
    38.     Timeout   : 300 (sec)
    39.     Verify return code: 21 (unable to verify the first certificate)
    40. ---
    Кстати если дальше сделать http get, то мы получим респонс. По какому каналу мы его получим, по секъюрному или нет, пока не понял (соединение не рвется).
     
  6. wvlg

    wvlg New Member

    Публикаций:
    0
    Регистрация:
    25 сен 2007
    Сообщения:
    44
    Код (Text):
    1. unable to get local issuer certificate
    кто такой этот локал issuer? Я так понимаю чел, который коннектиться к сайту... Т.е. типа у него нет сертификата. В данном случ у тебя... (или это понимать как "не могу получить сертификат с сайта"?)
    Код (Text):
    1. unable to verify the first certificate
    Это вообще загадка...

    Код (Text):
    1. Server certificate
    2. -----BEGIN CERTIFICATE-----
    3. ...
    4. -----END CERTIFICATE-----
    5. subject=/CN=...
    6. issuer=/CN=...
    7. ---
    8. No client certificate CA names sent
    там, где многоточие, я так понял было содержание сертификата!!?

    И далее: сообщение о том, что не получено информации с "client certificate CA names". такое чувство, что клиент должен что-то посылать, что похожее на имя сертификата, но не послал...
    Ну, это можно посмотреть и сниффером.
     
  7. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    wvlg

    Да, локально там нет серта, тут моя ошибка, надо перепроверить. Короче серт сервака и серт клиента - один и тот же. Самоподписаный серт проверяет сам себя.

    Точечки - да, там содержание. Ты хочешь взглянуть на сертификат?

    Я перерыл гору майл-листов на эту тему и в одном из обсуждений была высказана такая мысль. Мол в такой ситуации нельзя выяснить, trusted сертификат или нет (можно ли доверят серверу), поэтому SSL_connect завершится с ошибкой, при этом SSL-соединиение все-таки будет установлено, но вопрос доверия серверу оставляется всецело на совесть клиента.

    Это похоже на правду?
     
  8. wvlg

    wvlg New Member

    Публикаций:
    0
    Регистрация:
    25 сен 2007
    Сообщения:
    44
    ЭЭЭ, ну вопрос доверия, думаю всецело лежит на клиенте(человеке), но вот какая штука:
    для SSL соединения разве не нужен сертификат??? (Просто надо смотреть нужны ли сертификаты для установления SSL-соединения или нет. Мои знания вопроса подсказывают, что нет, а получается как в анекдоте, нутром чую, что нужны).
    Дело в том, что SSL соединение, как я понимаю, просто зашифрованная передача пакетов. Шифрование, естественно, по всем здравомыслящим соображениям асинхронное. А следовательно идет обмен публичными (открытыми) ключами. А эти ключи где? Как передаются? Наверное, сначала надо "принять" сам сертификат, в котором описаны (или с которым связаны) публичные ключи. (Я тут не силен в терминологии, но думаю, представление дал). => сертификат нужен для SSL подключения. Хотя, думаю, в частном случае, возможно они и не нужны. Нужно смотреть сам SSL-стандарт(протокол или что это, вообще)
     
  9. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    wvlg

    Значит так. Берем самоподписанный сертификат, полученный утилитой SelfSSL, отдаем его иису. С ним нифига не работает.
    Берем самоподписанный сертификат, полученный OpenSSL.exe, отдаем его иису. С все работает.

    Разница в сертификатах заключается в том, что SelfSSL не создает в сертификате поле "Key Usage". OpenSSL создает и дает ему значение "Чо-то там сертификат можно юзать для подписывания сертификатов".

    Валиден ли сертификат, если у него нет такого Key Usage? Т.е. это бага SelfSSL или все же OpenSSL?
     
  10. wvlg

    wvlg New Member

    Публикаций:
    0
    Регистрация:
    25 сен 2007
    Сообщения:
    44
    А ты не пробовал изучить стандарты этого самого SSL, как он работает, его принципы и т.п.??? думаю прочитав одну-2 статьи будет сразу все ясно. А поле Key Usage, наверное, как раз и имеет отношение либо к самому ключу шифрования, либо эта опция (типо юзать\не юзать). Вот и смотри что в этих самых сертах должно быть. Какие поля. Какие существуют версии и т.п. (м\б у тя не совпадение версий или утилитка не работает, версий SSL есть несколько, насколько мне известно (ну, принципиально отличающихся)
     
  11. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    wvlg

    Некогда :-(((
     
  12. wvlg

    wvlg New Member

    Публикаций:
    0
    Регистрация:
    25 сен 2007
    Сообщения:
    44
    гг, а ты как хотел? И рыбку съесть и на....
    Тут, млин, вместо тя никто и не буит читать, могем тока советы дать!!!
    Тем более, если у тебя основная часть SSL, ТО надо бы в этом шарить.
     
  13. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    wvlg

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

    Ладно, попробую погуглить/почитать, как что - сообщу.
     
  14. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Вообщем так.

    OpenSSL ругаецо, что у SelfSSL-ного сертификата в экстеншене Key Usage нету Certificate Signing. Если я правильно понимаю RFC, то наличие Key Usage имеет ограничительный характер. То есть если есть Key Usage, то сертификат предназначен только для того, что перечислено в этом Key Usage и ничего более. Далее, логично, что если у самоподписанного серта есть Key Usage, в котором нету Certificate Signing, то получается несходняк. Сертификат самоподписанный (подписан сам собой), но его изначально нельзя было использовать для подписывания сертификатов.

    Получается что сертификат не валиден?