• [^] # Re: let's encrypt !

    Posté par . En réponse à la dépêche Libervia/Salut à Toi 0.6.0 : nouvelle vague. Évalué à 3.

    il est possible qu'on ait mal géré un argument

    Je ne suis pas familier de Twisted, mais ça ressemble plus à un problème de code qu’à une simple question d’arguments.

    Le code qui charge le certificat est la ligne suivante (fichier src/server/server.py) :

    cert = ssl.PrivateCertificate.loadPEM(keyAndCert.read())
    

    et je n’ai pas l’impression, à voir la documentation de Twisted, que cette fonction loadPEM prenne en compte les éventuels certificats intermédiaires contenu dans le fichier.

    Une possibilité semble être de passer par un ContextFactory personnalisé :

    from twisted.internet.ssl import DefaultOpenSSLContextFactory
    from OpenSSL import SSL
    class CustomSSLContextFactory(DefaultOpenSSLContextFactory):
     def __init__(self, private_key_file, chain_file):
     self._context = SSL.Context(SSL.TLSv1_METHOD)
     self._context.use_certificate_chain_file(chain_file)
     self._context.use_privatekey_file(private_key_file)
    

    et de l’utiliser à la place de cert.options() dans l’appel à listenSSL :

    reactor.listenSSL(self.port_https, self.site, CustomSSLContextFactory("server_private_key.pem", "server_certificate_chain.pem"))
    

    Du moins, c’est le principe. Je n’ai pas d’installation fonctionnelle de SàT/Libervia pour tester, sinon j’aurais envoyé un patch en bonne et due forme.