Thank you for your reply. > This is a somewhat-known issue that I’ve had bubbling on the backburner for > some time. For a long time PyOpenSSL didn’t automatically load all EC curves > and didn’t provide any API to do so, so Twisted told OpenSSL which curve to > use. Some time ago PyOpenSSL changed this behaviour to automatically load all > curves, which would resolve this issue. This, I understand so far.
> The most comprehensive fix here is to do some history spelunking in PyOpenSSL > to find out what the lowest version is that has this code block[1] in it, and > then only execute the current ecCurve logic if that code block doesn’t appear > to have worked. I don't really get what implies this to me and how I can come around with this issue. What do you mean with "only execute the current ecCurve logic..."? How can this be done? I have the current versions of Twisted and pyOpenSSL running, so how can I make sure that the latter loads the right curve properly? Thank you! > On 24 Aug 2017, at 20:40, Thomas Hartwich <ceebor...@gmx.de> wrote: > > I think I now know why it is not working. As I initially suspected that ECC > could be the reasons, it seems to have come true. No matter what kind of ECC > curve I use, the current implementation of Twisted always uses prime256v1 > curve. Maybe because pyOpenSSL hasn't got full ECC support currently!? (got > it from some comments in _sslverify.py) > > In my setting I use secp521r1 curve and for testing purpose I created a key > pair of prime256v1 and this works with CertificateOptions. If you have a look > at the implementations of twisted.internet._sslverify you will see that > prime256v1 is always used as default curve and it seems that no other curve > is being accepted. This should be the reason why CertificateOptions does not > work for my ECC key. > > But somehow it works even with secp521r1, if I use the > DefaultOpenSSLContextFactory. So do you know any workaround how it can be > fixed that twisted accepts other curves than prime256v1? > > Thank you! > > > Gesendet: Mittwoch, 23. August 2017 um 06:21 Uhr > Von: Glyph <gl...@twistedmatrix.com> > An: "Twisted general discussion" <twisted-python@twistedmatrix.com> > Betreff: Re: [Twisted-Python] SSLContext not valid for TLS Server > > > > On Aug 22, 2017, at 9:16 AM, Thomas Hartwich > <ceebor...@gmx.de[mailto:ceebor...@gmx.de]> wrote: > > Yes, you're right for sure. As an alternative I tried to instantiate an > object from twisted.internet._sslverify.OpenSSLCertificateOptions (as it is > used by PrivateCertificate e.g.): > > co = OpenSSLCertificateOptions(privateKey=pkey,certificate=cert_obj) > > Please note that importing names with "._" in them is relying on private API > :). The public alias for this is `twisted.internet.ssl.CertificateOptions` > https://twistedmatrix.com/documents/17.5.0/api/twisted.internet.ssl.CertificateOptions.html[https://twistedmatrix.com/documents/17.5.0/api/twisted.internet.ssl.CertificateOptions.html][https://twistedmatrix.com/documents/17.5.0/api/twisted.internet.ssl.CertificateOptions.html[https://twistedmatrix.com/documents/17.5.0/api/twisted.internet.ssl.CertificateOptions.html]] > > Despite it provides a SSL-context, it does not work similarly to the > options() method I tried before from PrivateCertificate(). > > Can you tell me how I can make use of IOpenSSLServerConnectionCreator to > create a valid SSL-Context for the TLS server in my case? > > You should probably just use CertificateOptions - I still would like to > understand why it doesn't work ;-). > > https://twistedmatrix.com/documents/17.5.0/api/twisted.internet.interfaces.IOpenSSLServerConnectionCreator.html[https://twistedmatrix.com/documents/17.5.0/api/twisted.internet.interfaces.IOpenSSLServerConnectionCreator.html][https://twistedmatrix.com/documents/17.5.0/api/twisted.internet.interfaces.IOpenSSLServerConnectionCreator.html[https://twistedmatrix.com/documents/17.5.0/api/twisted.internet.interfaces.IOpenSSLServerConnectionCreator.html]] > is documented here; this is just the interface you should implement (rather > than subclassing ContextFactory and implementing getContext) if you want to > do something totally custom with the OpenSSL API rather than Twisted's API; > I'd still rather understand why Twisted's API, i.e. CertificateOptions, > doesn't work for you. > > -glyph > > Thank you! > > > Gesendet: Sonntag, 20. August 2017 um 22:36 Uhr > Von: Glyph <gl...@twistedmatrix.com[mailto:gl...@twistedmatrix.com]> > An: "Twisted general discussion" > <twisted-python@twistedmatrix.com[mailto:twisted-python@twistedmatrix.com]> > Betreff: Re: [Twisted-Python] SSLContext not valid for TLS Server > > > > On Aug 20, 2017, at 9:30 AM, Thomas Hartwich > <ceebor...@gmx.de[mailto:ceebor...@gmx.de][mailto:ceebor...@gmx.de[mailto:ceebor...@gmx.de]]> > wrote: > Ok, I finally got a solution for my problem. As I know, the TLS server was > working with DefaultOpenSSLContextFactory but this only takes file paths to > private key/certificate, I created my own SSL-Context file. > > For anybody who has the same problem: > Please note that this solution will prevent the use of TLS 1.3 when it is > available, among other problems. > > DefaultOpenSSLContextFactory should be deprecated (I hope someone has the > time to do it soon), as is the 'getContext' interface that you're using (you > should be using > https://twistedmatrix.com/documents/17.5.0/api/twisted.internet.interfaces.IOpenSSLServerConnectionCreator.html[https://twistedmatrix.com/documents/17.5.0/api/twisted.internet.interfaces.IOpenSSLServerConnectionCreator.html][https://twistedmatrix.com/documents/17.5.0/api/twisted.internet.interfaces.IOpenSSLServerConnectionCreator.html[https://twistedmatrix.com/documents/17.5.0/api/twisted.internet.interfaces.IOpenSSLServerConnectionCreator.html][https://twistedmatrix.com/documents/17.5.0/api/twisted.internet.interfaces.IOpenSSLServerConnectionCreator.html[https://twistedmatrix.com/documents/17.5.0/api/twisted.internet.interfaces.IOpenSSLServerConnectionCreator.html][https://twistedmatrix.com/documents/17.5.0/api/twisted.internet.interfaces.IOpenSSLServerConnectionCreator.html[https://twistedmatrix.com/documents/17.5.0/api/twisted.internet.interfaces.IOpenSSLServerConnectionCreator.html]]] > ) so it would be really good to understand what part of the non-deprecated > TLS stack is broken for you. > > -glyph_______________________________________________ Twisted-Python mailing > list > Twisted-Python@twistedmatrix.com[mailto:Twisted-Python@twistedmatrix.com] > https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python[https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python][https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python[https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python]] > > _______________________________________________ > Twisted-Python mailing list > Twisted-Python@twistedmatrix.com[mailto:Twisted-Python@twistedmatrix.com] > https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python[https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python] > _______________________________________________ Twisted-Python mailing list > Twisted-Python@twistedmatrix.com > https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python[https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python][https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python[https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python]] > > _______________________________________________ > Twisted-Python mailing list > Twisted-Python@twistedmatrix.com > https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python[https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python] _______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python[https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python] _______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python