Um die Smartcard-Umleitung auf einer virtuellen SLED/SLES-Maschine (VM) zu konfigurieren, installieren Sie die Bibliotheken, von denen die Funktion abhängt, und das Stammzertifikat der Zertifizierungsstelle (CA), um die vertrauenswürdige Authentifizierung von Smartcards zu unterstützen. Außerdem müssen Sie einige Konfigurationsdateien bearbeiten, um des Einrichten der Authentifizierung abzuschließen.
In einigen der Beispiele im Verfahren werden Platzhalterwerte verwendet, um Entitäten in Ihrer Netzwerkkonfiguration darzustellen, z. B. den DNS-Namen Ihrer Active Directory-Domäne. Ersetzen Sie die Platzhalterwerte durch spezifische Informationen für Ihre Konfiguration, wie in der folgenden Tabelle gezeigt.
| Platzhalterwert |
Beschreibung |
| dns_IP_ADDRESS |
IP-Adresse Ihres DNS-Namenservers |
| mydomain.com |
DNS-Name Ihrer Active Directory-Domäne |
| MYDOMAIN.COM |
DNS-Name Ihrer Active Directory-Domäne in Großbuchstaben |
| MYDOMAIN |
DNS-Name der Arbeitsgruppe oder NT-Domäne, in der sich Ihr Samba-Server befindet, in Großbuchstaben |
| ads-hostname |
Hostname Ihres AD-Servers |
| ads-hostname.mydomain.com |
Vollqualifizierter Domänenname (FQDN) Ihres AD-Servers |
| mytimeserver.mycompany.com |
DNS-Name Ihres NTP-Zeitservers |
| AdminUser |
Benutzername des VM-Administrators |
Prozedur
- Installieren Sie die erforderlichen Bibliothekspakete.
- Installieren Sie die PAM-Bibliothek und die anderen Pakete.
zypper install pam_pkcs11 mozilla-nss mozilla-nss-tools
pcsc-lite pcsc-ccid opensc coolkey pcsc-tools
Möglicherweise müssen Sie Erweiterungen wie PackageHub aktivieren, um alle vorangehenden Pakete zu installieren.
- Aktivieren Sie zum Verwenden der installierten Pakete Erweiterungen wie PackageHub und installieren Sie die PC/SC-Tools. Beispielsweise können Sie die folgenden Befehle für SLED/SLES 12 SP3 ausführen.
SUSEConnect --list-extensions
SUSEConnect -p PackageHub/12.3/x86_64
zypper in pcsc-tools
- Installieren Sie ein Stamm-CA-Zertifikat.
- Laden Sie ein Stamm-CA-Zertifikat herunter und speichern Sie es unter /tmp/certificate.cer auf dem System. Siehe How to export Root Certification Authority Certificate.
- Suchen Sie das heruntergeladene Stamm-CA-Zertifikat, übertragen Sie es in eine .pem-Datei und erstellen Sie eine Hash-Datei.
openssl x509 -inform der -in /tmp/certificate.cer -out /tmp/certificate.pem
cp /tmp/certificate.pem /etc/pam_pkcs11/cacerts
chmod a+r /etc/pam_pkcs11/cacerts/certificate.pem
cd /etc/pam_pkcs11/cacerts
pkcs11_make_hash_link
- Installieren Sie vertrauenswürdige Anker in der NSS-Datenbank.
mkdir /etc/pam_pkcs11/nssdb
certutil -N -d /etc/pam_pkcs11/nssdb
certutil -L -d /etc/pam_pkcs11/nssdb
certutil -A -n rootca -i certificate.pem -t "CT,CT,CT" -d /etc/pam_pkcs11/nssdb
- Installieren Sie die erforderlichen Treiber.
cp libcmP11.so /usr/lib64/
modutil -add "piv card 2.0" -libfile /usr/lib64/libcmP11.so -dbdir /etc/pam_pkcs11/nssdb/
- Bearbeiten Sie die Datei /etc/pam_pkcs11/pam_pkcs11.conf.
- Löschen Sie die Zeile use_pkcs11_module = nss. Fügen Sie an dieser Stelle die Zeile use_pkcs11_module = mysc hinzu.
- Fügen Sie das mysc-Modul hinzu, wie im folgenden Beispiel gezeigt.
pkcs11_module mysc {
module = /usr/lib64/libcmP11.so;
description = "MY Smartcard";
slot_num = 0;
nss_dir = /etc/pam_pkcs11/nssdb;
cert_policy = ca, ocsp_on, signature, crl_auto;
}
- Aktualisieren Sie die Konfiguration des Zuordnungsprogramms für allgemeine Namen, wie im folgenden Beispiel gezeigt.
# Assume common name (CN) to be the login
mapper cn {
debug = false;
module = internal;
# module = /usr/lib64/pam_pkcs11/cn_mapper.so;
ignorecase = true;
mapfile = file:///etc/pam_pkcs11/cn_map;}
- Löschen Sie die Zeile use_mappers = ms. Fügen Sie an dieser Stelle die Zeile use_mappers = cn, null hinzu.
- Bearbeiten Sie die Konfigurationsdatei /etc/pam_pkcs11/cn_map , damit sie die folgende Zeile enthält.
ads-hostname -> ads-hostname
- Bearbeiten Sie die PAM-Konfiguration.
- Um die Konfiguration der Smartcard-Authentifizierung zu ermöglichen, deaktivieren Sie zunächst das Tool pam_config.
find /etc/pam.d/ -type l -iname "common-*" -delete
for X in /etc/pam.d/common-*-pc; do cp -ivp $X ${X:0:-3}; done
- Erstellen Sie eine Datei mit dem Namen common-auth-smartcard im Verzeichnis /etc/pam.d/. Fügen Sie der Datei den folgenden Inhalt hinzu.
auth required pam_env.so
auth sufficient pam_pkcs11.so
auth optional pam_gnome_keyring.so
auth [success=1 default=ignore] pam_unix.so nullok_secure try_first_pass
auth required pam_winbind.so use_first_pass
- Ersetzen Sie die Zeile auth include common-auth durch die Zeile auth include common-auth-smartcard in den beiden folgenden Dateien: /etc/pam.d/gdm und /etc/pam.d/xscreensaver.
- Um zu konfigurieren, dass der pcscd-Dienst nach dem Neustart der VM automatisch gestartet wird, bearbeiten Sie die entsprechende Datei für Ihre SLED/SLES-Version.
- (SLED/SLES 12.x) Fügen Sie die Zeile
rcpcscd start in /etc/init.d/after.local hinzu, sodass die Datei dem folgenden Beispiel ähnelt. #! /bin/sh
#
# Copyright (c) 2010 SuSE LINUX Products GmbH, Germany. All rights reserved.
#
# Author: Werner Fink, 2010
#
# /etc/init.d/after.local
#
# script with local commands to be executed from init after all scripts
# of a runlevel have been executed.
#
# Here you should add things, that should happen directly after
# runlevel has been reached.
#
rcpcscd start
- (SLED/SLES 15.x) Fügen Sie die Zeile
WantedBy=multi-user.target in /usr/lib/systemd/system/pcscd.service hinzu, sodass die Datei dem folgenden Beispiel ähnelt.[Unit]
Description=PC/SC Smart Card Daemon
Requires=pcscd.socket
[Service]
ExecStart=/usr/sbin/pcscd --foreground --auto-exit
ExecReload=/usr/sbin/pcscd --hotplug
[Install]
Also=pcscd.socket
WantedBy=multi-user.target
Führen Sie nach dem Bearbeiten der
pcscd.service-Datei den folgenden Befehl aus.
systemctl enable pcscd
Hinweis: Wenn der pcscd-Dienst nach dem Neustart der VM nicht gestartet wird, schlägt die Erstanmeldung über pam_pkcs11 fehl.
- Deaktivieren Sie die Firewall.
rcSuSEfirewall2 stop
chkconfig SuSEfirewall2_setup off
chkconfig SuSEfirewall2_init off
Hinweis: Die Smartcard-Umleitung schlägt manchmal fehl, wenn die Firewall aktiviert ist.
- (SLED/SLES 15.x) Um sicherzustellen, dass Smartcard Greeter ordnungsgemäß funktioniert, ändern Sie die Datei org.gnome.Shell.desktop auf der VM.
- Öffnen Sie die Datei /usr/share/applications/org.gnome.Shell.desktop.
- Suchen und ersetzen Sie in der Datei
Exec=/usr/bin/gnome-shell durch die folgende Zeile.
Exec=sh -c "DISPLAY=:${DISPLAY##*:} exec /usr/bin/gnome-shell"
- Speichern und schließen Sie die Datei.
- Um die Smartcard-SSO-Funktion (Single Sign-On) zu unterstützen, konfigurieren Sie die Datei /etc/vmware/viewagent-greeter.conf. Siehe Einstellen der Optionen in Konfigurationsdateien auf einem Linux-Desktop.
- Installieren Sie das Paket Horizon Agent mit aktivierter Smartcard-Umleitung.
sudo ./install_viewagent.sh -m yes
Hinweis: Wenn Sie eine Fehlermeldung erhalten, die Sie auffordert, die Standard-PC/SC-Lite-Bibliothek zu installieren, deinstallieren Sie die benutzerdefinierte PC/SC-Lite-Bibliothek, die derzeit auf der Maschine vorhanden ist, und installieren Sie die Standard-PC/SC-Lite-Bibliothek mithilfe des folgenden Befehls.
zypper install -f -y pcsc-lite libpcsclite1
Anschließend können Sie das Horizon Agent-Installationsprogramm ausführen.
- Wenn Sie eine benutzerdefinierte PC/SC Lite-Bibliothek verwenden, konfigurieren Sie die Optionen pcscd.maxReaderContext und pcscd.readBody in der Datei /etc/vmware/config.
- Starten Sie die VM neu und melden Sie sich erneut an.