在文件中要求输入使用带有文件内容的字符串
In file required input use string with file content
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,实际代码从系统路径获取证书和密钥,但为了安全起见,我想将密钥和证书存储在一个字符串中,我想解析为构造函数从字符串中运行而不使用临时文件。
server = "Server cert here ******"
key = "Server key here ******"
如何在第一段代码中使用这些变量?
检查 ssl.py
the certificate is loaded from a SSL context with SSLContext.load_cert_chain()
的来源,文档指出需要密钥文件和证书文件的路径。我看不出有什么办法可以改为传递字符串或类似文件的对象。
引用的代码来自 Python 2.7.9,其中包含来自 Python 3.4 的 ssl
模块的反向移植,但情况与早期 2.7.x 个版本。
您可以使用临时文件,但您不想这样做。您可以使用命名管道,但这会很麻烦。
但是,既然您要分发服务器,我想知道您为什么需要这样做。为什么不让用户为他们的服务器生成并安装证书和密钥?自签名可能会,但如果需要,他们可以让官方 CA 签名。
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,实际代码从系统路径获取证书和密钥,但为了安全起见,我想将密钥和证书存储在一个字符串中,我想解析为构造函数从字符串中运行而不使用临时文件。
server = "Server cert here ******"
key = "Server key here ******"
如何在第一段代码中使用这些变量?
检查 ssl.py
the certificate is loaded from a SSL context with SSLContext.load_cert_chain()
的来源,文档指出需要密钥文件和证书文件的路径。我看不出有什么办法可以改为传递字符串或类似文件的对象。
引用的代码来自 Python 2.7.9,其中包含来自 Python 3.4 的 ssl
模块的反向移植,但情况与早期 2.7.x 个版本。
您可以使用临时文件,但您不想这样做。您可以使用命名管道,但这会很麻烦。
但是,既然您要分发服务器,我想知道您为什么需要这样做。为什么不让用户为他们的服务器生成并安装证书和密钥?自签名可能会,但如果需要,他们可以让官方 CA 签名。