首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python2.7 CGIHTTPServer的HTTPS

使用Python2.7 CGIHTTPServer的HTTPS
EN

Stack Overflow用户
提问于 2017-05-22 05:03:28
回答 1查看 1.1K关注 0票数 0

我已经使用Python2.7 CGIHTTPServer运行了一个web服务。太棒了。它很轻。但是,我现在要求它使用HTTPS和我拥有的证书。关于如何做到这一点的指导很少。实际上,我为Python2.7找到了一篇文章。

我的问题很简单,很狭窄。给出了下面的说明,如何启动它?--我已经有了一个基于事务的python脚本。你叫它,它会处理你的请求。它需要SSL。

https://blog.farville.com/15-line-python-https-cgi-server

这需要一个目录结构:

代码语言:javascript
复制
/ssl_server.py
/localhost.pem
/html/index.html   html lives here, aka “root directory”
/html/cgi/         python scripts live here

使用openssl制作的自签名SSL证书如下:

代码语言:javascript
复制
openssl req -x509 -sha256 -newkey rsa:2048 -keyout localhost.pem \
-out localhost.pem -days 3650 -nodes

ssl_server.py:

代码语言:javascript
复制
#!/usr/bin/env python
import os, sys
import BaseHTTPServer
import CGIHTTPServer
import cgitb; cgitb.enable() ## This line enables CGI error reporting
import ssl
server = BaseHTTPServer.HTTPServer
handler = CGIHTTPServer.CGIHTTPRequestHandler
server_address = ("", 8443)
handler.cgi_directories = ["/cgi"]
os.chdir("html")
srvobj = server(server_address, handler)
srvobj.socket = ssl.wrap_socket (srvobj.socket, certfile="../localhost.pem", server_side=True)
# Force the use of a subprocess, rather than
# normal fork behavior since that doesn't work with ssl
handler.have_fork=False
srvobj.serve_forever()

,那么现在怎么办?,请记住,我有另一个已经成功处理web请求的python。

EN

回答 1

Stack Overflow用户

发布于 2019-09-15 04:27:40

我在cert文件旁边添加了keyfile,并执行了python ssl_server.py,它工作了。

代码语言:javascript
复制
srvobj.socket = ssl.wrap_socket (srvobj.socket, certfile="/etc/letsencrypt/live/myowndomain.com/cert.pem", keyfile="/etc/letsencrypt/live/myowndomain.com/privkey.pem" server_side=True)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44104977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档