Jak znaleźć / ustawić moją nazwę CN na serwerze https z Pythonem?

0

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?

użytkownik217354
źródło
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