Chapitre 6. Configuration de l'authentification par carte à puce avec des certificats locaux
Ce chapitre décrit un scénario dans lequel
- L'hôte n'est pas connecté à un domaine.
- Vous souhaitez vous authentifier avec une carte à puce sur cet hôte.
- Vous souhaitez configurer l'accès SSH en utilisant l'authentification par carte à puce.
-
Vous voulez configurer la carte à puce avec
authselect
.
Utilisez la configuration suivante pour réaliser ce scénario :
Obtenez un certificat d'utilisateur pour l'utilisateur qui souhaite s'authentifier à l'aide d'une carte à puce. Le certificat doit être généré par une autorité de certification fiable utilisée dans le domaine.
Si vous ne pouvez pas obtenir le certificat, vous pouvez générer un certificat utilisateur signé par une autorité de certification locale à des fins de test,
- Stockez le certificat et la clé privée dans une carte à puce.
- Configurer l'authentification par carte à puce pour l'accès SSH.
Si un hôte peut faire partie du domaine, ajoutez-le au domaine et utilisez les certificats générés par Active Directory ou l'autorité de certification de la gestion des identités.
Pour plus d'informations sur la création de certificats IdM pour une carte à puce, voir Configuration de la gestion des identités pour l'authentification par carte à puce.
Conditions préalables
Authselect installé
L'outil authselect configure l'authentification des utilisateurs sur les hôtes Linux et vous pouvez l'utiliser pour configurer les paramètres d'authentification par carte à puce. Pour plus d'informations sur authselect, voir Explication de authselect.
Carte à puce ou périphériques USB pris en charge par RHEL 9
Pour plus de détails, voir la prise en charge des cartes à puce dans RHEL9.
6.1. Création de certificats locaux
Cette section décrit comment effectuer ces tâches :
- Générer l'autorité de certification OpenSSL
- Créer une demande de signature de certificat
Les étapes suivantes sont destinées à des fins de test uniquement. Les certificats générés par une autorité de certification locale auto-signée ne sont pas aussi sûrs qu'une autorité de certification AD, IdM ou RHCS. Vous devez utiliser un certificat généré par l'autorité de certification de votre entreprise, même si l'hôte ne fait pas partie du domaine.
Procédure
Créez un répertoire où vous pourrez générer le certificat, par exemple :
# mkdir /tmp/ca # cd /tmp/ca
Mettre en place le certificat (copier ce texte sur votre ligne de commande dans le répertoire
ca
) :cat > ca.cnf <<EOF [ ca ] default_ca = CA_default [ CA_default ] dir = . database = \$dir/index.txt new_certs_dir = \$dir/newcerts certificate = \$dir/rootCA.crt serial = \$dir/serial private_key = \$dir/rootCA.key RANDFILE = \$dir/rand default_days = 365 default_crl_days = 30 default_md = sha256 policy = policy_any email_in_dn = no name_opt = ca_default cert_opt = ca_default copy_extensions = copy [ usr_cert ] authorityKeyIdentifier = keyid, issuer [ v3_ca ] subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer:always basicConstraints = CA:true keyUsage = critical, digitalSignature, cRLSign, keyCertSign [ policy_any ] organizationName = supplied organizationalUnitName = supplied commonName = supplied emailAddress = optional [ req ] distinguished_name = req_distinguished_name prompt = no [ req_distinguished_name ] O = Example OU = Example Test CN = Example Test CA EOF
Créez les répertoires suivants :
# mkdir certs crl newcerts
Créez les fichiers suivants :
# touch index.txt crlnumber index.txt.attr
Inscrivez le numéro 01 dans le fichier série :
# echo 01 > serial
Cette commande écrit un numéro 01 dans le fichier de série. Il s'agit du numéro de série du certificat. Ce numéro augmente d'une unité à chaque nouveau certificat délivré par l'autorité de certification.
Créer une clé d'autorité de certification racine OpenSSL :
# openssl genrsa -out rootCA.key 2048
Créer un certificat d'autorité de certification racine auto-signé :
# openssl req -batch -config ca.cnf \ -x509 -new -nodes -key rootCA.key -sha256 -days 10000 \ -set_serial 0 -extensions v3_ca -out rootCA.crt
Créez la clé de votre nom d'utilisateur :
# openssl genrsa -out example.user.key 2048
Cette clé est générée dans le système local, qui n'est pas sécurisé. Il faut donc retirer la clé du système lorsqu'elle est stockée dans la carte.
Vous pouvez également créer une clé directement dans la carte à puce. Pour ce faire, suivez les instructions du fabricant de votre carte à puce.
Créez le fichier de configuration de la demande de signature de certificat (copiez ce texte sur votre ligne de commande dans le répertoire ca) :
cat > req.cnf <<EOF [ req ] distinguished_name = req_distinguished_name prompt = no [ req_distinguished_name ] O = Example OU = Example Test CN = testuser [ req_exts ] basicConstraints = CA:FALSE nsCertType = client, email nsComment = "testuser" subjectKeyIdentifier = hash keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment extendedKeyUsage = clientAuth, emailProtection, msSmartcardLogin subjectAltName = otherName:msUPN;UTF8:testuser@EXAMPLE.COM, email:testuser@example.com EOF
Créez une demande de signature de certificat pour votre certificat example.user :
# openssl req -new -nodes -key example.user.key \ -reqexts req_exts -config req.cnf -out example.user.csr
Configurez le nouveau certificat. La période d'expiration est fixée à 1 an :
# openssl ca -config ca.cnf -batch -notext \ -keyfile rootCA.key -in example.user.csr -days 365 \ -extensions usr_cert -out example.user.crt
À ce stade, l'autorité de certification et les certificats sont générés avec succès et préparés pour l'importation dans une carte à puce.