我目前正在使用以下代码生成本地https服务器
生成crt
openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes
server.py
import os
import BaseHTTPServer, SimpleHTTPServer
import ssl
import sys
cdir = os.getcwd()
os.chdir(cdir)
httpd = BaseHTTPServer.HTTPServer(('', 443), SimpleHTTPServer.SimpleHTTPRequestHandler)
httpd.socket = ssl.wrap_socket (httpd.socket, certfile='./server.pem', server_side=True)
httpd.serve_forever()
当我用我的嵌入式设备连接到它时,我收到错误
mbedtls_ssl_handshake failed
==> The certificate Common Name (CN) does not match with the expected CN
我怎样才能克服这个问题?
1
好吧,您的证书CN必须与您在浏览器中导航到的URL中的域匹配,否则您将收到名称不匹配错误。
—
弗兰克托马斯
所以在本地环境中我应该使用http:// local_ip /或只是“localp_ip”或“https:// local_ip”?
—
user217354
如果您导航到IP地址,则无法避免CN不匹配。它必须是一个域名。
—
弗兰克托马斯
你知道如何设置一个可用于该python服务器脚本的本地DNS吗?
—
user217354
从网站的角度来看,DNS是一种外部现象。该站点必须正在侦听服务器IP,因此请确保DNS服务器(我在LAN上使用Bind)知道服务器IP在给定名称下。如果您的手机在LAN上使用DNS服务器(使用无线上的DHCP推送它),您可以使用DNS名称将浏览器指向该站点。该名称是需要在您的证书中注册的名称。当然,这仅适用于局域网内部,但相同的原则适用于公共主机。
—
弗兰克托马斯