python - 在文件中要求输入使用带有文件内容的字符串

标签 python python-2.7 ssl

<分区>


想改进这个问题吗? 通过 editing this post 添加细节并澄清问题.

关闭 8 年前

import socket, os
from SocketServer import BaseServer
from BaseHTTPServer import HTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler
import ssl

class SecureHTTPServer(HTTPServer):

    def __init__(self, server_address, HandlerClass):
        BaseServer.__init__(self, server_address, HandlerClass)

        self.socket = ssl.SSLSocket(
            socket.socket(self.address_family, self.socket_type),
            keyfile = 'path\\server.key',
            certfile = 'path\\server.crt'
        )

        self.server_bind()
        self.server_activate()

class SecureHTTPRequestHandler(SimpleHTTPRequestHandler):  

    def do_GET(self):
        #Here process response

def startServer(HandlerClass = SecureHTTPRequestHandler,
         ServerClass = SecureHTTPServer):

    server_address = ('', 8880) 
    httpd = ServerClass(server_address, HandlerClass)
    sa = httpd.socket.getsockname()
    print "Serving HTTPS on", sa[0], "port", sa[1], "..."
    httpd.serve_forever()

class MainServer:   

    def __init__(self): 
        #All starts here    
        startServer()

我有这段代码来启动 web 服务器,它是 ssl,实际代码从系统路径获取证书和 key ,但为了安全起见,我想将 key 和证书存储在一个字符串中,并且我想从中解析为构造函数不使用临时文件的字符串。

server = "Server cert here ******"    
key = "Server key here ******"

如何在第一段代码中使用这些变量?

最佳答案

正在检查 ssl.py 的来源证书是从带有 SSLContext.load_cert_chain() 的 SSL 上下文加载的文档指出需要 key 文件和证书文件的路径。我看不出有什么办法可以改为传递字符串或类似文件的对象。

引用的代码来自 Python 2.7.9,其中包括来自 Python 3.4 的 ssl 模块的反向移植,但对于早期的 2.7.x 版本,情况是相同的。

您可以使用临时文件,但您不想这样做。您可以使用命名管道,但这会很困惑。

但是,既然您要分发服务器,我想知道您为什么需要这样做。为什么不让用户为他们的服务器生成并安装证书和 key ?自签名可能可以,但如果需要,他们可以让官方 CA 对其进行签名。

关于python - 在文件中要求输入使用带有文件内容的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30368446/

上一篇:security - Windows 7 上的 Firefox 出现奇怪的安全错误

下一篇:java - 2 种方式的 SSL 身份验证无法使用 Apache httpclient : JAVA

相关文章:

python - 如何优化python postgresql查询300万条记录

python - 使用 Python 从列表中进行多项选择

python - 在数据子集上运行但在原始数据上完美运行时出现 h2o 错误

python - 用 Python 计算元组的出现次数

python - 为什么 getattr() 比 self.__dict__.get() 慢那么多?

ssl - curl 错误 35 : unknown SSL protocol error in connection

python - 如何使用初始化程序来设置我的多进程池?

python - 在 Python 中使用兰伯特函数时的 NaN 值 - 在 Enthought Canopy 中

java - 如何检查天气客户端是否在 java 中使用 PoolingHttpClientConnectionManager

facebook - 如果您无法支付 SSL 证书费用,您有什么可以做的吗?