Найти - Пользователи
Полная версия: Twisted SSL
Начало » Network » Twisted SSL
1
1q1
Не получается написать клиента для подключения по https к серверу.
Для подключения мне прислали ключи:
1. *.cer
2. *.pfx
При экспорте *.pfx винда запрашивает пароль (пароль у меня есть).
Установил сертификат, набрал адрес https в браузере, сервер выдал запрос на сертификат, указал только что проэкспортированный - зашёл. Т.е. сервер работает, сертификат верный.
За основу взял пример echoclient_ssl.py с оф. сайта: http://twisted.readthedocs.org/en/latest/core/examples/index.html

Единственное, в примере используется *.pem сертификат, поэтому мне пришлось переконвертировать свой *.pfx в *.pem с помощью команды:
C:\OpenSSL-Win32\bin>openssl pkcs12 -in c:\cert\key.pfx -out c:\cert\key.pem

При запуске примера выдаётся следующая ошибка:
main function encountered error
Traceback (most recent call last):
Failure: twisted.internet.error.ConnectionRefusedError: Connection was refused by other side: 10061: ╧юфъы■ўхэшх эх єёЄрэютыхэю, Є.ъ. ъюэхўэ√щ ъюья№■Єх
Ё юЄтхЁу чряЁюё эр яюфъы■ўхэшх..

Т.е. аутентификация не проходит. Буду благодарен за любую помощь.
1q1
Предполагаю, что проблема в том, что не указан пароль к сертификату. Так и не нашёл как заставить twisted считать пароль.
Если упрощённо, то твистед должен сделать это:
OpenSSL s_client -connect host:port -cert сертификат.pem -pass pass:пароль
Поможете?
plusplus
1q1
Поможете?
Вряд ли строчка из моего приложения поможет, но на всякий случай дам её:
reactor.listenSSL(config.ws_port, site,
                          ssl.DefaultOpenSSLContextFactory(
                            'f.key',
                            'f.crt')
                          )
1q1
plusplus
Спасибо!
Решил самостоятельно, но смысл тот же:
class CtxFactory(ssl.ClientContextFactory):
    def getContext(self, hostname, port):
        ctx = ssl.ClientContextFactory.getContext(self)
        ctx.use_certificate_file('key/key.pem')
        ctx.use_privatekey_file('key/key.pem')
        return ctx
key.pem это сконвертированные открытый и закрытый ключ со скинутым паролем. Может кому-нибудь пригодится.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB