En écho à ton PM, je colle ici ma réponse qui peut servir à d'autre ou être une base de discussion publique.
C'est fou le nombre d'étudiants qui ont un projet "pfSense" :-) ça va faire de l'ombre aux sociétés de service :-X
Désolé, la suite est longue 8)
Je connais assez peu pfSense que j'utilise depuis peu. Il faut donc prendre ma réponse avec des pincettes pour ce qui est de cet aspect.
En revanche, l'IAM est mon métier :-)
Je ne comprends pas bien si le résultat de ton projet est une étude théorique ou une mise en œuvre pratique mais, dans tous les cas, je considère que gérer des comptes (utilisateurs) sur la machine qui fait office de firewall est un non sens d'un point de vue sécurité. Ce peut être en revanche un bon compromis dans un petit environnement (PME) qui va privilégier l'aspect "all-in-one" et simplicité d'administration mais compromis veut dire également concessions. Bref….
Ce qu'il faut bien comprendre, d'une manière générale, c'est que le serveur VPN est configuré pour s'appuyer sur un service d'authentification "à définir", lequel peut être le serveur pfSense lui même, LDAP ou Radius (et pas nécessairement un package Radius sur pfSense)
Un autre paramètre de OpenVPN, potentiellement indépendant de la base de compte utilisée pour l'authentification, c'est l'aspect "cryptographique" de la connexion, lequel va s'appuyer sur un certificat coté utilisateur qui va être validé (ou pas) par le serveur VPN car celui-ci embarque, dans ce cas, son propre certificat. A ce moment, c'est du strict X509: si les certificats client et serveur sont issu d'un CA commun ou si il y a une cross-certification (qui correspond grosso-modo au trust du monde Microsoft), alors le certificat présenté par le client est validé.
Si au niveau du serveur VPN tu actives la fonction de matching de l'utilisateur, le serveur VPN va en plus s'assurer que le CN du certificat présenté correspond au login de l'utilisateur.
De la section ci-dessus découle 2 points importants:
1 - si tu veux gérer des PKI différentes pour différents type d'utilisateurs (par exemple des utilisateur permanents et des utilisateurs temporaires) alors il faut soit 2 serveurs VPN différents présentant chacun son propre certificat soit mettre en œuvre au niveau des CA de ces 2 PKI une cross-certification pour que le certificat serveur (VPN) unique valide (et soit validé dans un double hand-check X509) par des certificats utilisateurs issus de PKI distinctes.
2 - l'indépendance entre l'authentification utilisateur et le certificat présenté est toute relative si le serveur VPN force le matching ;D ;D
Qu'est-ce que ça signifie dans la pratique ?
Tu évoques dans ton PM une idée genre "génération de certificat par script" pour une catégorie de la population. S'agissant d'un certificat utilisateur, ça me laisse perplexe ??? la difficulté n'est pas là de générer le certificat mais de le transmettre de manière sécurisée à l'utilisateur avec tout ce que ça implique en terme de process et de vérification.
Dans l'absolu, cette simple partie est un projet à part entière.
En effet, il s'agit de mettre en œuvre l'infrastructure qui va permettre, à un utilisateur authentifié (et ce point est potentiellement critique) de générer, depuis son poste de travail, un CSR qui sera ensuite envoyé au serveur pour signature et donc génération du certificat. C'est un peu plus qu'un simple script mais une application à part entière, avec quelques aspects tricky. Ne pas oublier que dès lors qu'il y a des certificats qui se promènent dans la nature, il faut gérer une CRL (révocations !)
Tu trouveras sur le web quelques applications qui vont dans ce sens mais compte tenu de l'impact de ce genre de fonctionnalité, je pense qu'il est toujours souhaitable de se poser la question de "développement maison" vs. "application externe" vs. "PKI qui embarque cette fonctionnalité".
Pour répondre à ta question sur le "bypass du CA de pfSense":
1 - ça montre que en parcourant tous les tutos du web, tu as sauté quelques lignes (et tu as du mal lire la doc pfSense également :p)
2 - il suffit d'importer un certificat (dans la section CA de pfSense) signer par une CA externe et de l'utiliser au niveau de ton serveur VPN
Et voila, la partie théorique de ton étude est finie, ou presque 8)
Ou en tous cas, voila les grandes lignes, il te faut ensuite travailler sur les détails (par exemple apprendre un peu de X509 pour ne pas que ma description soit juste un truc creux ou incompréhensible)