Fehler beim Ausführen von "opsi-admin... deleteServerCerts...""

Nils
Beiträge: 185
Registriert: 16 Sep 2011, 08:59

Fehler beim Ausführen von "opsi-admin... deleteServerCerts...""

Beitrag von Nils »

Hallo zusammen,

ich habe auf meinem OPSI-Server mit Hilfe von "opsi-setup --renew-opsiconfd-cert" das Zertifikat erneuert.
Leider habe ich damit nun meinen Testclient, der auf "veryfiy_server_cert = true" eingestellt ist, "ausgesperrt". :oops:
Daraufhin habe ich versucht, den Zertifikatscache mit

Code: Alles auswählen

opsi-admin -d method hostControlSafe_opsiclientdRpc deleteServerCerts "" "FQDN des Clients"
zu löschen.
Dabei erhalte ich jedoch immer die Meldung
...{
"result" : null,
"error" :
{
"message" : "deleteServerCerts() takes exactly 1 argument (2 given)",
"class" : "TypeError"
}
}
Weiterhin habe ich getestet, ob ich durch eine De- sowie anschließende Neuinstallation des OPSI-Clients oder durch Änderung der Option "verify_server_cert" auf "false" in der, auf dem Client befindlichen, opsiclientd.conf die Prüfung der Zertifikate wieder zu deaktivieren.
Leider alles ohne Erfolg.

Im configed sehe ich in der Logdatei des opsiconfd folgendes:
[5] [Apr 10 10:36:00] Application 'opsiclientd version 4.0.82' on client 'XXX.XXX.XXX.XXX' did not send cookie (workers.py|166)
[2] [Apr 10 10:36:00] Traceback: (Logger.py|767)
[2] [Apr 10 10:36:00] line 103 in '_getAuthorization' in file '/usr/lib/pymodules/python2.7/opsiconfd/workers.py' (Logger.py|767)
[2] [Apr 10 10:36:00] line 651 in 'decryptWithPrivateKeyFromPEMFile' in file '/usr/lib/python2.7/dist-packages/OPSI/Util/__init__.py' (Logger.py|767)
[2] [Apr 10 10:36:00] line 63 in 'private_decrypt' in file '/usr/lib/python2.7/dist-packages/M2Crypto/RSA.py' (Logger.py|767)
[2] [Apr 10 10:36:00] ==>>> oaep decoding error (workers.py|105)
[3] [Apr 10 10:36:00] Bad Authorization header from 'XXX.XXX.XXX.XXX': oaep decoding error (workers.py|120)
[2] [Apr 10 10:36:00] Traceback: (Logger.py|767)
[2] [Apr 10 10:36:00] line 389 in '_processOpsiServiceVerificationKey' in file '/usr/lib/pymodules/python2.7/opsiconfd/workers.py' (Logger.py|767)
[2] [Apr 10 10:36:00] line 651 in 'decryptWithPrivateKeyFromPEMFile' in file '/usr/lib/python2.7/dist-packages/OPSI/Util/__init__.py' (Logger.py|767)
[2] [Apr 10 10:36:00] line 63 in 'private_decrypt' in file '/usr/lib/python2.7/dist-packages/M2Crypto/RSA.py' (Logger.py|767)
[2] [Apr 10 10:36:00] ==>>> padding check failed (workers.py|393)
[3] [Apr 10 10:36:00] Failed to process opsi service verification key: padding check failed (workers.py|394)
[2] [Apr 10 10:36:00] Traceback: (Logger.py|767)
[2] [Apr 10 10:36:00] line 287 in '_errback' in file '/usr/lib/python2.7/dist-packages/OPSI/Service/Worker.py' (Logger.py|767)
[2] [Apr 10 10:36:00] line 577 in '_runCallbacks' in file '/usr/lib/python2.7/dist-packages/twisted/internet/defer.py' (Logger.py|767)
[2] [Apr 10 10:36:00] line 173 in '_getSession' in file '/usr/lib/pymodules/python2.7/opsiconfd/workers.py' (Logger.py|767)
[2] [Apr 10 10:36:00] line 385 in '_getSession' in file '/usr/lib/python2.7/dist-packages/OPSI/Service/Worker.py' (Logger.py|767)
[2] [Apr 10 10:36:00] line 420 in '_getSessionId' in file '/usr/lib/pymodules/python2.7/opsiconfd/workers.py' (Logger.py|767)
[2] [Apr 10 10:36:00] line 169 in '_getSessionId' in file '/usr/lib/pymodules/python2.7/opsiconfd/workers.py' (Logger.py|767)
[2] [Apr 10 10:36:00] ==>>> Opsi authentication error: Application 'opsiclientd version 4.0.82' on client 'XXX.XXX.XXX.XXX' did neither supply session id nor password (Worker.py|289)

1. Frage: Warum bekomme ich bei dem "opsi-admin"-Befehl die Meldung, dass nur ein Argument erwartet werde? Gebe ich nur ein Argument an, also bspw.

Code: Alles auswählen

opsi-admin -d method hostControlSafe_opsiclientdRpc deleteServerCerts "FQDN des Clients"
oder

Code: Alles auswählen

opsi-admin -d method hostControlSafe_opsiclientdRpc deleteServerCerts "*"
, so erscheint die Meldung, dass die Host-ID nicht gefunden werde; auch, wenn diese angegeben wurde.

Und 2. - und viel wichtiger: Wie bekomme ich den Client wieder dazu, sich mit dem Server zu unterhalten?

Ich bin für jeden Tipp und Ratschlag sehr dankbar.
Viele Grüße und einen erfolgreichen Tag.
Nils
Zuletzt geändert von Nils am 13 Apr 2015, 11:02, insgesamt 1-mal geändert.
Benutzeravatar
n.wenselowski
Ex-uib-Team
Beiträge: 3194
Registriert: 04 Apr 2013, 12:15

Re: Fehler beim Ausführen von "opsi-admin... deleteServerCerts...""

Beitrag von n.wenselowski »

Hallo Nils,

die Methode hostControlSafe_opsiclientdRpc erwartet die folgenden Parameter: method, params, hostIds, timeout
Versuch mal als zweiten Parameter '[]'.


Gruß

Niko

Code: Alles auswählen

import OPSI
Nils
Beiträge: 185
Registriert: 16 Sep 2011, 08:59

Re: Fehler beim Ausführen von "opsi-admin... deleteServerCerts...""

Beitrag von Nils »

Moin Niko,

vielen Dank für deine Info. :)
Jetzt kommt zwar keine Fehlermeldung mehr:
opsi-admin -d method hostControlSafe_opsiclientdRpc deleteServerCerts "[]" "FQDN"
{
"FQDN" :
{
"result" : null,
"error" : null
}
}
Auch wird der Ordner "C:\opsi.org\opsiclientd\server-certs geleert.
Nach einem Neustart des PCs werden sowohl eine "cacert.pem"- als auch eine "FQDN.pem"- / "IP-des-Servers.pem"-Datei neu im o. g. Ordner erstellt.

Dennoch ist weiterhin keine Verbindung zum Client möglich, da immer die Meldung:
[5] [Apr 13 10:42:57] Application 'opsiclientd version 4.0.82' on client 'XXX.XXX.XXX.XXX' did not send cookie (workers.py|166)
[2] [Apr 13 10:42:57] Traceback: (Logger.py|767)
[2] [Apr 13 10:42:57] line 103 in '_getAuthorization' in file '/usr/lib/pymodules/python2.7/opsiconfd/workers.py' (Logger.py|767)
[2] [Apr 13 10:42:57] line 651 in 'decryptWithPrivateKeyFromPEMFile' in file '/usr/lib/python2.7/dist-packages/OPSI/Util/__init__.py' (Logger.py|767)
[2] [Apr 13 10:42:57] line 63 in 'private_decrypt' in file '/usr/lib/python2.7/dist-packages/M2Crypto/RSA.py' (Logger.py|767)
[2] [Apr 13 10:42:57] ==>>> oaep decoding error (workers.py|105)
[3] [Apr 13 10:42:57] Bad Authorization header from 'XXX.XXX.XXX.XXX': oaep decoding error (workers.py|120)
[2] [Apr 13 10:42:57] Traceback: (Logger.py|767)
[2] [Apr 13 10:42:57] line 389 in '_processOpsiServiceVerificationKey' in file '/usr/lib/pymodules/python2.7/opsiconfd/workers.py' (Logger.py|767)
[2] [Apr 13 10:42:57] line 651 in 'decryptWithPrivateKeyFromPEMFile' in file '/usr/lib/python2.7/dist-packages/OPSI/Util/__init__.py' (Logger.py|767)
[2] [Apr 13 10:42:57] line 63 in 'private_decrypt' in file '/usr/lib/python2.7/dist-packages/M2Crypto/RSA.py' (Logger.py|767)
[2] [Apr 13 10:42:57] ==>>> padding check failed (workers.py|393)
[3] [Apr 13 10:42:57] Failed to process opsi service verification key: padding check failed (workers.py|394)
[2] [Apr 13 10:42:57] Traceback: (Logger.py|767)
[2] [Apr 13 10:42:57] line 287 in '_errback' in file '/usr/lib/python2.7/dist-packages/OPSI/Service/Worker.py' (Logger.py|767)
[2] [Apr 13 10:42:57] line 577 in '_runCallbacks' in file '/usr/lib/python2.7/dist-packages/twisted/internet/defer.py' (Logger.py|767)
[2] [Apr 13 10:42:57] line 173 in '_getSession' in file '/usr/lib/pymodules/python2.7/opsiconfd/workers.py' (Logger.py|767)
[2] [Apr 13 10:42:57] line 385 in '_getSession' in file '/usr/lib/python2.7/dist-packages/OPSI/Service/Worker.py' (Logger.py|767)
[2] [Apr 13 10:42:57] line 420 in '_getSessionId' in file '/usr/lib/pymodules/python2.7/opsiconfd/workers.py' (Logger.py|767)
[2] [Apr 13 10:42:57] line 169 in '_getSessionId' in file '/usr/lib/pymodules/python2.7/opsiconfd/workers.py' (Logger.py|767)
[2] [Apr 13 10:42:57] ==>>> Opsi authentication error: Application 'opsiclientd version 4.0.82' on client 'XXX.XXX.XXX.XXX' did neither supply session id nor password (Worker.py|289)
im Protokoll erscheint.

Auf der "deamon info"-Website wird angezeigt:
Failed to process event gui_startup
Failed to process event : Failed to connect to config service 'https://opsisrv.xyz.local:4447/rpc': Opsi service verification error: Service verification failed: HTTP header 'X-opsi-service-verification-key' missing
Inzwischen habe ich auch den opsiclient lokal deinstalliert und ihn anschließend per service_setup.cmd erneut installiert. Leider ändert dies jedoch ebenfalls nichts an meinem Problem. :(
Mein Versuch, durch Änderung des Eintrags "url" im Bereich [config_service] in der Datei "opsiclientd.conf" von IP-Adresse des Servers auf den FQDN des Servers oder auch nur den Servernamen brachten leider ebenfalls keine Verbesserung. :cry:

[Update]: Im opsiclientd.log auf dem Client sah ich noch folgendes, nachdem ich vorhin das Loglevel auf 8 erhöht und den Client noch einmal neu gestartet hatte:
[7] [Apr 13 12:21:22] [ service connection ] ServiceConnectionThread started... (OpsiService.pyo|291)
[6] [Apr 13 12:21:22] [ service connection ] Server verification enabled, using cert file 'C:\opsi.org\opsiclientd\server-certs\XXX.XXX.XXX.XXX.pem' (OpsiService.pyo|302)
[5] [Apr 13 12:21:22] [ service connection ] Connecting to config server 'https://XXX.XXX.XXX.XXX:4447/rpc' #1 (OpsiService.pyo|313)
[7] [Apr 13 12:21:22] [ opsiclientd ] Executing jsonrpc method 'backend_getInterface' on host XXX.XXX.XXX.XXX (JSONRPC.pyo|110)
[8] [Apr 13 12:21:22] [ opsiclientd ] jsonrpc: {"params": [], "id": 1, "method": "backend_getInterface"} (JSONRPC.pyo|113)
[8] [Apr 13 12:21:22] [ opsiclientd ] Request to host 'XXX.XXX.XXX.XXX', baseUrl: /rpc, query '{"params": [], "id": 1, "method": "backend_getInterface"}' (JSONRPC.pyo|648)
[7] [Apr 13 12:21:22] [ opsiclientd ] Starting new HTTPS connection (0) to XXX.XXX.XXX.XXX:4447 (HTTP.pyo|589)
[7] [Apr 13 12:21:22] [ opsiclientd ] [Errno 1] _ssl.c:480: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed (HTTP.pyo|597)
[7] [Apr 13 12:21:22] [ opsiclientd ] Connection established to: XXX.XXX.XXX.XXX (HTTP.pyo|602)
[6] [Apr 13 12:21:22] [ opsiclientd ] Encoding authorization (HTTP.pyo|459)
[3] [Apr 13 12:21:22] [ opsiclientd ] Service verification failed: HTTP header 'X-opsi-service-verification-key' missing (HTTP.pyo|498)
[6] [Apr 13 12:21:22] [ opsiclientd ] Traceback: (Logger.pyo|767)
[6] [Apr 13 12:21:22] [ opsiclientd ] line 114 in 'process' in file 'OPSI\Backend\JSONRPC.pyo' (Logger.pyo|767)
[6] [Apr 13 12:21:22] [ opsiclientd ] line 673 in '_request' in file 'OPSI\Backend\JSONRPC.pyo' (Logger.pyo|767)
[6] [Apr 13 12:21:22] [ opsiclientd ] line 499 in 'urlopen' in file 'OPSI\Util\HTTP.pyo' (Logger.pyo|767)
[6] [Apr 13 12:21:22] [ opsiclientd ] ==>>> Failed to process method 'backend_getInterface': Opsi service verification error: Service verification failed: HTTP header 'X-opsi-service-verification-key' missing (JSONRPC.pyo|118)
[3] [Apr 13 12:21:22] [ service connection ] Failed to connect to config server 'https://XXX.XXX.XXX.XXX:4447/rpc': Opsi service verification error: Service verification failed: HTTP header 'X-opsi-service-verification-key' missing (OpsiService.pyo|339)
[7] [Apr 13 12:21:28] [ config cache service ] ServiceConnectionThread started (OpsiService.pyo|167)
[3] [Apr 13 12:21:28] [ config cache service ] Failed to connect to config service 'https://XXX.XXX.XXX.XXX:4447/rpc': Opsi service verification error: Service verification failed: HTTP header 'X-opsi-service-verification-key' missing (OpsiService.pyo|108)
[3] [Apr 13 12:21:28] [ config cache service ] Errors occured while syncing config from server: Failed to connect to config service 'https://XXX.XXX.XXX.XXX:4447/rpc': Opsi service verification error: Service verification failed: HTTP header 'X-opsi-service-verification-key' missing (CacheService.pyo|513)
[5] [Apr 13 12:23:07] [ opsiclientd ] Session 'BGZKiXVt17lkN6DDrPJbFSyvVCb54IMi' from ip 'XXX.XXX.XXX.YYY', application 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0' expired after 120 seconds (Session.pyo|184)

Falls (weitere) Fragen bestehen, so bitte ich um kurze Info.
Für weitere Tipps und Hinweise bin ich - logischer weise - sehr dankbar. ;)

Viele Grüße und einen schönen, erfolgreichen Tag.
Nils
Benutzeravatar
SisterOfMercy
Beiträge: 1556
Registriert: 22 Jun 2012, 19:18

Re: Fehler beim Ausführen von "opsi-admin... deleteServerCerts...""

Beitrag von SisterOfMercy »

Bitte schreiben Sie Deutsch, when I'm responding in the German-speaking part of the forum!
Nils
Beiträge: 185
Registriert: 16 Sep 2011, 08:59

Re: Fehler beim Ausführen von "opsi-admin... deleteServerCerts...""

Beitrag von Nils »

Guten Morgen SisterOfMercy,

vielen Dank für deine Antwort.
Das Löschen der Serverzertifikate habe ich bereits auch über das Webinterface des Clients durchgeführt. Mit selbigem Ergebnis. Die .pem-Dateien auf dem Client unter c:\opsi.org\opsiclientd\server-certs werden gelöscht.
Das Problem, dass der Client keine Verbindung zum Server herstellen kann bleibt jedoch, wie in meinen letzten Einträgen beschrieben, bestehen. :cry:

Versuche ich, wie von dir beschrieben, die Methode "deleteServerCerts" vom Server aus durchzuführen, so erhalte ich:
"{"result": null, "id": null, "error": {"message": "Opsi bad rpc error: Failed to decode rpc: No JSON object could be decoded", "class": "OpsiBadRpcError"}}"
Im Webformular habe ich dabei folgende Angaben gemacht:
Path: interface
Method: hostControlSafe_opsiclientdRpc
method: deleteServerCerts
*params: '"[]"' oder auch ''
*hostIds: "FQDN des Clients"
*timeout: ''

Oder habe ich deine Antwort falsch verstanden / einen (Denk)Fehler gemacht?

Viele Grüße, einen schönen Tag und vielen Dank im Voraus für weitere Tipps und Hinweise.
Nils
Benutzeravatar
SisterOfMercy
Beiträge: 1556
Registriert: 22 Jun 2012, 19:18

Re: Fehler beim Ausführen von "opsi-admin... deleteServerCerts...""

Beitrag von SisterOfMercy »

Nils hat geschrieben:Oder habe ich deine Antwort falsch verstanden / einen (Denk)Fehler gemacht?
No, I just thought the webinterface would be easier to construct your command line, because it shows what kind of arguments it needs.
Bitte schreiben Sie Deutsch, when I'm responding in the German-speaking part of the forum!
Nils
Beiträge: 185
Registriert: 16 Sep 2011, 08:59

Re: Fehler beim Ausführen von "opsi-admin... deleteServerCerts...""

Beitrag von Nils »

Hallo SisterOfMercy,

vielen Dank für den Tipp mit dem Webformular. Du hast recht, so ist es auf jeden Fall einfacher! :)

Zurück zu meinem Problem:
Mir ist beim Ausführen von "getHostRSAPublicKey" auf dem Server aufgefallen, dass im Ergebnis der Name eines anderen OPSI-Servers auftaucht.
Und zwar habe ich bei der "Erstellung" dieses Testservers einen anderen OPSI-Server geklont. Ihn dann mit einer anderen IP-Adresse versehen und an allen möglichen Stellen, die ich gefunden habe, den Hostnamen entsprechend geändert. Nur offensichtlich nicht das Zertifikat. :oops:

Nun stellt sich mir die Frage, wie ich dieses HostRSA-Zertifikat erneuern und auf den richtigen Servernamen ausstellen kann. Versucht habe ich es, in dem ich beim Ausführen von
opsi-setup --renew-opsiconfd-cert
den neuen Hostnamen eingegeben habe.
Dies hat jedoch leider keinerlei Auswirkung auf das Ergebnis von "getHostRSAPublicKey" gehabt. :cry:
Auch das vorherige Umbenennen der Datei /etc/opsi/opsiconfd.pem brachte keinen Erfolg mit sich. :(

Wie bekomme ich nun das Zertifikat / den Key so geändert, dass er auf den Namen des "neuen" Servers lautet?

Vielen Dank für deine / eure Unterstützung.
Viele Grüße
Nils
Benutzeravatar
SisterOfMercy
Beiträge: 1556
Registriert: 22 Jun 2012, 19:18

Re: Fehler beim Ausführen von "opsi-admin... deleteServerCerts...""

Beitrag von SisterOfMercy »

Nils hat geschrieben:Auch das vorherige Umbenennen der Datei /etc/opsi/opsiconfd.pem brachte keinen Erfolg mit sich. :(
That's what I always do when the OPSI cert isn't valid any more (I use a free one from CACert.org). Don't forget you have to restart the opsi services.
Bitte schreiben Sie Deutsch, when I'm responding in the German-speaking part of the forum!
Nils
Beiträge: 185
Registriert: 16 Sep 2011, 08:59

Re: Fehler beim Ausführen von "opsi-admin... deleteServerCerts...""

Beitrag von Nils »

Guten Morgen SisterOfMercy,

danke für deine Info. :)

Ich habe nun noch einmal die .pem-Dateien unter /etc/opsi/in ein anderes Verzeichnis verschoben. Anschließend mit
opsi-setup --renew-opsiconfd-cert
ein neues Zertifikat erstellt und den Server komplett per "shutdown -r now" neu gestartet.

Merkwürdigerweise erscheint in der Ausgabe von
{ "method": "getHostRSAPublicKey",
"params": [],
"id": 1 }
weiterhin:
{"id": 1,
"result": "ssh-rsa hierStehtDerKey root@NameDesAltenOPSI-Servers",
"error": null}
Ich vermute, dass mit
opsi-setup --renew-opsiconfd-cert
nicht das Zertifikat erneuert wird, dessen RSA-Key ich mit der o.g. Abfrage erhalte. Kann das sein? Und wenn ja, wie erneuere ich das Zertifikat, dessen Key ich mir mit "getHostRSAPublicKey" anzeigen lassen kann?

An welcher Stelle mache ich welchen (Denk)Fehler?
Und was muss ich machen, um ein "korrektes" Zertifikat für den Server zu erhalten?

Vielen Dank für deine Hilfe und einen erfolgreichen, nicht zu stressigen Tag.
Nils
Benutzeravatar
n.wenselowski
Ex-uib-Team
Beiträge: 3194
Registriert: 04 Apr 2013, 12:15

Re: Fehler beim Ausführen von "opsi-admin... deleteServerCerts...""

Beitrag von n.wenselowski »

Hallo,

der RSA Key liegt unter /etc/ssh/ssh_host_rsa_key.pub und ist _NICHT_ das Zertifikat des opsi-Servers!
Das liegt im Standard unter /etc/opsi/opsiconfd.pem.


Gruß

Niko

Code: Alles auswählen

import OPSI
Antworten