我刚刚在 Python 中发现了 Twisted,并且一直在查看 echoserv_ssl.py 示例,如下所示:https://twistedmatrix.com/documents/14.0.0/core/howto/ssl.html .在示例代码上方,页面引用“以下示例依赖于文件 server.pem(私钥和自签名证书一起)和 public.pem(服务器本身的公共(public)证书)。”
因此,作为 SSL 证书和 key 方面的新手,我做了一些研究,并找到了 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: []
这个相当空的错误代码对我来说似乎没有那么有用。谁能解释我哪里出错了?
谢谢!
最佳答案
您可能已经注意到,有很多方法可以做到这一点。
巧合的是,就在几天前,我不得不生成一个 key 和自签名证书。我决定保存代码(并将其 checkin 到 Twisted 中)而不是将其丢失并在以后重新创建它。也许它会对你有所帮助:
https://github.com/twisted/twisted/blob/trunk/src/twisted/test/server.pem
编辑:感谢@glaucon 发布更新后的链接。
正如我所提到的,这不是唯一的方法远,也可能不是最好的方法。但是,我确信它有效(生成的证书用于 Twisted 的 TLS 测试套件)。
请注意,该文件是一个可运行的 Python 程序(运行它会生成一个新的 key 和证书)和一个包含私钥和证书的可加载 pem 文件。
关于python - Twisted Python 中的 TLS - 如何创建 server.pem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25894763/