2017-10-02 4 views
0

alors je suis ce serveur https de l'Internet et je créé le certificat et le fichier clé avec cette commande:Https serveur commence toujours

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 

Et voici mon code (Python 3):

import ssl 
from http.server import BaseHTTPRequestHandler, HTTPServer 


class testHTTPServer_RequestHandler(BaseHTTPRequestHandler): 
    # GET 
    def do_GET(self): 
     # Send response status code 
     self.send_response(200) 

     # Send headers 
     self.send_header('Content-type', 'text/html') 
     self.end_headers() 

     # Send message back to client 
     message = "Hello world!" 
     # Write content as utf-8 data 
     self.wfile.write(bytes(message, "utf8")) 
     return 


def run(): 
    print('starting server...') 
    server_address = ('127.0.0.1', 1234) 
    httpd = HTTPServer(server_address, testHTTPServer_RequestHandler) 
    httpd.socket = ssl.wrap_socket(httpd.socket, certfile='cert.pem',keyfile='key.pem', server_side=True) 
    print('running server...') 
    httpd.serve_forever() 


run() 

Mais chaque fois que j'exécute ce code, il s'arrête au 'serveur de démarrage ...'
Qu'est-ce que je fais mal?

+0

Votre keyfile a-t-il un mot de passe? – allo

+0

Oui, lors de la création des certificats, j'ai ajouté un. Pourtant, je ne sais pas quel est le problème. – alex

+0

Je ne peux pas tester ici maintenant, mais est-ce que le serveur vous a demandé le mot de passe? Faites l'inverse: créez un certificat/une clé avec le paramètre '' -nodes'' et testez si cela fonctionne. – allo

Répondre

0

Votre clé a été générée avec une phrase secrète et le serveur ne peut pas la lire sans la phrase de passe correcte. Vous devez soit utiliser le module ssl d'une manière, soit déverrouiller la clé avec la phrase secrète, soit utiliser une clé sans mot de passe, c'est-à-dire générée avec le paramètre -nodes.