Martin Bednář wrote:
Pouzivate nekdo klientske certifikaty v tomcatu ? Snazil jsem se najit neco na internetu, ale nejak jsem neuspel.Jsem schopen dostat tomcata do stavu kdy mi funguje pres https s clientAuth="false", postupoval jsem podle howto na jakarta.apache.org . Nejak ale nechapu co vsechno musim udelat abych mohl pouzivat klientske certifikaty, clientAuth="true". Zkousel jsem pomoci openssl zalozit vlastni CA s touto CA vygenerovat servrovy a klientsky certifikat, do keystoru pro tomcat jsem nahral ca, server a klient certifikat. Do browseru nainstaloval CA a klientsky certifikat, ale jeste zjevne neco delam blbe. Respektive nechapu na zaklade ceho tomcat povoluje pristup k danemu serveru, to ze je server i klientsky certifikat podepsany stejnou autoritou je trochu malo ne ? Predpokladam ze potrebuju ten klientsky certifikat podepsat tim servrovym - jak ?
Podepsat klientsky certifikat tim serverom nemusite a nemuzete, drzitel serverove certifikatu neni certifikacni autorita, nemuze nikoho podepisovat, a v serverovem certifikatu je priznak, ktery to znemoznuje. Pokud mohu doporucit, pro autentizaci klientskym certifikatem je lepsi dat pred TomCat jeste Apache s mod_ssl a mod_jk, protoze v Apachovi muzete veci kolem SSL nastavovat velice jemne a pekne. Pokud si pamatuji, tak v TomCatu samotnem musite pro serverovy certifikat pouzit alias "tomcat" a heslo "changeit", coz je dost des a hruza. A ze zbezneho pohedu do dokumentace mam pocit, ze vyber akceptovatelnych klientskych certifikatu pak musite delat az aplikacni urovni. Treba ja to mam v Apachovi nastavene takto: <IfDefine SSL> LoadModule ssl_module libexec/libssl.so </IfDefine> ... <IfModule mod_ssl.c> SSLPassPhraseDialog builtin SSLSessionCache shm:/var/tmp/ssl_scache-1.3.33(512000) SSLSessionCacheTimeout 300 SSLMutex sem SSLRandomSeed connect builtin SSLRandomSeed startup file:/dev/urandom 512 SSLCACertificatePath /etc/grid-security/certificates </IfModule> ... <VirtualHost _default_:443> ... SSLEngine on SSLCipherSuite ALL:!ADH:!EXP56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP SSLCertificateFile /etc/httpd/ssl/metacert.pem SSLCertificateKeyFile /etc/httpd/ssl/metakey.pem SSLCertificateChainFile /etc/httpd/ssl/cesnetnewca.pem JkMount /osobni/* t5 <Location "/osobni/chranene_klientskym_certifikatem/*"> SSLRequireSSL SSLVerifyClient require SSLOptions +ExportCertData +StdEnvVars </Location> JkEnvVar SSL_CLIENT_S_DN "-" </VirtualHost> Tohle nastaveni zpusobuje, ze server predklada svuj certifikat spolecne s retezem certifikatu CA, ktere ho overily, specifikovanym direktivou SSLCertificateChainFile. Naproti tomu direktiva SSLCACertificatePath specifikuje adresar s certifikaty certifikacnich autorit, ktere jsou povolene pro podepsani *klientskych* certifikatu. Vsimnete si, ze server muze byt podepsan autoritou, kterou neakceptuje pro klientske certifikaty. Vsechny pozadavky zacinajici /osobni jsou pres mod_jk poslany na TomCat dohromady s klientskym certifikatem, a ten se da na v servletu ziskat jako atribut requestu jmenem "javax.servlet.request.X509Certificate" a muzu si s nim na aplikacni urovni delat, co chci. Abych to mel jednodussi, pomoci JkEnvVar SSL_CLIENT_S_DN si posilam i Distinguished Name z certifikatu, tak jak ho vidi Apache, ziskam ho opet jako atribut requestu jmenem "SSL_CLIENT_S_DN". Totez sice muzu teoreticky vytahnout primo z certifikatu, ale kdyz to zkusite, tak zjistite, ze DN neni retezec, ale struktura, kterou lze do retezce prevest vice zpusoby.A kdybyste chtel delat omezeni certifikatu primo na strane Apache, tak existuje direktiva SSLRequire, kterou muzete zadat libovolne slozite
pravdivostni vyrazy pro specifikaci akceptovatelnych certifikatu, napr.: SSLRequire %{SSL_CLIENT_S_DN} in \ { "/O=CESNET/O=Masaryk University/CN=Martin Kuba", \ "/DC=cz/DC=cesnet-ca/O=Masaryk University/CN=Martin Kuba" \ } vyjmenovava vsechny povolene, ale muzete treba rict %{SSL_CLIENT_S_O} == "CESNET" a pusti to jenom certifikaty, ktere zacinaji /O=CESNET. Vice viz dokumentace s mod_ssl. Makub -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Supercomputing Center Brno Martin Kuba Institute of Computer Science email: [EMAIL PROTECTED] Masaryk University http://www.ics.muni.cz/~makub/ Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775 --------------------------------------------------------------
smime.p7s
Description: S/MIME Cryptographic Signature