Twisted Python中的TLS - 如何创建server.pem?

时间:2014-09-17 15:34:21

标签: python ssl cryptography twisted

我刚刚在Python中发现了Twisted,并且一直在查看此处找到的echoserv_ssl.py示例:https://twistedmatrix.com/documents/14.0.0/core/howto/ssl.html。在示例代码的正上方,页面引用"以下示例依赖于文件server.pem(私钥和自签名证书一起)和public.pem(服务器的公共证书本身)。"

因此,当谈到SSL证书和密钥时,我做了一些新手,我做了一些研究,发现http://www.thegeekscope.com/how-to-generate-self-signed-ssl-certificate-in-linux/

我按照那里的说明,将我的echoserv_ssl.py指向创建的文件(步骤3)。但是,与我们系统本地的任何证书文件一起,似乎产生了同样的错误:

# python echoserv_ssl.py
2014-09-17 15:12:54+0000 [-] Log opened.
2014-09-17 15:12:54+0000 [-] Traceback (most recent call last):
2014-09-17 15:12:54+0000 [-]   File "echoserv_ssl.py", line 23, in <module>
2014-09-17 15:12:54+0000 [-]     task.react(echoserv_ssl.main)
2014-09-17 15:12:54+0000 [-]   File "/usr/lib64/python2.6/site-packages/twisted/internet/task.py", line 875, in react
2014-09-17 15:12:54+0000 [-]     finished = main(_reactor, *argv)
2014-09-17 15:12:54+0000 [-]   File "/root/Robot/Twisted/echoserv_ssl.py", line 16, in main
2014-09-17 15:12:54+0000 [-]     certificate = ssl.PrivateCertificate.loadPEM(certData)
2014-09-17 15:12:54+0000 [-]   File "/usr/lib64/python2.6/site-packages/twisted/internet/_sslverify.py", line 619, in loadPEM
2014-09-17 15:12:54+0000 [-]     return Class.load(data, KeyPair.load(data, crypto.FILETYPE_PEM),
2014-09-17 15:12:54+0000 [-]   File "/usr/lib64/python2.6/site-packages/twisted/internet/_sslverify.py", line 725, in load
2014-09-17 15:12:54+0000 [-]     return Class(crypto.load_privatekey(format, data))
2014-09-17 15:12:54+0000 [-]   File "build/bdist.linux-x86_64/egg/OpenSSL/crypto.py", line 2010, in load_privatekey
2014-09-17 15:12:54+0000 [-]   File "build/bdist.linux-x86_64/egg/OpenSSL/_util.py", line 22, in exception_from_error_queue
2014-09-17 15:12:54+0000 [-] OpenSSL.crypto.Error: []

这个相当空的错误代码对我来说似乎没什么用处。谁能解释我哪里出错?

谢谢!

1 个答案:

答案 0 :(得分:3)

有许多方法可以做到这一点,因为您可能已经注意到了。

巧合的是,我必须在几天前生成密钥和自签名证书。我决定保存代码(并将其检入Twisted)而不是丢失它,并且必须在以后重新创建它。也许它会对你有所帮助:

https://twistedmatrix.com/trac/browser/trunk/twisted/test/server.pem

正如我所提到的,这是从唯一的方式做到这一点,也可能不是最好的方式。但是,我确信它有效(最终的证书用于Twisted的TLS测试套件)。

请注意,该文件是一个可运行的Python程序(运行它会生成一个新密钥和证书)一个包含私钥和证书的可加载pem文件。