我刚刚在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: []
这个相当空的错误代码对我来说似乎没什么用处。谁能解释我哪里出错?
谢谢!
答案 0 :(得分:3)
有许多方法可以做到这一点,因为您可能已经注意到了。
巧合的是,我必须在几天前生成密钥和自签名证书。我决定保存代码(并将其检入Twisted)而不是丢失它,并且必须在以后重新创建它。也许它会对你有所帮助:
https://twistedmatrix.com/trac/browser/trunk/twisted/test/server.pem
正如我所提到的,这是远从唯一的方式做到这一点,也可能不是最好的方式。但是,我确信它有效(最终的证书用于Twisted的TLS测试套件)。
请注意,该文件是一个可运行的Python程序(运行它会生成一个新密钥和证书)和一个包含私钥和证书的可加载pem文件。