\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{dim. févr. 12 14:22:01 CET 2012}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={pam\_pkcs11},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Module PAM d'authentification via une librairie PKCS \#11},
CreationDate={D:20120212142201},
ModDate={D:20120212142201},
Keywords={PKI;sécurité;certificats;authentification;pam}
}}
\begin{document}
 
\begin{center}
{\Huge pam\_pkcs11 }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Module PAM d'authentification via une librairie PKCS \#11}
 
\vspace{10mm}
 
\hspace{1mm}  Module PAM pour faire de l'authentification au moyen d'un certificat X509 au travers d'une librairie PKCS \#11. Pour la vérification des certificats utilisateurs, le certificat de l'autorité stocké localement et la CRL en ligne ou locale sont utilisés. Les modules PKCS \#11 doivent remplir les prérequis de RSA Asymmetric Client Signing Profil. Pour permettre au propriétaire d'un certificat de se connecter, pam\_pkcs11 utilise des modules appelés des mappers, qui effectuent des mappages cert-to-login.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Configurer le package }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} 1.]{créer le répertoire de base /etc/pam\_pkcs11/}
\item[\hspace{1mm} 2.]{Copier \$\verb|{|base\verb|}|/etc/pam\_pkcs11.conf.example dans /etc/pam\_pkcs11/ et le renommer en /etc/pam\_pkcs11/pam-pkcs11.conf}
\item[\hspace{1mm} 3.]{créer /etc/pam\_pkcs11/crls/ et /etc/pam\_pkcs11/cacerts/. Le répertoire tools/ fournis un outil pkcs11\_make\_hask\_link qui peut être utilisé pour créer les fichiers de hash pour chaque fichier certificat et crl valide.}
\item[\hspace{1mm} 4.]{Choisir un ou plusieurs mappers à installer, les configurer.}
\item[\hspace{1mm} 5.]{Éditer et configurer /etc/pam.d/xxx}
\item[\hspace{1mm} 6.]{Utiliser pkcs11\_inspect et pklogin\_finder pour voir si vous pouvez lire le certificat et effectuer un mappage correct}
\item[\hspace{1mm} 7.]{tester un login.}
\end{description}
 
\vspace{1cm}{\huge Configurer pam\_pkcs11 }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} ]{la configuration de pam-pkcs11 se fait en 2 étapes:}
\item[\hspace{1mm} 1.]{configurer pam-pkcs11}
\item[\hspace{1mm} 2.]{Configurer les options PAM.}
\end{description}
 
\vspace{1cm}{\huge Vous devez connaître }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} -]{quel module PKCS \#11 vous allez utiliser, et son fichier}
\item[\hspace{1mm} -]{quels mappers vous voulez et comment le créer et l'éditer}
\item[\hspace{1mm} -]{Les fichiers de l'authorité de certification et le fichier de révocation}
\item[\hspace{1mm} -]{Une liste d'utilisateurs autorisés à se connecter, et leur certificats correspondant.}
\end{description}
 
\vspace{1cm}{\huge Spécifier la CRL et la CA }
 
\
 
\hspace{1mm}  pam-pkcs11 a besoin d'une liste d'authorité de certification reconnue pour valider l'utilisateur. Celà s'applique également à la CRL :
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} 1.]{Créer les répertoire ca\_dir et crl\_dir en accord avec le fichier de configuration}
\item[\hspace{1mm} 2.]{Copier les certificats de la CA au format DER ou PEM}
\item[\hspace{1mm} 3.]{Créer un hash link vers les certificats CA, fournis avec pkcs11\_make\_hash\_link. Noter que openSSL doit être installé :}
\item[\hspace{1mm} ]{cd /etc/pam\_pkcs11/cacerts}
\item[\hspace{1mm} ]{/usr/bin/pkcs11\_make\_hash\_link}
\item[\hspace{1mm} 4.]{Répéter la procédure pour la CRL}
\item[\hspace{1mm} 5.]{Sélectionner la stratégie de vérification de certificat (cert\_policy)}
\end{description}
 
\hspace{1mm}  NOTE : Du à des limitations de librairie OpenSSL, les certificats de la CA doivent résider dans le système de fichier local.
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} ]{Un fichier de map a la syntaxe suivante:}
\item[\hspace{1mm} Certificate1 data -> login1]{}
\item[\hspace{1mm} Certificate2 data -> login2]{}
\item[\hspace{1mm} Certificate3 data -> login3]{}
\item[\hspace{1mm} ]{Ce fichier est parsé du début àla fin et la première occurence qui match est retournée.}
\end{description}
 
\vspace{1cm}{\huge Configuration PAM }
 
\
 
\hspace{1mm}  Configurer les fichiers pam.d
\vspace{5mm} \\
\hspace{1mm}  \textbf{auth sufficient pam\_pkcs11.so ...}
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge OPTIONS }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} debug]{mode debug}
\item[\hspace{1mm} err\_display\_time]{Secondes à attendre après un message d'erreur pour lire le message}
\item[\hspace{1mm} config\_file]{Spécifier le fichier de configuration (défaut : /etc/pam\_pkcs11/pam\_pkcs11.conf)}
\item[\hspace{1mm} nullok]{Autorise les mots de passe vide}
\item[\hspace{1mm} use\_first\_pass]{Ne demande pas le mot de passe à l'utilisateur, mais le prend depuis le PAM\_items.}
\item[\hspace{1mm} try\_first\_pass]{Ne demande pas le mot de passe à l'utilisateur à moins que PAM\_(OLD)AUTHOK ne soit pas mis.}
\item[\hspace{1mm} use\_authok]{Comme try\_first\_pass mais échoue si le nouveau PAM\_AUTHOK n'a pas été précédemment mis.}
\item[\hspace{1mm} pkcs11\_module=<file>]{Nom de fichier du module PKCS11 (défaut : /etc/pam\_pkcs11/pkcs11\_module.so)}
\item[\hspace{1mm} slot\_num=<nb>]{Numéro de slot à utiliser (défaut = 0 = utiliser le premier slot disponible)}
\item[\hspace{1mm} ca\_dir=<path>]{Répertoire contenant les certificats CA (défault : /etc/pam\_pkcs11/cacerts/)}
\item[\hspace{1mm} crl\_dir=<path>]{Répertoire contenant la CRL (défault : /etc/pam\_pkcs11/crls/)}
\item[\hspace{1mm} cert\_policy=none, ca, signature, crl\_online, crl\_offline, crl\_auto]{Spécifier la stratégie de vérification par défaut.}
\end{description}
 
\vspace{1cm}{\huge Utiliser la fonction d'auto-détection de LOGIN }
 
\
 
\hspace{1mm}  Depuis pam-pkcs11-0.4.2 pam-pkcs11 peut déduire le username depuis le certificat utilisateur sans utiliser le login prompt.
\vspace{5mm} \\
\hspace{1mm}  Quand pam\_get\_user() retourne null ou une chaîne vide, pam-pkcs11 va alors utiliser la fonction ’find’ du mapper au lieu du match normal. Si le finder retourne un succès, le username est définit avec pam\_set\_item(PAM\_USER) et PAM\_AUTH\_OK est retourné.
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} ]{Il y’a 2 manières d’utiliser cette fonctionnalité :}
\item[\hspace{1mm} a.]{Patcher gdm et login pour détecter la présence d’un carte et retourner null comme nom d’utilisateur}
\item[\hspace{1mm} b.]{Utiliser une version non patchée et entrée un espace pour login et entrée pour gdm.}
\end{description}
\end{flushleft}
\end{document}
