Obecnie używam następującego kodu do wygenerowania lokalnego serwera https
wygenerować 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()
po podłączeniu do niego za pomocą urządzenia osadzonego pojawia się błąd
mbedtls_ssl_handshake failed
==> The certificate Common Name (CN) does not match with the expected CN
Jak mogę rozwiązać ten problem?
1
cóż, twój certyfikat CN musi pasować do domeny w adresie URL, do którego nawigujesz w przeglądarce, w przeciwnym razie otrzymasz błędy niedopasowania nazwy.
Frank Thomas
Czy w środowisku lokalnym powinienem używać http: // local_ip / lub po prostu „localp_ip” lub „https: // local_ip”?
user217354,
nie będzie można uniknąć niedopasowania CN, jeśli nawigujesz do adresu IP. to musi być nazwa domeny.
Frank Thomas
Czy wiesz, jak ustawić obsługę lokalnego DNS za pomocą tego skryptu serwera python?
user217354,
DNS jest zjawiskiem zewnętrznym z perspektywy stron internetowych. Witryna musi nasłuchiwać na adresie IP serwera, więc po prostu upewnij się, że adres IP serwera jest znany przez serwer DNS (używam Bind w mojej sieci LAN) pod daną nazwą. pod warunkiem, że Twój telefon korzysta z serwera DNS, gdy jesteś w sieci LAN (użyj DHCP w sieci bezprzewodowej, aby go wypchnąć), możesz skierować przeglądarkę na stronę, używając nazwy DNS. Ta nazwa musi być zarejestrowana w twoim certyfikacie. Oczywiście działa to tylko w twojej sieci LAN, ale te same zasady dotyczą hostingu publicznego.
Frank Thomas