Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. admin Adapter funktioniert nicht sobald anderes Zertifikat

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    admin Adapter funktioniert nicht sobald anderes Zertifikat

    This topic has been deleted. Only users with topic management privileges can see it.
    • remiinD
      remiinD last edited by remiinD

      Hallo zusammen,

      Sobald ich ein selbst signiertes Zertifikat und dessen Key im Admin Adapter einspiele, crashed die Admin Instanz und kommt nicht mehr hoch. Muss dann die Admin Instanz löschen und neu hinzufpgen via CLI.

      Im Log steht folgendes:

      2022-04-13 22:27:06.176  - ^[[32minfo^[[39m: host.iobroker instance system.adapter.admin.0 started with pid 16925
      2022-04-13 22:27:07.931  - ^[[32minfo^[[39m: admin.0 (16925) starting. Version 5.3.4 in /opt/iobroker/node_modules/iobroker.admin, node: v12.22.12, js-controller: 4.0.21
      2022-04-13 22:27:07.984  - ^[[32minfo^[[39m: admin.0 (16925) requesting all states
      2022-04-13 22:27:07.985  - ^[[32minfo^[[39m: admin.0 (16925) requesting all objects
      2022-04-13 22:27:08.404  - ^[[32minfo^[[39m: admin.0 (16925) received all objects
      2022-04-13 22:27:08.575  - ^[[32minfo^[[39m: admin.0 (16925) http server listening on port 8081
      2022-04-13 22:27:08.576  - ^[[32minfo^[[39m: admin.0 (16925) Use link "http://localhost:8081" to configure.
      
      

      nach dem Versuch einen manuellen neustarts über iobroker restart/start admin.0 kommt folgendes:

      2022-04-13 22:35:43.870  - ^[[32minfo^[[39m: admin.0 (17307) starting. Version 5.3.4 in /opt/iobroker/node_modules/iobroker.admin, node: v12.22.12, js-controller: 4.0.21
      2022-04-13 22:35:43.990  - ^[[32minfo^[[39m: admin.0 (17307) requesting all states
      2022-04-13 22:35:43.991  - ^[[32minfo^[[39m: admin.0 (17307) requesting all objects
      2022-04-13 22:35:44.451  - ^[[32minfo^[[39m: admin.0 (17307) received all objects
      2022-04-13 22:35:44.580  - ^[[31merror^[[39m: admin.0 (17307) Cannot create web-server: Error: error:0909006C:PEM routines:get_name:no start line
      2022-04-13 22:35:44.582  - ^[[32minfo^[[39m: admin.0 (17307) Terminated (ADAPTER_REQUESTED_TERMINATION): Without reason
      2022-04-13 22:35:45.098  - ^[[32minfo^[[39m: admin.0 (17307) terminating https server on port 8081
      2022-04-13 22:35:45.133  - ^[[31merror^[[39m: host.iobroker instance system.adapter.admin.0 terminated by request of the instance itself and will not be restarted, before user restarts it.
      2022-04-13 22:35:45.134  - ^[[32minfo^[[39m: host.iobroker Do not restart adapter system.adapter.admin.0 because desired by instance
      

      Habe das Zertifikat auf einer Linux Maschine per openssl erstellt.

      Hierzu habe ich folgenden Guide befolgt:


      Privater Schlüssel und CSR erstellen
      Für jede Zertifikatsanforderung müssen zunächst ein privater Schlüssel und ein CSR erstellt werden. Das geht am einfachsten, in dem pro Domain zunächst eine Konfigurationsdatei mit den notwendigen Daten erstellt wird.

      Als Domainname verwende ich in den Beispielen test.example.private.

      Die Konfigurationsdatei sieht dann wie folgt aus:

      [req]  
      default_bits = 2048   
      prompt = no  
      default_md = sha256 
      distinguished_name = dn
      [dn]
      C=DE
      ST=NRW
      L=MeinOrt
      O=MeinName
      emailAddress=webmaster@example.private
      CN = test.example.private
      

      Der gewünschte Domainname steht in der letzten Zeile. Für eine andere Domain muss nur diese Zeile angepasst werden.

      Ich würde aber auch für die anderen Werte im Bereich [dn] passende Werte eintragen.

      Ich habe die Konfigurationsdatei unter dem Dateinamen test.example.csr.cnf gespeichert.

      Der CSR und der private Schlüssel werden dann mit diesem Befehl erstellt:

      openssl req -new -sha256 -nodes \    
                  -out test.example.csr \    
                  -newkey rsa:2048 -keyout test.example.key \    
                  -config test.example.csr.cnf
      

      Der private Schlüssel wird in der Datei test.example.key abgelegt. Er wird später auch für die Konfiguration des (Web)Servers benötigt.

      Der CSR befindet sich in der Datei test.example.csr. Für die Erzeugung des Zertifikats wird nur der CSR benötigt.

      Server-Zertifikat erstellen
      Für die Erstellung des Server-Zertifikats wird zunächst eine weitere Konfigurationsdatei erstellt:

      authorityKeyIdentifier=keyid,issuer
      basicConstraints=CA:FALSE
      keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
      subjectAltName = @alt_names
      [alt_names]
      DNS.1 = test.example.private
      

      Auch hier muss für andere Domains nur jeweils die letzte Zeile angepasst werden. Der Eintrag in dieser Zeile muss unbedingt exakt dem Eintrag CN in der Konfigurationsdatei für die CSR-Erstellung entsprechen.

      Die Konfigurationsdatei habe ich unter dem Namen test.example.ext.cnf gespeichert. Neben dieser Konfigurationsdatei und der CSR-Datei werden auch das Zertifikat und der private Schlüssel der CA benötigt.

      Die Erstellung des Zertifikats erfolgt mit dem folgenden Befehl:

      openssl x509 -req -in test.example.csr \  
                   -CA myRoot.crt -CAkey myRoot.key -CAcreateserial \  
                   -extfile test.example.ext.cnf \  
                   -out test.example.crt -days 3650 -sha256
      

      Das neu erzeugte Zertifikat ist in diesem Bespiel 10 Jahre (= 3650 Tage) gültig und wird in der Datei test.example.crt gespeichert. Der Inhalt des Zertifikats kann durch Aufruf des Befehls

      openssl x509 -in test.example.crt -text -noout
      

      überprüft werden. Wichtig sind die folgenden Einträge:

      X509v3 extensions:
          ...
          X509v3 Subject Alternative Name:
              DNS:test.example.private
      

      Es müssen unbedingt die “X509v3 extension” vorhanden sein und der “Subject Alternative Name” muss dem Domainnamen entsprechen.

      Vielleicht hat ja jemand ne Idee.
      Hatte auch schon den Gedanken, dass ich hier einen Fehler eingebaut habe, aber habe es 3 mal durchgeführt ohne Erfolg.

      Gruß

      Daniel

      1 Reply Last reply Reply Quote 0
      • First post
        Last post

      Support us

      ioBroker
      Community Adapters
      Donate
      FAQ Cloud / IOT
      HowTo: Node.js-Update
      HowTo: Backup/Restore
      Downloads
      BLOG

      754
      Online

      32.0k
      Users

      80.5k
      Topics

      1.3m
      Posts

      1
      1
      88
      Loading More Posts
      • Oldest to Newest
      • Newest to Oldest
      • Most Votes
      Reply
      • Reply as topic
      Log in to reply
      Community
      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
      The ioBroker Community 2014-2023
      logo