Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   SOAP THttpReqResp mit Certificate (Windows CertStore scsUser) (https://www.delphipraxis.net/212387-soap-thttpreqresp-mit-certificate-windows-certstore-scsuser.html)

atari1040 2. Feb 2023 12:48

SOAP THttpReqResp mit Certificate (Windows CertStore scsUser)
 
Moin,

ich habe die Instandhaltung für ein altes Delphi XE8 Projekt mit SOAP-Client übernommen.
Ich habe nur den SourceCode und die alte Exe aber leider nicht die passende IDE. Die Exe war mit Delphi XE8 compiliert worden und scheinbar hat mein Vorgänger Änderungen in der Original soap.SOAPHTTPTrans.pas vorgenommen, um den Client in Verbindung mit dem Windows CertStore zum Laufen zu bringen.
Ich habe das Projekt jetzt unter Delphi 11 zum laufen bekommen aber leider öffnet der Client nun bei jedem Request den Dialog um ein Zertifikat aus dem CertStore=scsUser und CertType:'MY' auszuwählen, was bei Verwendung als CronJob natürlich nicht so nett ist.

Ich kann leider verdammt wenig zu Delphi, SOAP und Zertifikaten finden. Ältere Beiträge sind auch nicht hilfreich, weil sich scheinbar irgendwann zwischen XE8 und Delphi 11 etwas grundlegendes geändert hat.

Hat vielleicht hier jemand eine Idee, wie man den Client dazu bewegen kann, das richtige Zertifikat aus dem Windows CertStore zu übernehmen, ohne einen Dialog zu öffnen?

Danke schonmal :-)

himitsu 2. Feb 2023 13:26

AW: SOAP THttpReqResp mit Certificate (Windows CertStore scsUser)
 
https://www.embarcadero.com/de/produ...vious-versions


Vieles baut auf Indy auf und dort hatte sich inzwischen Massig geändert.

atari1040 2. Feb 2023 13:44

AW: SOAP THttpReqResp mit Certificate (Windows CertStore scsUser)
 
Danke.
Ich habe alle Versionen seit Delphi 1.
Mein Problem sind die Änderungen, die mein Vorgänger in der Original soap.SOAPHTTPTrans.pas gemacht hat, denn die habe ich nicht bekommen.

Es muss doch irgendwie möglich sein ein bestimmtes Zertifikat über die Seriennummer oder den Fingerprint zu definieren und automatisiert dem Request zuzuweisen, ohne das immer der blöde Dialog kommt. Wir können natürlich auch 24/7 jemanden daneben setzen :-)
Es muss ja auch nicht der Store sein. Kann man nicht einfach wie unter Linux auf ein Zertifikat in einem bestimmten Pfad verweisen?

himitsu 2. Feb 2023 18:12

AW: SOAP THttpReqResp mit Certificate (Windows CertStore scsUser)
 
Achso, klang so als wenn du die nur nicht ins aktuelle Delphi rein bekommst und dann fehlt die passende XE8. :oops:


Vielleicht hilft das?
https://docwiki.embarcadero.com/Libr...entCertificate
https://entwickler-ecke.de/topic_SOA...ate_74665.html
https://blog.marcocantu.com/blog/201...p-clients.html


Nja, falls sich nichts direkt für diese Komponente findet:

Da drin wird ja bestimmt sowas wie TIdHTTP oder TIdTCPClient benutzt, bzw. im aktuellen Delphi vielleicht auch THTTPRIO, TNetHTTPClient oder TNetHTTPRequest,
und dafür sollten sich Beispiele finden lassen, wie man ihnen ein Zertifikat gibt.


Dann nur noch schauen, wie man das wo am Besten in die SOAP-Komponente rein bekommt.

[edit] neeeee, die gehen wohl direkt auf WinInet :stupid:
Zitat:

Note: THTTPReqResp uses WinInet to establish a connection to the server.
Sollte sich das nicht eigentlich selbstständig ein Zertifikat aus dem Store ziehen können, wenn es Eines benötigt? :gruebel:
Bei Google suchenWinInet Certificate Store

mjustin 2. Feb 2023 18:26

AW: SOAP THttpReqResp mit Certificate (Windows CertStore scsUser)
 
Zitat:

Zitat von atari1040 (Beitrag 1518220)
leider öffnet der Client nun bei jedem Request den Dialog um ein Zertifikat aus dem CertStore=scsUser und CertType:'MY' auszuwählen, was bei Verwendung als CronJob natürlich nicht so nett ist.

Kann es an fehlenden Berechtigungen liegen?
Ist das Zertifikat in einem Zertifikatsspeicher abgelegt, auf den das Konto des CronJobs Zugriff hat?
(Eventuell kann man das testen, indem man sich als eben dieser Benutzer am System anmeldet)

atari1040 2. Feb 2023 21:27

AW: SOAP THttpReqResp mit Certificate (Windows CertStore scsUser)
 
Zitat:

Zitat von mjustin (Beitrag 1518236)
Zitat:

Zitat von atari1040 (Beitrag 1518220)
leider öffnet der Client nun bei jedem Request den Dialog um ein Zertifikat aus dem CertStore=scsUser und CertType:'MY' auszuwählen, was bei Verwendung als CronJob natürlich nicht so nett ist.

Kann es an fehlenden Berechtigungen liegen?
Ist das Zertifikat in einem Zertifikatsspeicher abgelegt, auf den das Konto des CronJobs Zugriff hat?
(Eventuell kann man das testen, indem man sich als eben dieser Benutzer am System anmeldet)

Ich starte das Programm mit dem User unter dem der CronJob läuft.
Mit der alten Exe, die unter XE8 compiliert wurde, läuft es auch so wie gewünscht. Das Programm zieht sich das Zertifikat ohne Auswahldialog aus dem Store.
Die neue Exe mit Delphi 11 compiliert macht auch alles was sie soll, nur leider öffnet sie immer den Dialog und man muss das Zertifikat erst mit Mausklick bestätigen.
Die Ursache liegt irgendwo in der soap.SOAPHTTPTrans.pas und THTTPReqResp, die von XE8 auf Delphi11 erhebliche Unterschiede aufweist.

Hat vielleicht jemand einen SOAP Client gebaut, der sich automatisch und ohne das Auswahlfenster ein Zertifikat aus dem Store holt. Was mit XE8 funktionierte muss doch auch mit Delphi11 möglich sein?

atari1040 2. Feb 2023 21:40

AW: SOAP THttpReqResp mit Certificate (Windows CertStore scsUser)
 
Zitat:

Zitat von himitsu (Beitrag 1518235)
Achso, klang so als wenn du die nur nicht ins aktuelle Delphi rein bekommst und dann fehlt die passende XE8. :oops:

sorry, habe mich wohl missverständlich ausgedrückt. Ich meinte damit, dass ich nicht die aufgesetzte Entwicklungsumgebung XE8 meines Vorgängers zur Verfügung habe. Der hat leider THTTPReqResp in den Delphi Sourcen um den Zugriff auf den Store erweitert. Leider hat er nicht abgeleitet sondern direkt die Sourcen geändert und die sind nie im Sourcecode Repo gelandet sondern mit seinem Rechner gelöscht worden.
Mit Delphi11 würde ich den Teil des Codes vermutlich sowieso nicht zum laufen bekommen, weil die so viel geändert haben. Ich hatte die leise Hoffnung, dass mit einer neuen Delphi Version der direkte Zugriff auf den CertStore irgendwie einfacher geworden ist.

EmWieMichael 3. Feb 2023 05:36

AW: SOAP THttpReqResp mit Certificate (Windows CertStore scsUser)
 
Zitat:

Zitat von atari1040 (Beitrag 1518239)
...
Hat vielleicht jemand einen SOAP Client gebaut, der sich automatisch und ohne das Auswahlfenster ein Zertifikat aus dem Store holt. ...

Ja: https://www.delphipraxis.net/1321277-post22.html

jaenicke 3. Feb 2023 07:03

AW: SOAP THttpReqResp mit Certificate (Windows CertStore scsUser)
 
Zitat:

Zitat von atari1040 (Beitrag 1518240)
Ich hatte die leise Hoffnung, dass mit einer neuen Delphi Version der direkte Zugriff auf den CertStore irgendwie einfacher geworden ist.

In Delphi 11 gibt es aufgrund meines Tickets neue Eigenschaften für die Clientzertifikat-Authentifikation:
https://quality.embarcadero.com/browse/RSP-34451

Mit Zertifikaten aus dem Store ging es über das entsprechende Event aber auch vorher problemlos (HTTPRIO.HTTPWebNode.OnNeedClientCertificate). Ich wollte die Zertifikate aber nicht in den Store packen müssen.

atari1040 3. Feb 2023 11:15

AW: SOAP THttpReqResp mit Certificate (Windows CertStore scsUser)
 
Vielen Dank schon mal für die guten Hinweise. Ich schaue mir die an und versuche sie in die vorhandenen Sourcen zu implementieren. Wenn jemand noch gute Ideen hat, gerne immer her damit. :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:15 Uhr.
Seite 1 von 4  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz