PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Apache und Client Zertifikate



explode
27.12.05, 15:14
Hallo,

ich hab zum thema schon etwas ge'google't aber nicht wirklich brauchbares gefunden. also folgendes soll erreicht werden, ich habe einen https der nur verbindungen von clients akzeptiert welche ein zuvor runtergeladenes zertifikat besitzen. und ich wuerd gern wissen wie ich mal so auf die schnelle on the fly (mit php) zertfikate erstellen kann und diese zum download anbieten kann.. und den apache so confen kann dass dieser wie oben erwaehnt nur connection von solchen client akzeptiert.

mit php und den exec etc. funktionen die ganzen openssl utils n cert erstellen und mit entsprechendem header zum DL anbieten? bei der "nur client mit zertifikat verbinden lassen" sache hab ich bisher garkeine idee...

Roger Wilco
27.12.05, 20:23
mit php und den exec etc. funktionen die ganzen openssl utils n cert erstellen und mit entsprechendem header zum DL anbieten?
Ja, so hätte ich es gemacht. Einfach eine entsprechende openssl.cnf mit den gewünschten Feldern anlegen, mit openssl das Zertifikat erzeugen und dann an den Client schicken.


bei der "nur client mit zertifikat verbinden lassen" sache hab ich bisher garkeine idee...
http://httpd.apache.org/docs/2.0/de/ssl/ssl_howto.html#accesscontrol

marce
27.12.05, 20:35
suchst Du evtl. das da?

http://www.modssl.org/docs/2.8/ssl_howto.html#ToC8

explode
06.01.06, 08:28
alles klar, danke... das klappt alles soweit.

nun hab immernoch ein problem. ich will dass wenn der client kein cert hat, dieser weitergeleitet wird .. an einen anderen webserver.

ich paste dazu mal den relevanten teil aus meiner vhost.conf



RewriteEngine On
RewriteLog /httpd/mysite/logs/rewrite.log

# SSL
SSLEngine On

<Location />
SSLVerifyClient optional
SSLVerifyDepth 3
</Location>
#SSLCipherSuite HIGH:MEDIUM

SSLCACertificateFile /openssl/cacert.pem
SSLCertificateFile /openssl/cacert.pem
SSLCertificateKeyFile /openssl/private/cakey.plain.pem
SSLCARevocationFile /openssl/cacert.crl

SSLOptions +FakeBasicAuth
#SSLOptions +ExportCertData
#SSLOptions +OptRenegotiate
SSLUserName SSL_CLIENT_S_DN_CN

RewriteCond %{SSL:SSL_CLIENT_VERIFY} !=SUCCESS
RewriteRule .* http://www.heise.de [L]
RewriteCond %{SSL:SSL_CLIENT_VERIFY} =SUCCESS
RewriteRule .* /site/index.php [L]

<Location /site>
SSLVerifyClient require
SSLVerifyDepth 3
</Location>


und noch was aus der apache2.conf


<Location /blabla>
AuthName "blabla"
AuthType Basic
AuthUserFile /openssl/htpasswd
require valid-user
</Location>


ich werde nun mit und ohne cert an heise.de weitergeleitet. bevor ich das problem mit dem weiterleiten (wenn kein cert vorhanden) angegangen bin, schien die authentifizierung zu klappen... ohne cert bekamm ich einer fehlermeldung vom browser.

mein zweites problem ist dass ich nicht genau weiss was bei mir in die /openssl/htpasswd kommt.. soweit ich es erlesen habe muss da der subject des zertifikats hin und halt der hash des passworts. aber ich moechte moeglichst nicht so 'speziellen' username .. angaben wie O,OU,C sollten reichen.. will nicht die htpasswd mitpflegen muessen.

kann jemand helfen?

explode
06.01.06, 09:24
hallo,

irgendwie scheint es nun zu gehen, das problem ist jedoch wie folgt:

ich geh auf die site (ohne cert), werder weitergeleitet .. wie es sein solll.
importiere mein cert und gehe auf die site, werde weitergeleitet.. so wie es nicht sein soll. schliesse ich den browser oder restarte ich den server, so werde ich mit cert nicht weitergeleitet ... irgendwie wird irgendwas gecached oder sowas..? what can i do?

marce
06.01.06, 10:28
hast du evtl. Keep-Alive angeschaltet?

explode
06.01.06, 11:31
ah super, danke marce.

die ersten tests haben gezeigt dass es wohl daran lag.. man sucht sich nen wolf und dann isses sowas :)