C# Zertifikate unter WCF

Fou-Lu

Lt. Junior Grade
Registriert
Aug. 2006
Beiträge
290
Hallo Leute,
und wieder einmal bin ich absolut ratlos...

Ich arbeite an einem Client und einem Server Tool. Das ganze realisiere ich über WCF. Jetzt hat das schon mal super funktioniert bislang, aber doch will ich mehr Sicherheit haben.

Über die Message-Sicherheit mit der Windows Authentifizierung habe ich schon nachgedacht, aber ist mir ehrlich gesagt zu blöd, da ich bei jedem Client dann ein anderen Usernamen + Passwort wissen muss (stellt euch mal vor das Paket würde auf 100 Rechnern z.B. in einem Netzwerk eingesetzt werden -> wäre ja der HORROR wenn ich jetzt 100 Namen und Passwörter auswendig kennen müsste).

Nun gibts da ja noch die Möglichkeit sich mit einem einzigen Usernamen und Passwort anzumelden dass man angibt. Dazu ist aber wiederrum ein Zertifikat nötig um die Übertragung von Name und Passwort zu verschlüsseln!

An dieser Stelle kommen wir auch schon zu meinem Problem...

Ich will das Zertifikat direkt aus einer Datei auslesen und es nicht zuerst installieren müssen! Aber ich habe bislang keine Möglichkeit gefunden dem Servicehost klar zu machen, dass er eine Zertfikatsdatei lesen muss und nicht im Zertifikatsspeicher danach suchen soll!!

Das ganze muss natürlich programmiertechnisch ablaufen. Sprich im Code selber definiert werden. Ich weiß es ist möglich über die .config Datei das ganze umzusetzen, aber es muss schon im Code ablaufen und da habe ich bislang nichts passendes dazu gefunden.

Hoffe ihr könnt mir helfen ;) wäre sehr dankbar.
 
Du versucht also die Windows-eigenen Mechanismen zu umgehen? Das geht so nicht.
Entweder du nimmst, was .Net bietet (dann muss das Zertifikat installiert werden) oder du bastelst dir deine eigene Zertifikatsverwaltung und musst dich dann natürlich auch selbst um die verschlüsselte Verbindung kümmern. Letzteres dürfte den deutlich höheren Aufwand bedeuten.
 
Naja was heißt Windows-eigene Mechanismen umgehen? Es ist ja durchaus möglich das Zertifikat einfach aus einer Datei zu laden. .Net bietet diese Möglichkeit auch.

Es geht mir rein speziell um WCF jedoch. Bislang konnte ich dort keine Methode finden der ich das Zertifikat aus einer Datei übergeben kann. Nur eben aus dem Zertifikatsspeicher, wenn es installiert ist.

PS: wenns so nicht klappt, dann werd ich halt auf den Zertifikatsspeicher zurückgreifen müssen. Jede andere Lösung bedeutet viel zu viel Aufwand glaube ich :D :D
 
Das Tutorial hab ich schon durchgelesen, aber der Ersteller arbeitet dort mit dieser app.config Datei. Genau das möcht ich ja verhindern, da ich alle Einstellungen im Programmcode definiere.

Deswegen ja auch meine Frage obs irgendwie eine Möglichkeit gibt das ganze im Programmcode anzugeben. Ich kenne da nur die "SetCertificate"-Methode. Aber die liest die Zertifikate aus dem Speicher und nicht aus einer Datei.

Aber trotzdem danke.
 
Daran dacht ich auch schon, aber wenn ich das X509Certificate2 der Certificate-Eigenschaft vom Service zuweisen will, dann kommt ne Exception, dass es Schreibgeschützt ist.

programmtechnisch deswegen, weil ich das (meiner Meinung nach) viel einfach erweitern/abändern/etc. kann und weil ich mit app.config ehrlich gesagt überhaupt nicht klarkomme :D :D :D

Naja an sonsten bleibt zu sagen, dass ich mich doch dazu entschlossen habe die Zertifikate eben zu installieren. Hab es sogar teilweise schon zum laufen gebracht das Programm (stellt immerhin ne Verbindung her mit Zertifikatauthentifizierung).

Danke nochmals für eure Hilfe. Werde mal weitergucken wie ich das ganze noch verbessern kann ;-)
 
Fou-Lu schrieb:
Daran dacht ich auch schon, aber wenn ich das X509Certificate2 der Certificate-Eigenschaft vom Service zuweisen will, dann kommt ne Exception, dass es Schreibgeschützt ist.
Folgender Satz trifft aber nicht zufällig zu? ;)
When the first call is made on the proxy, the ClientCredentials are made read-only. Subsequently calling the set method results in an InvalidOperationException.

Fou-Lu schrieb:
Naja an sonsten bleibt zu sagen, dass ich mich doch dazu entschlossen habe die Zertifikate eben zu installieren. Hab es sogar teilweise schon zum laufen gebracht das Programm (stellt immerhin ne Verbindung her mit Zertifikatauthentifizierung).
Das ist natürlich noch besser.
 
Zurück
Oben