Вообщем сервер такой
| Код | # -*- coding: cp1251 -*- import socket, os from SocketServer import BaseServer from BaseHTTPServer import HTTPServer from SimpleHTTPServer import SimpleHTTPRequestHandler from M2Crypto import SSL
class SecureHTTPServer(HTTPServer): def __init__(self, server_address, HandlerClass): try: BaseServer.__init__(self, server_address, HandlerClass) ctx = SSL.Context() if ctx.load_verify_locations('C:\Users\Илья\Desktop\SSL\cert\ca.crt') != 1: raise Exception('No CA certs') ctx.set_verify(SSL.verify_peer|SSL.verify_fail_if_no_peer_cert, depth = 9) fcert = 'C:\Users\Илья\Desktop\SSL\cert\server.crt' fkey='C:\Users\Илья\Desktop\SSL\cert\server.key' ctx.load_cert(certfile=fcert,keyfile=fkey) self.socket = SSL.Connection(ctx, socket.socket(self.address_family,self.socket_type)) self.server_bind() self.server_activate() except: print "Error in Server" class SecureHTTPRequestHandler(SimpleHTTPRequestHandler): def setup(self): self.connection = self.request self.rfile = socket._fileobject(self.request, "rb", self.rbufsize) self.wfile = socket._fileobject(self.request, "wb", self.wbufsize)
def start(HandlerClass = SimpleHTTPRequestHandler, ServerClass = SecureHTTPServer): server_address = ('', 443) # (address, port) httpd = ServerClass(server_address, HandlerClass) sa = httpd.socket.getsockname() print "Serving HTTPS on", sa[0], "port", sa[1], "..." print `socket.gethostbyname('Илья-ПК')` try: httpd.serve_forever() except: print "Error in <forever>"
if __name__ == '__main__': start()
|
При попытке обратиться через браузер вылетает ошибка: Traceback (most recent call last): File "C:\Users\Илья\Desktop\HTTPS (2).py", line 46, in <module> test() File "C:\Users\Илья\Desktop\HTTPS (2).py", line 42, in test httpd.serve_forever() File "D:\Python26\lib\SocketServer.py", line 226, in serve_forever self._handle_request_noblock() File "D:\Python26\lib\SocketServer.py", line 276, in _handle_request_noblock request, client_address = self.get_request() File "D:\Python26\lib\SocketServer.py", line 444, in get_request return self.socket.accept() File "D:\Python26\lib\site-packages\M2Crypto\SSL\Connection.py", line 161, in accept ssl.accept_ssl() File "D:\Python26\lib\site-packages\M2Crypto\SSL\Connection.py", line 150, in accept_ssl return m2.ssl_accept(self.ssl) SSLError: unexpected eof
Все сертификаты в браузере есть ,выдает окно с выбором сертификата клиента, но сервер уже вылетел. Если писать клиента в другом скрипте все работает, т.е. запрос выполняет и возвращает страницу. |