Smartcards anwenden

Praktisch alle Anwendungen, die eine Authentifizierung über X.509 Zertifikate unterstützen, sind damit realisierbar.

Apache httpd

Einfach SSL Client Authentifizierung aktivieren:

SSLVerifyClient require
SSLRequireSSL

Dieser Config Ausschnitt gehört in den Virtual-Host , der SSL/TLS Verbindungen bearbeitet.

Nginx

Selbstverständlich geht das auch mit Nginx.

ssl_client_certificate /usr/local/nginx/conf/ssl/ca.crt;
ssl_verify_client optional;

location /admin {
if ($ssl_client_verify != SUCCESS) {
return 403;
break;
}

Mit diesem Config Beispiel ist der Zugang zum Pfad Admin nur möglich, wenn ein mit einem Client Zertifikat Zertifikat authentifiziert wurde, das von der in ca.crt definierten CA signiert wurde.

SSH

Das X.509 Client Zertifikat findet auch hier Verwendung, zunächst wird der Public Key benötigt.

ssh-keygen -D /usr/lib64/pkcs11/opensc-pkcs11.so

Damit werden alle Public Keys, die OpenSSH erkennt, im OpenSSH Format ausgegeben. Damit
man nich jedes Mal die pkcs11 Lib manuell angegben werden muss, sollte in der Datei
~/.ss/config folgender Eintrag vorgenommen werden:

Host *
ForwardX11 yes
Ciphers aes256-ctr
PKCS11Provider /usr/lib64/p11-kit-proxy.so

Damit wird automatisch immer das Token verwendet, wenn vom Server ein entsprechender
Key angefordert wird.

Curl

Gerade im Umfeld von Microservices und Zero-Trust stellt sich die Frage, wie man die Zugangsdaten der Microservices untereinander absichert. Auch hier können Smartcards oder HSM eine Lösung sein.

curl \
--location \
--verbose \
--key 'pkcs11:token=SmartCard-HSM%20(UserPIN);id=%8E%A2%E9%94%17%5B%47%9D%99%18%76%3E%CA%83%08%29%B5%A5%3C%6D;type=private?pin-value=111111' \
--cert 'pkcs11:token=SmartCard-HSM%20(UserPIN);id=%8E%A2%E9%94%17%5B%47%9D%99%18%76%3E%CA%83%08%29%B5%A5%3C%6D;type=cert' \
https://example.com/admin/

In diesem Beispiel wird für die Authentifizierung in Curl ein Client Zertifikat genutzt, das sich auf einer Smartcard befindet.

Links

RedHat Anwendungen mit PKCS#11