Уведомления

Группа в Telegram: @pythonsu

#1 Май 5, 2009 11:59:55

ice
От:
Зарегистрирован: 2008-01-12
Сообщения: 156
Репутация: +  0  -
Профиль   Отправить e-mail  

OpenSSL. Как установить соединение?

Доброго времени суток.
У меня есть тестовый ssl сервер. Сервер не мой. Запускается с ключами:
testssl -cacertfile=<какой-то файл> -certfile=<какой-то файл> -keyfile=<…> -keypass<…>

К нему шли файлы server.pem и client.pem

Работало так:
testssl -cacertfile=server.pem -certfile=server.pem -keyfile=server.pem -port=8888

Код клиента на питоне (2.6 версии):

from socket import socket
import ssl

s = socket()
c = ssl.wrap_socket(s, cert_reqs=ssl.CERT_REQUIRED, ssl_version=ssl.PROTOCOL_SSLv3, ca_certs='client.pem')
c.connect(('localhost', 8888))
cert = c.getpeercert()
print cert
c.write('dsafsadfasfsafads')
c.close()
s.close()
Сервер кидал на консоль строку: dsafsadfasfsafads
Клиент выдавал сведения о сертификате.

Теперь сервер говорит, что срок годности клиента истек.
Ладно, достал openssl и пытался насоздать сам файлов для сервера и клиента, но на любые попытки и любые файлы, или сервер ругается, что они невалидные, или клиент выкидывает такое:
Traceback (most recent call last):
File "D:\projects\sslclient.py", line 6, in <module>
c.connect(('localhost', 8888))
File "D:\Python26\lib\ssl.py", line 309, in connect
self.do_handshake()
File "D:\Python26\lib\ssl.py", line 293, in do_handshake
self._sslobj.do_handshake()
ssl.SSLError: [Errno 1] _ssl.c:480: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
а иногда такое:
Traceback (most recent call last):
File "D:\projects\sslclient.py", line 6, in <module>
c.connect(('localhost', 8888))
File "D:\Python26\lib\ssl.py", line 309, in connect
self.do_handshake()
File "D:\Python26\lib\ssl.py", line 293, in do_handshake
self._sslobj.do_handshake()
ssl.SSLError: [Errno 1] _ssl.c:480: error:14094410:SSL routines:SSL3_READ_BYTES: sslv3 alert handshake failure
Я точно знаю, что server.pem и client.pem созданы так же в openssl и являются self-signed.

Вопрос: Как создать подобные файлы для сервера и клиента?
пробовал:
http://www.octaldream.com/~scottm/talks/ssl/opensslca.html
http://blog.taragana.com/index.php/archive/openssl-how-to-create-self-signed-certificate/ru/
http://www.dylanbeattie.net/docs/openssl_iis_ssl_howto.html
В общем:
http://www.google.ru/search?hl=ru&client=firefox-a&rls=org.mozilla%3Aru%3Aofficial&hs=2Zu&q=openssl+Generate+certificate+authority+using+openssl&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=

CA.pl -newca
CA.pl -newreq
CA.pl -sign

Не подходят вообще никак.
Или: есть толковая дока по openSSL? Из серии “для чайников”, чтоб с самого начала, что, где и как применяется, что это за файлы сервера (cacertfile certfile keyfile) и что надо указывать в качестве сертификата клиенту.

Неделю уже не могу достучаться до сервера.



Отредактировано (Май 5, 2009 12:07:49)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version