opsi-client-agent 4.0.7 hängt sich auf

mdecker
Beiträge: 85
Registriert: 26 Mär 2012, 16:20

Re: opsi-client-agent 4.0.7 hängt sich auf

Beitrag von mdecker »

n.wenselowski hat geschrieben: Wenn ihr die Zertifikate selbst erstellt, wie macht ihr das?
Also ich habe die selbstsignierten Zertifikate einfach per opsi-admin erstellt. Das Zertifikat selbst scheint ja auch nicht das Problem zu sein. Ich werde auf dem einen Rechner nochmal den loglevel auf 8 drehen, aber das letzte Mal stand da nichts Sinnvolles mehr drin...
hennoa
Beiträge: 9
Registriert: 06 Sep 2016, 20:20

Re: opsi-client-agent 4.0.7 hängt sich auf

Beitrag von hennoa »

n.wenselowski hat geschrieben:H

Was ich mich frage ist welche Konstellation ihn hier dermaßen lahmlegt, dass er sich aufhängt.
Da hier Umbauten gemacht wurden haben wir verschiedene Zertifikats-Konstellationen getestet. Wenn ihr die Zertifikate selbst erstellt, wie macht ihr das?
Dito, ich lasse die Zertifikate einfach über den opsi-admin erstellen, somit habe ich alles vorbelegt und muss eigentlich nur noch vor Ablauf den Vorgang neu starten und den Clients das neue Zertifikat unterjubeln. Ich werde wahrscheinlich erst am Freitag wieder einen Client zum testen haben, da ich derzeit bei Kunden unterwegs bin.
mdecker
Beiträge: 85
Registriert: 26 Mär 2012, 16:20

Re: opsi-client-agent 4.0.7 hängt sich auf

Beitrag von mdecker »

Ich habe jetzt auf einem der Testrechner alle OPSI-Logs gelöscht, um zu sehen, was wirklich neu angelegt wird: Nur opsiclientd.log wird im Problemfall überhaupt angelegt (und beschrieben). Hier die letzten Zeilen aus dem Log auf loglevel 8:

Code: Alles auswählen

[6] [Sep 16 07:30:41] [ service connection            ] Server verfication by server certificate enabled for host 'server.domain'   (HTTP.pyo|340)
[7] [Sep 16 07:30:41] [ opsiclientd                   ] Executing jsonrpc method u'backend_getInterface' on host u'server.domain'   (JSONRPC.pyo|115)
[8] [Sep 16 07:30:41] [ opsiclientd                   ] jsonrpc: '{"params": [], "id": 1, "method": "backend_getInterface"}'   (JSONRPC.pyo|119)
[7] [Sep 16 07:30:41] [ opsiclientd                   ] Posting request...   (JSONRPC.pyo|713)
[7] [Sep 16 07:30:41] [ opsiclientd                   ] Starting new HTTPS connection (0) to server.domain:4447   (HTTP.pyo|649)
[6] [Sep 16 07:30:42] [ opsiclientd                   ] client connection made   (Message.pyo|443)
[7] [Sep 16 07:30:42] [ opsiclientd                   ] subjectsChanged: subjects [<MessageSubject type: , id: status>, <MessageSubject type: , id: message>, <MessageSubject type: , id: configServiceUrl>, <MessageSubject type: , id: clientId>, <MessageSubject type: , id: actionProcessorInfo>, <MessageSubject type: , id: opsiclientdInfo>, <MessageSubjectProxy type: , id: detail>, <ProgressSubjectProxy type: , id: currentProgress>, <ProgressSubjectProxy type: , id: overallProgress>]   (Message.pyo|522)
[7] [Sep 16 07:30:42] [ opsiclientd                   ] sending notification 'subjectsChanged' to clients   (Message.pyo|543)
[7] [Sep 16 07:30:42] [ opsiclientd                   ] Connection established to: server.domain   (HTTP.pyo|651)
[8] [Sep 16 07:30:42] [ opsiclientd                   ] verifyByCaCertsFile is: u'C:\\opsi.org\\opsiclientd\\server-certs\\cacert.pem'   (HTTP.pyo|179)
[7] [Sep 16 07:30:42] [ opsiclientd                   ] verifyByCaCertsFile is: u'C:\\opsi.org\\opsiclientd\\server-certs\\cacert.pem'   (HTTP.pyo|181)
[7] [Sep 16 07:30:42] [ opsiclientd                   ] Verification failed: SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)')   (HTTP.pyo|660)
[7] [Sep 16 07:30:42] [ opsiclientd                   ] Going to try a connect without caCertFile...   (HTTP.pyo|664)
[8] [Sep 16 07:30:42] [ opsiclientd                   ] verifyByCaCertsFile is: None   (HTTP.pyo|179)
[8] [Sep 16 07:30:42] [ opsiclientd                   ] Trying to get peer cert...   (HTTP.pyo|189)
[6] [Sep 16 07:30:42] [ opsiclientd                   ] Encoding authorization   (HTTP.pyo|509)
[7] [Sep 16 07:30:42] [ event processing gui_startup  ] ServiceConnectionThread started   (OpsiService.pyo|167)
[7] [Sep 16 07:30:42] [ event processing gui_startup  ] Waiting for ServiceConnectionThread (timeout: 30, alive: True, cancellable in: 7)    (OpsiService.pyo|170)
[7] [Sep 16 07:30:42] [ event processing gui_startup  ] messageChanged: subject id 'detail', message 'Timeout: 30s'   (Message.pyo|488)
[7] [Sep 16 07:30:42] [ event processing gui_startup  ] sending notification 'messageChanged' to clients   (Message.pyo|543)
Kann es sein, dass es einfach einen Fehler im openssl Client-Code gibt? Gibt es eine Möglichkeit, diesen Teil noch zu debuggen?
hennoa
Beiträge: 9
Registriert: 06 Sep 2016, 20:20

Re: opsi-client-agent 4.0.7 hängt sich auf

Beitrag von hennoa »

Interessant ist auch die Stelle im Log, wo der Client versucht die CA zu prüfen, aber beim selbst signierten Zertifikat gibt es doch gar keine CA?!
mdecker
Beiträge: 85
Registriert: 26 Mär 2012, 16:20

Re: opsi-client-agent 4.0.7 hängt sich auf

Beitrag von mdecker »

hennoa hat geschrieben:Interessant ist auch die Stelle im Log, wo der Client versucht die CA zu prüfen, aber beim selbst signierten Zertifikat gibt es doch gar keine CA?!
Ich sehe da kein Problem. Soweit ich das verstehe, wird es erst im CA-Modus versucht. Wenn der nicht funktioniert, dann ohne. Der eine Fehler ist im Fall ohne CA-Zertifikat also normal. Nur die zweite Verbindung scheint dann kaputt zu gehen.
hennoa
Beiträge: 9
Registriert: 06 Sep 2016, 20:20

Re: opsi-client-agent 4.0.7 hängt sich auf

Beitrag von hennoa »

mdecker hat geschrieben:
hennoa hat geschrieben:Interessant ist auch die Stelle im Log, wo der Client versucht die CA zu prüfen, aber beim selbst signierten Zertifikat gibt es doch gar keine CA?!
Ich sehe da kein Problem. Soweit ich das verstehe, wird es erst im CA-Modus versucht. Wenn der nicht funktioniert, dann ohne. Der eine Fehler ist im Fall ohne CA-Zertifikat also normal. Nur die zweite Verbindung scheint dann kaputt zu gehen.
So genau habe ich das noch nie beobachtet. Wenn das generell beabsichtigt ist dann mea culpa. Ich kann im übrigen auch nicht mehr Inhalt beisteuern, das Log bricht dann bei mir genauso abrupt ab.
mdecker
Beiträge: 85
Registriert: 26 Mär 2012, 16:20

Re: opsi-client-agent 4.0.7 hängt sich auf

Beitrag von mdecker »

Ich würde ja gerne mal "zu Fuß" die Verbindungsschritte mit dem Server durch gehen. Aber leider kann ich keinen aktuellen Sourcecode von opsiclientd finden. Auf dem SVN ist der seit 5 Jahren nicht angepackt worden und auf Github finde ich auch nichts.
Benutzeravatar
ueluekmen
uib-Team
Beiträge: 1939
Registriert: 28 Mai 2008, 10:53

Re: opsi-client-agent 4.0.7 hängt sich auf

Beitrag von ueluekmen »

Hi,

es gibt im moment keinen aktuelleren Code. Der Code selbst hat sich an der Stelle im opsiclientd auch gar nicht groß verändert, dass was sich geändert hat ist alles unten drunter. Wir haben bei 4.0.6 den opsiclientd noch auf Basis von python 2.6 gebaut. Die Umstellung des Buildsystems auf python 2.7 hat nicht nur viel Zeit und Ressourcen gekostet, sondert hat noch einige andere Sachen mit sich gebracht. Wir mussten diesen Schritt bei 4.0.7 jetzt gehen, da ansonsten aktuelle OpenSSL Versionen nicht mehr kompatibel waren. Eine Neuerung die dazu kam ist das das python Projekt SSL Implementierungen von python 3 auf python 2.7 backported hat. Das wurde gemacht, um python 2.7 sicherer zu machen, da es noch parallel unterstützt wird.

Das mit der CA ist einfach. Wir haben als extra-Service im Angebot, dass man sich bei uns ein Zertifikat kaufen kann, welches von uns unterschrieben wird. Dieses Zertifikat wird von unseren opsi-client-agents immer akzeptiert. Dafür ist das verfahren verify_server_cert_by_ca implementiert. Aber auch beim normalen verify_server_cert wird als Notfallplan noch unsere CA geprüft. Damit lässt sich das System überlisten, um alle Clients wieder auf zu fangen. Wir waren uns damals bei der Implementierung von verify_server_cert durchaus bewusst, dass ein Problem an der Ecke dazu führt, dass alle Clients abgehängt werden.

Wenn es Probleme gibt und nicht zuviele Clients betroffen und relativ erreichbar liegen, ist unser vorschlag:

verify_server_cert flächenddeckend erst mal deaktivieren. Zertifikatscache auf den Clients löschen. Zertifikat auf dem opsiconfd sauber nach neuen Vorgaben erstellen. Wenn alles auf 4.0.7 aktualisiert wurde kann man bei einem Client die Option wieder anschalten und testen, danach kann man das wieder für die ganze Umgebung auf true setzen.

Auch hier bleiben wir natürlich dran und versuchen für die nächsten Releases zu lernen.

Der Quellcode vom opsiclientd ist ein kompliziertes Repository, wir versuchen im moment die freien Teile des Codes sauber zu extrahieren und werden dann den opsiclientd-Code genauso wie die anderen Sourcecodes in unsere automatischen Pushjobs nach github aufnehmen. Das kann aber noch etwas dauern.
opsi support - uib gmbh
For productive opsi installations we recommend support contracts.
http://www.uib.de
mdecker
Beiträge: 85
Registriert: 26 Mär 2012, 16:20

Re: opsi-client-agent 4.0.7 hängt sich auf

Beitrag von mdecker »

Also ich habe mittlerweile den Verdacht, dass eine Python-Komponente beim SSL hängen bleibt. Aber um das mal nachvollziehen zu können, müsste ich den Code sehen, der da aufgerufen wird. Dann würde ich den von Hand ausprobieren.
mdecker
Beiträge: 85
Registriert: 26 Mär 2012, 16:20

Re: opsi-client-agent 4.0.7 hängt sich auf

Beitrag von mdecker »

Ich habe nun auch mal eine frische Installation mit 4.0.7 ausprobiert. Einziger Unterschied: Der Client-Agent funktioniert genau ein mal und wird beim folgenden Start nicht mehr korrekt gestartet, ohne dass überhaupt noch ein Splash-Screen auftaucht. Nur das Abschalten der Zertifikatprüfung behebt das Problem. Ich hatte ursprünglich noch den Virenscanner im Verdacht, aber das Problem tritt auch mit komplett "blankem" Windows auf.
Ich bin jetzt wieder auf client-agent 4.0.6 und dort tut alles wie erwartet.
Das dauerhafte Abschalten der Zertifikatprüfung halte ich definitiv nicht für eine Lösung.
Falls mir noch jemand Hinweise zum Debugging der Situation geben kann, dann bin ich gerne bereit, mir das wieder anzuschauen. So lange bleibe ich bei 4.0.6.
Antworten