PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Infos zu SSL-Verschlüsselung! Wo?


BenjaminG
11.10.2005, 21:21:00
wo finde ich Informationen wie ich die SSL-Verschlüsselung anwenden muss?

Ich weis dass sehr viel kostet. Ich wills aber mal auf meinem PC probieren, ob ich es hin bekomme. Habe dazu keine Information hier im Forum gefunden, wo mich weiter bringen würde.

Ich habe schon geschaut wie viel eine solche Lizenz kostet ist ja zwischen 30 - unendlich ja alles dabei.

Ist das billigste auch gleich gut, wie die teuren?

Könnt ihr mir Anbieter dazu empfehlen?

Das SSL-Zertifikat muss auf dem Webserver eingerichtet werden. Betrifft es dann alle Domains die darauf verlinkt sind, oder nur die ich möchte?

Fragen über Fragen!

Sonst einfach Links, wo ich das nachlesen kann.

DANKE schon mal!

feuervogel
11.10.2005, 21:39:08
ich denke grundsätzliche infos findest du hier:

http://de.wikipedia.org/wiki/Secure_Sockets_Layer

desweiteren: ein zertifikat muss nicht unbedingt etwas kosten, kommt halt drauf wer es ausgestellt hat. egal wie viel es kostet, verschlüsselt wird überall.

BenjaminG
11.10.2005, 21:53:30
was mir jetzt noch fehlt, wie muss ich das machen?

muss ich einfach statt http://login.xxx.de https://login.xxx.de schreiben? Das die Logindaten sicher übertragen werden. Ist der Gedanke so richtig?

Kann man ohne Probleme OPENSSL benutzen?

meikel (†)
11.10.2005, 22:09:48
wo finde ich Informationen wie ich die SSL-Verschlüsselung anwenden muss?
Mit solchen Infos wirst Du totgechmissen, wenn Du danach eine Suchmaschine fragen würdest.

Ich habe schon geschaut wie viel eine solche Lizenz kostet ist ja zwischen 30 - unendlich ja alles dabei.

Ist das billigste auch gleich gut, wie die teuren?

Entscheidend ist, welche vertrauenswürdige Zertifizierungsstelle das Zertifikat ausstellt.

Das SSL-Zertifikat muss auf dem Webserver eingerichtet werden.
Richtig.
Betrifft es dann alle Domains die darauf verlinkt sind, oder nur die ich möchte?

Falsch. Ein Zertifikat gilt nur für eine Domain. Da die Reverse-Auflösung der IP ebenfalls auf die Domain zeigen muß, benötigst Du für die SSL-Domain eine zusätzliche IP, die Du dem System bekannt machen mußt und die Du zusammen mit den Zertifikatverweisen im betreffenden Virtualhost (Port 443) eintragen mußt.

Beachte: Nicht jeder Provider hat genügend IP. Außerdem muß für die Domain ein Reverse Eintrag im Nameserver hinzugefügt werden.

Kläre das alles erst vorher! Sonst ist das Zertifikat eine janz teure und völlig nutzlose ASCII Zeichenkette...

BenjaminG
11.10.2005, 22:22:15
braucht man bei OpenSSL dann auch eine extra IP-Adresse?

dann benötigt man für jede Domain oder Subdomain, eine extra IP-Adresse für eine SSL-Verschlüsselung?

Matt
11.10.2005, 22:55:09
Also um noch was prinzipielles zu klären:
Du benötigst nicht das Zertifikat einer Zertifizierungsstelle um SSL nutzen zu können. Du kannst es auch nutzen, ohne nur einen cent zu zahlen.
Zertifizierungsstellen sind nur dazu da, dem besucher deiner website zu versichern, dass du auch wirklich du bist. (und nicht eine "gefakte" version deiner website die ganz wo anders ist)
Wenn du das nicht hast, wird der browser zwar meckern, dass die website nicht "vertrauenswürdig" ist, verschlüsselung wird aber trotzdem funktionieren.
Prinzipiell kannst du mit openssl ein zertifikat für eine domain (welche kannst du angeben) generieren. (Du kannst natürlich auch mehrere zertifikate für verschiedene domains generieren!)
das entscheidende ist, dass das zertifikat für die Domain die du benutzt einen Public und einen Private key enthält - alles was du für SSL eigentlich benötigst, um deine Daten zu verschlüsseln. Und das funktioniert dann auch. Allerdings musst du aufpassen, https läuft nämlich nicht auf dem Port 80 (auf welchem weiß ich leider nicht) jedenfalls muss dieser von deiner firewall freigegeben sein.

Wenn du Linux verwendest, reicht es eigentlich schon, wenn du openSSL installierst, den apache dafür konfigurierst, bei deiner firewall den entsprechenden Port freigibst und dir für deine domain (kann natürlich auch "localhost" sein) ein zertifikat generieren lässt.

feuervogel
11.10.2005, 23:23:36
das war port 443 bei standardmäßiger einstellung soweit ich mich erinnern kann.

meikel (†)
12.10.2005, 01:10:54
braucht man bei OpenSSL dann auch eine extra IP-Adresse?
Wir gehen mal davon aus, daß es sich nicht um einen Bastelrechner handelt, der unter Deinem Schreibtisch steht, sondern um einen ordentlichen Webserver, der in einem Rechenzentrum wohnt.

dann benötigt man für jede Domain oder Subdomain, eine extra IP-Adresse für eine SSL-Verschlüsselung?
Ja, weil für das Zertifikat (egal, ob Du eins kaufst oder Dir ein Wald- und Wiesenzertifikat selber bastelst) die Beziehung Domain und IP eindeutig sein muß.

Normalerweise (ohne SSL) ist es so:
alle Domains werden unter einer gemeinsamen IP registriert. Die Reverse Auflösung zeigtg dann meist auf den Hostnamen (auch eine gültige Domain).

Beispiel:
selfphp.de. 86400 A 212.227.80.48

Die Reversauflösung sieht allerdings so aus:
48.80.227.212.in-addr.arpa. 86400 PTR p15179641.pureserver.info.

Der Apache kann das auseinanderhalten, weil der Client im Protokoll, daß er zB. an 212.227.80.48 schickt, den Hostnamen selfphp.de ebenfalls mit angibt.

Bei SSL gibt es aber das Problem, daß das Protokoll ja header und content verschlüsselt. Also besteht für den Indianer nur dann eine Chance, den richtigen Schlüssel im richtigen virtualhost zu finden, wenn sich die IP unterscheiden, damit er header und conten überhaupt entschlüsseln kann.

bazubi
12.10.2005, 09:52:03
Falsch. Ein Zertifikat gilt nur für eine Domain. Da die Reverse-Auflösung der IP ebenfalls auf die Domain zeigen muß, benötigst Du für die SSL-Domain eine zusätzliche IP, die Du dem System bekannt machen mußt und die Du zusammen mit den Zertifikatverweisen im betreffenden Virtualhost (Port 443) eintragen mußt.


Das stimmt so auch nicht ganz. Man kann ein Testzertifikat auch für * austellen. Dann kann man es für beliebig viele Domains nutzen. Ok, macht die Sache unsicherer, weil man ja an den Zertifikat die Domain zu der es gehört nicht mehr erkennt, aber wie gesagt: Zum Testen reichts. Die Browser beschweren sich auch nicht drüber, bzw. nur darüber dass das Zertifikat von einer unbekannt CA unterschrieben wurde. Aber das ist ja immer bei eigenen Zertifikaten so.

meikel (†)
12.10.2005, 14:47:27
Das stimmt so auch nicht ganz. Man kann ein Testzertifikat auch für * austellen.
Aha. Und das willste dann in 30 unterschiedliche virtualhost eintragen?

Dann kann man es für beliebig viele Domains nutzen.
Toll. Ein Zertifikat, was nix taugt, auch noch mehrfach verwenden.

Sowas kann man auf der Kiste unter dem Schreibtisch testen, aber das hat im Netz nix zu suchen.

BenjaminG
12.10.2005, 18:21:17
@Matt
danke für deine Ausführliche Erklärung. Jetzt ist mir einiges klarer geworden.

Dann reicht mir OpenSSL, wenn das Entgelt nur für die Echtheit des Zertifikats ist. Ich möchte nur die Daten absichern, dass diese niemand unbefugt abhört!

Deshalb werde ich dass mit OpenSSL mal auf meinem PC probieren und dann lasse ich es bei meinem Webhoster installieren.

@all
Es handelt sich um einen Webserver der im Rechnungszentrum steht.

Jetzt muss ich es nur noch programmieren können! Leider wurde mir diese Frage noch nicht beantwortet oder ich habe die Antwort zu der Frage nicht gefunden.
muss ich einfach statt http://login.xxx.de https://login.xxx.de schreiben? Das die Logindaten sicher übertragen werden. Ist der Gedanke so richtig?

oder wo kann ich dass den genau nachlesen, was ich alles bei den Seiten eintragen muss, dass es verschlüsselt wird?

meikel (†)
12.10.2005, 20:22:51
Leider wurde mir diese Frage noch nicht beantwortet oder ich habe die Antwort zu der Frage nicht gefunden.

muss ich einfach statt http://login.xxx.de https://login.xxx.de schreiben? Das die Logindaten sicher übertragen werden. Ist der Gedanke so richtig?
Der Gedanke ist nur dann richtig, wenn sich das Script über den Virtualhost aufgerufen wird, der den Servernamen login.xxx.de via Port 443 bedient.

Nicht das Script verschlüsselt header und content sondern das Apachemodul mod_ssl.

Matt
12.10.2005, 20:43:13
jepp.
und das bedeuted auch, dass, wenn SSL richtig installiert ist, nichts an deinen scripts verändert werden muss. Wenn du einen link auf https://login.xxx.com setzt wird das php script dass unter login.xxx.com gefunden wird ausgeführt. Der Inhalt wird jedoch nicht gleich an den Besucher gesandt, sondern vorher von dem apache mod mod_ssl verschlüsselt.
Wenn du das script unter http://login.xxx.com ausführst, passiert prinzipiell das selbe, allerdings wird das script nachdem es generiert wird, nicht verschlüsselt.
Es gibt diverse Methoden, zu erzwingen, dass ein script immer unter https aufgerufen wird. einige funktionieren über .htaccess
Allerdings kannst du das auch in dem php Script selbst per hand regeln.
benutze dafür einfach folgenden code am anfang deines scriptes:


$httpsenabled=@$_SERVER["HTTPS"];
# $_SERVER["HTTPS"] is leer, wenn man nicht auf https://login.xxx.com gekommen ist
$httpsenabled=$httpsenabled=="on"?true:false;

if(!$httpsenabled)
{
$newURL="https://".$_SERVER["SERVER_NAME"].$_SERVER["PHP_SELF"];
header("Location: $newURL");
# weiterleitung an die selbe addresse, allerdings mit https.
exit();

BenjaminG
12.10.2005, 20:52:57
nochmal zur wiederholung, ob ich es verstanden habe:

Wenn ich jetzt die Seite http://login.xxx.de aufrufe, dann wird es unverschlüsselt übertragen die Daten.

Wenn ich es aber über https://login.xxx.de mache, dann sind sie verschlüsselt? Ich muss hier halt den OpenSSL installiert haben, dass das funktionieren würde und natürlich dafür eingerichtet haben. Oder?

Ich hoffe, ich habs richtig verstanden?

Matt
12.10.2005, 22:56:52
Ja exakt!
Beim einrichten ist nur eventuell etwas wissen notwendig - da ssl natürlich auch mit dem webserver selbst zusammenspielen muss. bei apache funktioniert das über den mod_ssl.

Tutorials gibt es zur genüge im netz.

Wenn es nicht funktioniert überprüfe die einstellungen der firewall - das hat mich mal ganz schön lange aufgehalten! :)

BenjaminG
12.10.2005, 23:10:15
ich hoffe, dass ich es irgendwie hin bekomme.

habe auch schon eine Beschreibung gefunden, wie ich das OPenSSL einrichten kann/ muss.

meikel (†)
13.10.2005, 01:40:38
nochmal zur wiederholung, ob ich es verstanden habe:
Wenn ich jetzt die Seite http://login.xxx.de aufrufe, dann wird es unverschlüsselt übertragen die Daten.

Wenn ich es aber über https://login.xxx.de mache, dann sind sie verschlüsselt?
Dann schickt der Client die Daten verschlüsselt zum Server an den Port 443. Vor dem ersten Kontakt wird das Zertifikat abgefragt.

Ich muss hier halt den OpenSSL installiert haben, dass das funktionieren würde und natürlich dafür eingerichtet haben. Oder?

Das alleine reicht nicht aus, damit der Apache SSL kann. Der benötigt zusätzlich noch mod_ssl, daß zur verwendeten openssl Version passen muß.

Weiterhin mußt Du entweder ein Zertifikat beitzen oder selber ein "Wald- und Wiesenzertifikat" mit den Tools von Openssl erzeugen. Beachte hierbei unbedingt, daß das ein Zertifikat für den Webserver sein muß. Sonst will der Apache bei jedem Start das Paßwort wissen, bevor er überhaupt loft.

Hier ein kleines Beispiel, wie die Virtualhosts für 'normal' und SSL aussehenm könnten.
<directory "/srv/www/htdocs/www.example.com>
AllowOverride All
AllowOverride Indexes AuthConfig Limit FileInfo
Options None
Options +FollowSymLinks +SymLinksIfOwnerMatch +Includes +ExecCGI +Indexes
</directory>

NameVirtualHost 1.2.3.4:80

<VirtualHost 1.2.3.4:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /srv/www/htdocs/www.example.com/html

php_admin_flag safe_mode Off
php_admin_flag file_uploads On
php_admin_flag track_vars On
php_admin_flag magic_quotes_runtime Off
php_admin_flag magic_quotes_gpc Off
php_admin_value upload_tmp_dir /srv/www/htdocs/www.example.com/tmp
php_admin_value include_path "."
php_admin_value open_basedir /srv/www/htdocs/www.example.com

php_admin_value session.cookie_path /
php_admin_value session.auto_start 0
php_admin_value session.gc_maxlifetime 1800
php_admin_value session.use_cookies 1
php_admin_value session.cookie_lifetime 0
php_admin_value session.cookie_secure Off
php_admin_value session.use_trans_sid 0
php_admin_value session.save_path /srv/www/htdocs/www.example.com/tmp

DirectoryIndex index.html index.htm index.shtml index.cgi index.php

CustomLog /var/log/apache2/www.example.com_access.log "%h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\""
ErrorLog /var/log/apache2/www.example.com_error.log
</VirtualHost>

NameVirtualHost 1.2.3.4:443

<VirtualHost 1.2.3.4:443>
ServerName ssl.example.com
DocumentRoot /srv/www/htdocs/www.example.com/ssl

php_admin_flag safe_mode Off
php_admin_flag file_uploads On
php_admin_flag track_vars On
php_admin_flag magic_quotes_runtime Off
php_admin_flag magic_quotes_gpc Off
php_admin_value upload_tmp_dir /srv/www/htdocs/www.example.com/tmp
php_admin_value include_path "."
php_admin_value open_basedir /srv/www/htdocs/www.example.com

php_admin_value session.cookie_path /
php_admin_value session.auto_start 0
php_admin_value session.gc_maxlifetime 1800
php_admin_value session.use_cookies 1
php_admin_value session.cookie_lifetime 0
php_admin_value session.cookie_secure Off
php_admin_value session.use_trans_sid 0
php_admin_value session.save_path /srv/www/htdocs/www.example.com/tmp

DirectoryIndex index.html index.htm index.shtml index.cgi index.php

<IfModule mod_ssl.c>
SSLEngine on
SSLCertificateKeyFile /etc/apache2/ssl.key/www.example.com.key
SSLCertificateFile /etc/apache2/ssl.crt/www.example.com.crt
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
</IfModule>

CustomLog /var/log/apache2/www.example.com_access_ssl.log "%h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\""
ErrorLog /var/log/apache2/www.example.com_error_ssl.log
</VirtualHost>

BenjaminG
13.10.2005, 18:26:45
ich habe jetzt kapiert, dass das nicht so einfach ist.

werde das dann in Angriff nehmen, wenn ich mehr Zeit habe und dies erst mal auf meinem PC testen!

BenjaminG
16.10.2005, 11:13:14
ich habe jetzt mal ein Zertifikat mit dieser Anleitung: http://buecher.lingoworld.de/apache2/mod_ssl.html

Damit haben Sie die beiden Dateien mynet.cert (das Zertifikat) und mynet.key (den öffentlichen Schlüssel) erstellt, beziehungsweise entsprechende Dateien mit Ihrem eigennen Domain-Namen. Diese müssen mit Hilfe der Apache-Konfigurationsdirektiven SSLCertificateFile (Zertifikat) beziehungsweise SSLCACertificateKeyFile (Schlüssel) eingebunden werden.

wie muss ich jetzt die SSLCertificateFile und SSLCACertificateKeyFile einbinden? Ich habe dazu leider keine Erklärung gefunden, wo muss ich dass bei XAMPP einstellen? bzw. in der Zukunft auf dem Webserver? Oder muss dies mein Anbieter machen?

EDIT: Muss ich dies mit MOD-SSL machen? und wie?

EDIT 2: wo muss ich jetzt den Programmcode mit dem Virtualhost einfügen?