Forum: PC-Programmierung openssl apache php


von ... .. (Gast)


Lesenswert?

ich tüftle hier derzeit mit openssl. https funktioniert mit selbst 
signierten zertifikaten soweit ganz hervorragend. in einer der 
konfigurationsdateien von apache verwende ich folgende zeilen:

SSLVerifyClient require
SSLOptions +StdEnvVars

der aufruf der webseite verlangt sogleich das vorhanden sein eines 
zertifikats. in der php seite ist folgender code enthalten:

if(isset($_SERVER["SSL_CLIENT_VERIFY"]) === false)
  {
  }
elseif($_SERVER["SSL_CLIENT_VERIFY"] == "SUCCESS")
  {
  print("<pre>" . print_r($_SERVER, true) . "</pre>");
  }

mir werden somit diverse eigenschaften die die verbindung betreffen 
angezeigt. unter anderem subject und issuer daten. nun gehen meine 
gedanken auch in richtung diverse email anbieter. die werben ja damit 
wie sicher alles sei. meiner meinung nach reine augenwischererei da die 
emails selber ja noch immer im klartext auf den servern zu liegen 
scheinen, sofern die über webmail gesendet werden.

ich versuche nun einmal eine frage zu formulieren.

nehmen wir an ich nutze einen mail client wie evolution oder 
thunderbird. hiermit kann ich, mit installierten zertifikaten, emails 
richtig verschlüsseln. und nicht nur die verbindung zum server selber. 
die emails sind also nirgends im klartext vorhanden.

zuvor schrieb ich ja etwas darüber, dass eine internetseite nur 
angezeigt wird, wenn der benutzer ein gültiges zertifikat besitzt. was 
mus ich anstellen, dass ich da nun beispielsweise eine webseite mit 
einem formular und einer textarea habe in der ich text eingeben kann, 
die dann selber mit einem öffentlichen schlüssel einer anderen person 
verschlüsselt wird.

in mozilla firefox kann ich neben zertifizierungsstellen und eigenen 
zertifikaten, auch zertifikate (öffentliche schlüssel) von anderen 
personen importieren.

wie stelle ich es also an, dass ich eben einen solchen öffentlichen 
schlüssel einer anderen person dahernehme, um die nachricht in firefox 
zu verschlüsseln, so wie es in email programmen üblich ist, um diese 
verschlüsselte nachricht dann über eine verschlüsselteverbindung zu 
senden.

so dass diese nachricht dann auf dem server von niemandem lesbar ist.

eine andere person verbindet sich dann ebenfalls mit der seite, wieder 
mit zertifikat und bekommt die verschlüsselten daten übermittelt, über 
eine verschlüsselte verbindung und entschlüsselt diese daten dann mit 
dem eigenen privaten schlüssel.

ist das was ich vorhabe soweit verständlich? es soll also nicht nur eine 
verschlüselte verbindung gegeben sein, sondern die daten sollen p7m 
(application/x-pkcs7-mime) ähnlich, wie in email, auch verschlüsselt 
sein. ohne dass da gross manuell etwas rumgeölt werden muss. irgendeinen 
zweck muss es ja haben, das ich in firefox zertifikate (öffentliche 
schlüssel) anderer personen hinzufügen kann.

von TestX (Gast)


Lesenswert?

Der sinn von "eigenen" zertifikaten besteht dadrin, dass man mit einer 
eigenen CA zu dem jeweiligen server eine sichere und authentifizierte! 
Verbindung aufbauen kann. Dh ein client kann sich damit gegenüber dem 
server authentifizieren. Dafür sind auch die apache direktiven die du 
gepostet hast.

Was du allerdings machen möchtest ist klassische public key 
kryptographie (rsa). Dafür kannst du das zertifikatsystem nicht 
gebrauchen. Such nach passenden funktionen für rsa encrypt/decrypt

von ... .. (Gast)


Lesenswert?

ja genau. die eigenen zertifikate (erster tab). nur sehe ich in firefox 
die möglichkeit auch zertifikate anderer personen anzugeben (zweiter 
tab). nach meinem verständnis sind dies die öffentlichen schlüssel 
anderer personen um eben diesen eine verschlüsselte nachricht zukommen 
lassen zu können.

so wie in thunderbird... die eigenen (privat + öffentlich) und die der 
anderen (öffentlich)

ausser dem zertifikat der benutzer will ich da nichts weiter eingeben 
lassen müssen. die benutzer schreiben, senden und fertig.

im sinn hätte ich nun die theorie, dass javascript meinen privaten 
schlüssel nutzt. und den öffentlichen des empfängers, und daraus eine 
verschlüsselte nachricht erzeugt. wobei ich ganz strk bezweifle das 
javascript da so einfach zugriff erhält.

habe beim stöbern folgendes gefunden:

https://mail.mozilla.org/pipermail/firefox-dev/2013-September/000979.html

mir erschliesst sich der sinn des tabs auch nicht. denn genau wegen 
diesen tab komme ich zu meiner eigentlichen vorherigen frage. in 
thunderbird habe ich unter diesem tab zahlreiche zertifikate anderer 
personen. was ja auch sinn macht. in firefox kann ich dort die 
zertifikate aus thunderbird importieren, nur nutzen kann ich sie 
irgendwie nicht. zumindest habe ich bisher nichts gefunden was mir die 
auswahl eines empfängers, beispielsweise per dropdown in htm, 
ermöglicht.

von Martin (Gast)


Lesenswert?

Hallo.

Müsste der Apache nicht irgendeine Möglichkeit haben mit Java die public 
Keys zu benutzen? Irgendeine API muss es da doch geben?


Martin

von Planlos (Gast)


Lesenswert?

Martin schrieb:
> Müsste der Apache nicht irgendeine Möglichkeit haben mit Java die public
> Keys zu benutzen? Irgendeine API muss es da doch geben?

Was hat der Apache httpd damit zu tun? Der ist in deinem Szenario nur 
für den Transport zuständig.
Das Verschlüsseln, Entschlüsseln und Aufbewahren der Nachrichten ist 
dein Job. Den kann man in Java oder PHP oder 
$BeliebigeProgrammiersprache erledigen.
Und man kann dafür auf diverse APIs & Bibliotheken zugreifen.

von bluppdidupp (Gast)


Lesenswert?

Ich glaube nicht, dass man irgendwie an mehr als das angeforderte 
Client-Zertifikat rankommen kann.

von ... .. (Gast)


Lesenswert?

bluppdidupp schrieb:
> Ich glaube nicht, dass man irgendwie an mehr als das angeforderte
> Client-Zertifikat rankommen kann.

selbst das bekomme ich nicht hin. die seite fordert dazu auf das 
zertifikat für das login auszuwählen. aber dann hört es auch schon 
wieder auf.

um die nachricht auf dem server verschlüsselt abzulegen taugt das gar 
nix. denn mit javascript komme ich an den inhalt des eigenen zertifkats, 
also den privaten schlüssel, nicht dran. auch nicht an den öffentlichen 
schlüssel anderer personen. sofern ich denn welche installiert habe.

ich könnt natürlich dahergehen und das serverseitig mit php 
veranstalten. dazu müsste der benutzer seinen privaten schlüssel aber 
auf dem server parken. aber dann kann ich die nachricht genausogut 
unverschlüsselt speichern.

mit einem einfachen formular, mit input type=text für empfänger und 
textarea für nachricht und input type=button zum senden komme ich da wo 
ich hin will eben nicht hin. es gelingt mir nicht eine weboberfläche für 
firefox zu stricken die ich dann wie einen mail clienten nutzen kann.

in thunderbird installiere ich die zertifikate und gut is. und genau so 
hätte ich ganz gerne eine weboberfläche gebaut die ich in firefox nutzen 
kann.

ich bin mir sicher, was da als sichere email in den medien beworben wird 
ist ... banane. das einizge was verschlüsselt ist, ist die verbindung 
zum server. dank https. mehr auch nicht. die emails liegen da lesbar auf 
dem server für "jedermann". da könnte man sich genausogut das https 
sparen und mit einfachem http fahren. solange die emails da lesbar auf 
den servern liegen können die sich derlei produktwerbung sonst wo hin 
tun.

und eben da will ich ansetzen. ich will dass die da verschlüsselt 
liegen. ohne weiteres nachfragen. so dass die auch ein administrator 
nicht aufbekommt. aber wie bereits erwähnt finde ich die tür zu den 
zertifikaten leider nicht. und warscheinlich aus gutem grund.

ich will ein "bitte wählen sie das zertifikat aus mit dem sie sich an 
der seite anmelden" und möglicherweise noch ein "bitte wählen sie das 
zertifikat des empfängers aus" ... und ab damit. gar nichts mit extra 
kennwörtern abfragen die die benutzer was weiss ich wo miteinenader 
vereinbaren.

irgendeinen sinn muss der tap für die zertifikate andere personen in 
firefox ja haben. oder eben auch nicht, und die haben den tab noch nicht 
ausgebaut. oder die haben den schon eingebaut, für irgendetwas in 
hundert jahren.

nun ja. ich mach da mal mit thunderbird weiter. das ganze auch per 
weboberfläche nutzbar zu machen war jetzt auch nur so eine idee.

meinetwegen kann diese diskussion jetzt gerne als "gelöst" betrachtet 
werden. mir fällt da nun nichts weiter ein.

von window.crypto (Gast)


Lesenswert?

Was du willst ist eine Ende-zu-Ende Verschlüsselung.

IAW: Wenn du willst, dass der Server den Klartext nie zu Sehen bekommt 
und ihn folglich auch nicht speichern kann, musst du schon im Webbrowser 
verschlüsseln.

Dafür nun gerade auf die Zertifikate für die "Client-Server" 
Verschlüsselung zuzugreifen, erscheint mir zumindest etwas zweifelhaft.


Halbwegs aktuelle Browser (Ok, der IE tanzt mal wieder aus der Reihe, 
der kann's erst ab Version 11) bieten dafür einige 
Crypto-Funktionalität, die du aus Javascript heraus ansprechen kannst:

https://developer.mozilla.org/de/docs/Web/API/Window/crypto
https://dvcs.w3.org/hg/webcrypto-api/raw-file/tip/spec/Overview.html

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.