Apache beállítása több CA-tól származó kliens tanúsítványok elfogadására

Sziasztok!

Az alábbi problémám lenne:
Adott egy Apache 2, az alábbi konfig részlettel:

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/pma.us.to-cert.pem
SSLCertificateKeyFile /etc/apache2/ssl/pma.us.to-nopasswd-key.pem
SSLCertificateChainFile /etc/apache2/ssl/cacert.pem
SSLCACertificateFile /etc/apache2/ssl/cacert.pem
SSLCARevocationFile /etc/apache2/ssl/revoke.crl
SSLProtocol all -SSLv2 -SSLv3

SSLVerifyClient require
SSLVerifyDepth 3
SSLOptions +StdEnvVars +ExportCertData +StrictRequire

A bajom ezzel az, hogy csak a saját self-signed certjeimet fogadja el.

Mivel lehetne ezt a csodát rávenni, hogy a saját tanúsítványszolgáltatómtól eltérő kliens oldali certeket is elfogadja (pl.: e-személyin található tanúsítványt, vagyis ezzel is tudjak hitelesíteni)? Már fél napja bújom a netet, de eddig nem jutottam előrébb.

Előre is köszönöm annak, aki előrébb visz a dologban.

Hozzászólások

SSLCACertificateFile -> ezt kuka

SSLCACertificatePath /etc/ssl/certs

A /etc/ssl/certs-be pedig bepakolod az összes szükséges root tanúsítványt. (apt-get install ca-certificates és társai)

Nos amit megpróbáltam:


SSLEngine on
SSLCertificateFile /etc/apache2/ssl/pma.us.to-cert.pem
SSLCertificateKeyFile /etc/apache2/ssl/pma.us.to-nopasswd-key.pem
SSLCertificateChainFile /etc/apache2/ssl/cacert.pem
SSLProtocol all -SSLv2 -SSLv3
SSLCACertificatePath /etc/apache2/ssl/ca/hash/

SSLVerifyClient require
SSLVerifyDepth 3
SSLOptions +StdEnvVars +ExportCertData +StrictRequire

Az /etc/apache2/ssl/hash mappában jelenleg benne van a két CA (self signed, illetve az e-személyis govca is) pem-ben, a hash-es linkek létrehozva a c_rehash segítségével.

Apache restart után a helyzet változatlan, nem kéri az e-személyis certet, pedig win alatt a tanúsítvány kezelőben szépen látszódik.

szerk: a Főtanúsítvány kiadó (govca-root) is a mappában van, csak ez kimaradt...
szerk2: A saját CA-m is kell, mert az ezzel létrehozott certeket is el kell fogadni

Néztem és az egyedüli hibaüzenet, ami visszajön az a böngészőtől van. Méghozzá ERR_BAD_SSL_CLIENT_AUTH_CERT hiba.

Kezdem azt érezni, hogy a windows 10 + reiner basis kártyaolvasó valamiért nem 100%-os megoldás.
Viszont mindjárt megpróbálom ubi 16.04 lts alól is a dolgot, remélhetőleg legalább valami értelmezhető hibaüzenetet kapok.

A revoke.crl jelen esetben így néz ki:
Ez a CRL: http://cca.hiteles.gov.hu/crl/GOVCA-CCA.crl "openssl crl -inform der -in GOV..." parancssal átalakítva PEM formátummá.

Egyébként a self signed kliens cert még úgy is működik, hogy a revoke.crl-ben nem szerepel a self signed crl-je, csak a NISZ-es.

A logolás pedig így megy: "ErrorLog /var/log..., CustomLog /var/log/... combined"

Viszont sem a custom access/error logban, sem a globális error/access logban nincs semmi.

Holnapig viszont jegelem a témát és tiszta fejjel virtuális gépen egy friss debian netinst+apache2 kombóval újra nekifutok. Self signed lesz a szerver cert, a kliens CA+CRL pedig csak a NISZ, ezzel kiküszöbölve minden lehetséges hibát.

[MEGOLDVA]

Először is: köszönöm mindenkinek a hozzászólást, viszont a probléma részben saját magát megoldotta.

Ha kiveszem az SSLCACertificatePath-ot, illetve RevocationFile-t, akkor minden létező tanúsítványt felajánl a böngésző, egyedül a NISZ-est nem. Passzolom, hogy ez most a reiner hibája, vagy a windows 10-é (esetleg éppen olyan a csillagok együttállása), de mindenesetre ez tipikusan a nem hibás részben a hiba keresésének esete volt.

Windows 7 alól teszek még egy próbát, ennek az eredményét beleszerkesztem ebbe a hozzászólásba, mint tanulság.