创建一个简单的HTTPS服务器
我从下面位置复制代码:创建一个简单的HTTPS服务器
https://www.piware.de/2011/01/creating-an-https-server-in-python/
而且创造了新的PEM文件象下面这样:
sh-3.2# openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 10
Generating a 2048 bit RSA private key
.......................+++
...............................+++
writing new private key to 'key.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:US
State or Province Name (full name) [Berkshire]:CA
Locality Name (eg, city) [Newbury]:CA
Organization Name (eg, company) [My Company Ltd]:Test
Organizational Unit Name (eg, section) []:Test
Common Name (eg, your name or your server's hostname) []:mybox.com
Email Address []:[email protected]
它创造了2个文件cert.pem和key.pem。所以,我最后的代码是:
import BaseHTTPServer, SimpleHTTPServer
import ssl
httpd = BaseHTTPServer.HTTPServer(('localhost', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)
httpd.socket = ssl.wrap_socket (httpd.socket, certfile='/myhome/cert.pem', server_side=True)
httpd.serve_forever()
,我跑我的程序:
python myserver.py
但是,当我尝试从浏览器访问它:
https://mybox.com:4443
我无法建立连接但是当我尝试像下面这样:
python -m SimpleHTTPServer 4443
然后尝试通过浏览器访问我得到下面的错误:
An error occurred during a connection to mybox.com:4443. SSL received a record that exceeded the maximum permissible length. Error code: SSL_ERROR_RX_RECORD_TOO_LONG
我打算做一个简单的HTTPS服务器。请让我知道我该如何解决这个问题?更新========================= ========
我复制了key.pem文件cert.pem
cat key.pem >> cert.pem
现在,当我把我的服务器:
python ./try.py
和命中URL
https://mybox.com:15368/
我看到浏览器状态“连接到mybox.com:4443“但不断等待响应页面。虽然在框我看到下面的输出中:
# python try.py
Enter PEM pass phrase:
Enter PEM pass phrase:
Enter PEM pass phrase:
Enter PEM pass phrase:
Enter PEM pass phrase:
Enter PEM pass phrase:
Enter PEM pass phrase:
Enter PEM pass phrase:
Enter PEM pass phrase:
Enter PEM pass phrase:
Enter PEM pass phrase:
Enter PEM pass phrase:
我需要不断进入,我在创建的证书和PEM文件
我假设你使用相同的密码短语有mybox.com在设置您的主机文件,但您需要包含端口。 HTTPS默认尝试访问443。你需要指定端口
HTTPS://mybox.com:4443
请改变你的最后第二行如下 - 添加密钥文件,然后再试一次。它的工作原理在我身边(Ubuntu的,python2.7)
httpd.socket = ssl.wrap_socket (httpd.socket, certfile='cert.pem', server_side=True, **keyfile="key.pem"**)
文件“try.py”,第6行 httpd.socket = ssl。语法错误:无效语法 Python 2.7.3(默认2013年2月7日, 12:12:45) – Prakash
嗨我的Python版本是Python 2.7.6(默认,2015年6月22日,17:58:13) –
是其在/ etc/hosts文件中有和访问同样的方式https://mybox.com:4443 - 更新了我的问题 – Prakash
您certFile中的位置你应该包括'。'为当前目录或实际上是在根? certfile ='。/ myhome/cert.pem' –
路径是正确的只有我使用了绝对路径和相对路径 – Prakash