如何在使用python的https服务器中查找/设置我的CN名称?


0

我目前正在使用以下代码生成本地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名称将浏览器指向该站点。该名称是需要在您的证书中注册的名称。当然,这仅适用于局域网内部,但相同的原则适用于公共主机。
弗兰克托马斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.