Уведомления

Группа в Telegram: @pythonsu

#1 Март 10, 2016 10:17:41

Jeck290
От:
Зарегистрирован: 2010-01-03
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

Не работает WebHook c самописным сертификатом на raspberry pi

Привет пишу сюда в последнюю очередь, перепробовал уже все что можно. Проблема при подключении вебхука к моему серверу в консоли появляется ошибка “TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca”,
ругается на корневой сертификат и естественно запрос не доходит на сервер. Думал что сертификат делаю не так хотя пример был взят из оф документации.
Взял бота на Go запустил его с этими сертификатами и все заработало. Скорее всего ошибка в питоновских библиотеках для ssl, поделитесь мыслями кто что думает ?



Офлайн

#2 Март 11, 2016 00:56:33

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

Не работает WebHook c самописным сертификатом на raspberry pi

Jeck290
поделитесь мыслями кто что думает ?
Есть такая мысль, что ошибка у тебя в коде какая-то. Раз ты его не привёл, значит не понимаешь, что код приводить надо. А если не понимаешь, что код приводить надо, значит не очень шаришь в программировании. ;)



Отредактировано py.user.next (Март 11, 2016 00:56:47)

Офлайн

#3 Март 11, 2016 07:22:56

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Не работает WebHook c самописным сертификатом на raspberry pi

Jeck290
Скорее всего ошибка в питоновских библиотеках для ssl, поделитесь мыслями кто что думает ?
:) Это знакомая гипотеза. Думаю отношение вероятности нахождения ошибки в стандартных библиотеках по сравнению с ошибкой в своем новом коде для опытного разработчика порядка 1/1000. Я не имею ввиду конечно начальную фазу когда код пишется и свои ошибки идут валом. Имею ввиду на фазе эксплуатации кода.



Офлайн

#4 Март 11, 2016 11:49:08

Jeck290
От:
Зарегистрирован: 2010-01-03
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

Не работает WebHook c самописным сертификатом на raspberry pi

Да нет с программированием у меня все хорошо ) ну или я так думаю
вот код он в скриншотах, могу конечно архив скинуть но там нужно то всего подключить сертификаты к вебсерверу тобиш включить ssl. Я пробую сделать это на tornado,
настройки подключения сертификата в tornado



обработчик post запроса, если приходит пост то в консоли должен быть принт



урлы



ну и код для включения вебхука, посылаем урл и сам сертификат, все как написано в офф документации



Сервер находится на raspberry pi , dns в данном случае идет от сервисов микротика. По сути нужно настроить ssl на веб сервере и сделать обработчик для post запроса, когда ты активируешь вебхук то и пишешь боту то на сервер начинают приходить post запросы но в логах появляется ошибка ((( Точно такой же бот только для go таких ошибок с сертификатом не имеет, просто мне интресно почему ssl выдает ошибку, поискал в гугле решение проблемы но так и ничего не нашел ….



Офлайн

#5 Март 11, 2016 13:43:31

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

Не работает WebHook c самописным сертификатом на raspberry pi

Jeck290
вот код он в скриншотах, могу конечно архив скинуть
Конечно надо скидывать архив. Ты же не в курсе, что скинутый код ещё и запускается обычно, чтобы ошибку воспроизвести. Да и чтобы просто процитировать кусок из этого кода, никто не будет сидеть и набирать его. Потому и выводы такие, что не очень-то ты с кодом много работаешь, раз таких вещей не знаешь.

Вот там в коде CERT_PATH, предлагаешь догадаться, что это, откуда и чему равно?



Офлайн

#6 Март 11, 2016 14:28:24

Jeck290
От:
Зарегистрирован: 2010-01-03
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

Не работает WebHook c самописным сертификатом на raspberry pi

# -*- coding: utf-8 -*-
from tornado.ioloop import IOLoop
from tornado.web import RequestHandler, Application
from tornado.httpserver import HTTPServer
class MainHandler(RequestHandler):
    def get(self):
        print "GET"
        self.write("GET")
    def post(self, *args, **kwargs):
        print "POST"
        self.write('POST')
application = Application([
    (r"/", MainHandler),
])
http_server = HTTPServer(application, ssl_options={'certfile': 'webhook_cert.pem', 'keyfile': 'webhook_pkey.pem'})
if __name__ == "__main__":
    http_server.listen(8443, address='0.0.0.0')
    IOLoop.instance().start()

генерация сертификата openssl req -newkey rsa:2048 -sha256 -nodes -keyout YOURPRIVATE.key -x509 -days 365 -out YOURPUBLIC.pem -subj “/C=US/ST=New York/L=Brooklyn/O=Example Brooklyn Company/CN=YOURDOMAIN.EXAMPLE”
тут заменить на свой домен YOURDOMAIN.EXAMPLE

отсылаем сертификат ,ссылку и активируем хук
def set_webhook():
    data = {'url': 'https://DOMENNAME:8443/', 'certificate': open('key/webhook_cert.pem', 'r')}
    r = requests.post('https://api.telegram.org/bot(TOKEN)/setWebhook',data = data)
    print r.text

после этого должны приходить запросы и п логах торнадо должна появляться ошибка.
Поставил на виртуалку Арч , установил торнадо но ошибка все равно появляется …. он где то ищет сертификаты и не может их найти как я понимаю. Развернул nginx сделал прокси на торнадо, теперь запросы вообще не приходят (



Офлайн

#7 Март 11, 2016 14:43:47

Jeck290
От:
Зарегистрирован: 2010-01-03
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

Не работает WebHook c самописным сертификатом на raspberry pi

GO bot
если берем этого бота(echo) и подсовываем сертификаты все сразу работает и ошибок не выдает…



Офлайн

#8 Март 12, 2016 04:30:56

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

Не работает WebHook c самописным сертификатом на raspberry pi

Напиши везде полные, абсолютные пути к сертификатам. Сами сертификаты на время положи в папку, доступную для всех приложений (например /tmp).

Jeck290
http_server = HTTPServer(application, ssl_options={'certfile': 'webhook_cert.pem', 'keyfile': 'webhook_pkey.pem'})
Во всех таких местах полные пути к файлам должны стоять.



Отредактировано py.user.next (Март 12, 2016 04:32:55)

Офлайн

#9 Март 12, 2016 09:33:30

Jeck290
От:
Зарегистрирован: 2010-01-03
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

Не работает WebHook c самописным сертификатом на raspberry pi

Я смотрел код сервера там были строки существуют ли ключ и сертификат по указанному пути если нет то ошибка. Попробовал как ты сказал, абсолютные пути + общедоступные папки например /tmp , неа все тоже самое (((



Офлайн

#10 Март 12, 2016 12:56:27

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

Не работает WebHook c самописным сертификатом на raspberry pi

По этой документации попробуй.
Там нужно создать контекст, заполнить его и передать.

ssl_ctx = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
ssl_ctx.load_cert_chain(os.path.join(data_dir, "mydomain.crt"),
                        os.path.join(data_dir, "mydomain.key"))
HTTPServer(applicaton, ssl_options=ssl_ctx)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version