« Koji/SigulInstall » : différence entre les versions
| (37 versions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 1 : | Ligne 1 : | ||
= | == Vue d'ensemble == | ||
Sigul | <class>Sigul</class> est une suite logicielle pour un serveur de signature, qui peut signer les RPMs ou de simple ou multiples fichiers. Toutes les clés [[Security/OpenGPG|GPG]] sont stockés uniquement sur le serveur <class>Sigul</class> (Sigul server), et donc aucun utilisateur n'a accès à aucune clé publique ou privée. Toutes les communications avec le serveur passent par le pont <class>Sigul</class> (Sigul bridge) qui agit comme une passerelle entre le client et le serveur. Cela isole le serveur et interdit tout accès extérieur autre que depuis le pont. Le client <class>Sigul</class>, une fois configuré, autorise les utilisateurs à signer les RPMs avec les clés créées (ou importées) sur le serveur <class>Sigul</class>, en envoyant des commandes au pont, qui lui se chargera de transmettre au serveur. | ||
[[Fichier:SigulArch.svg|441px|centré|vignette|Architecture de Sigul]] | |||
{{Admon/bug|<class>Sigul</class> sur les systèmes el6|<class>Sigul</class> a un bug récurrent<ref>https://bugzilla.redhat.com/show_bug.cgi?format=multiple&id=894019</ref> sur les systèmes el6 et a besoin de travailler avec le paquet <package>gnupg1</package> au lieu du paquet par défaut <package>gnupg2</package>. | |||
= | Il faut modifier le fichier <path>/usr/share/sigul/settings.py</path> | ||
<pre>gnupg_bin = "/usr/bin/gpg1"</pre> | |||
Le paquet <package>sigul</package> du dépôt B2PWeb intègre déjà les modifications pour travailler avec <package>gnupg1</package>.}} | |||
= | == Installation == | ||
Rien de plus simple, on installe via [[RPM/UsingYum|yum]], puis on créé l'arborescence nécessaire aux composants de <class>Sigul</class> {{Admon/smiley|:)}} | |||
La création de l'arborescence est rendue nécessaire par le fait d'installer le pont et le serveur sur le même système (chose qui n'est pas recommandée pour des raisons de sécurité) | |||
{{Admon/ | <syntaxhighlight lang="bash"> | ||
yum install sigul | |||
su - sigul -s /bin/bash -c 'mkdir /var/lib/sigul/{bridge,server}' | |||
</syntaxhighlight> | |||
{{Admon/tip|Modification permanente pour l'utilisateur sigul|Il peut être pratique de fixer le shell pour l'utilisateur sigul afin de simplifier les commandes d'administrations | |||
<syntaxhighlight lang="bash"># usermod -s /bin/bash sigul</syntaxhighlight> | |||
De même, on peut fixer définitivement les variables utilisées dans l'installation en ajoutant au fichier <path>~/.bash_profile</path> de l'utilisateur sigul | |||
<pre> | |||
bridge_dir=/var/lib/sigul/bridge | |||
server_dir=/var/lib/sigul/server | |||
export bridge_dir | |||
export server_dir | |||
gpgagent=$(ps aux | grep gpg | grep sigul | grep -v grep | wc -l) | |||
| | [ ${gpgagent} -eq 0 ] && gpg-agent --homedir=/var/lib/sigul/server --daemon --use-standard-socket 1>/dev/null 2>&1 | ||
| | </pre> | ||
}} | |||
{{Admon/note|FAS|FAS est le système de compte de Fedora, nous n'avons pas besoin de FAS pour un système <class>Sigul</class> personnel.}} | |||
{{Admon/warning|Mot de passe NSS| Il faut impérativement se rappeler tous les mots de passes utilisés ici.}} | |||
| | |||
| | |||
| | |||
|} | |||
== Firewall == | |||
* Le pont <class>Sigul</class> doit pouvoir communiquer avec le serveur <class>Sigul</class> ( default: TCP port 44333 ) | |||
< | * Tous les clients <class>Sigul</class> doivent pouvoir communiquer avec le pont <class>Sigul</class> ( default: TCP port 44334 ) | ||
[sigul | |||
Naturellement, Le pont peut avoir des accès plus restrictifs ( autorisation de quelques adresses IP ) | |||
</ | * Pour le pont<syntaxhighlight lang="bash">iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 44334 -j ACCEPT</syntaxhighlight> | ||
* Pour le serveur (une seule adresse autorisée)<syntaxhighlight lang="bash">iptables -A INPUT -s 192.168.0.148/32 -p tcp -m state --state NEW -m tcp --dport 44333 -j ACCEPT</syntaxhighlight> | |||
== Mise en place du pont == | |||
Le pont agit en tant que passerelle centrale su système <class>Sigul</class>. C'est le seul composant qui dialogue avec le serveur, c'est à dire que les commandes clientes pour le serveur vont être envoyées au pont, qui les relayera au serveur, recevra la réponse et la redistribuera au client. Le pont agit en tant que passerelle pour [[Koji]] pour la signature des paquets, le pont dialogue avec le [[Koji/Installation#Pr.C3.A9sentation|Hub Koji]] avec l’authentification d'un utilisateur Proxy, comme Kojiweb. La partie sur la liaison entre <class>Sigul</class> et <class>Koji</class> est [[Koji/SigulInstall#Configuration_de_Sigul_pour_koji|ici]]. | |||
Pour démarrer la mise en place, on doit générer les certificats qui seront utilisés pour authentifier les différent composants du système <class>Sigul</class> entre eux. Le pont sera utilisé comme Autorité de Certification pour les communications internes du système <class>Sigul</class>. | |||
=== Opérations avec le compte sigul === | |||
* Comme toutes '''les commandes de cette partie doivent être lancées par l'utilisateur sigul''', on va donc devenir cet utilisateur<syntaxhighlight lang="bash"># su - sigul</syntaxhighlight> | |||
* Définition du répertoire de destination<syntaxhighlight lang="bash">bridge_dir=/var/lib/sigul/bridge</syntaxhighlight> | |||
* Création de la base de données NSS, pour garder les informations des certificats, dans le répertoire de destination définit par la variable ''$bridge_dir''<syntaxhighlight lang="bash">certutil -d $bridge_dir -N</syntaxhighlight> | |||
* Génération de l'autorité de certification (CA: Certificate Authority) qui sera utilisée par tous les composants <class>Sigul</class><syntaxhighlight lang="bash">certutil -d $bridge_dir -S -n sigul-ca -s 'CN=Sigul CA' -t CT,, -x -v 120</syntaxhighlight> | |||
* Génération d'un certificat pour le pont<br>Le champs CN doit être le nom complet de l'hôte (fqdn) sur lequel le pont est hebergé<syntaxhighlight lang="bash">certutil -d $bridge_dir -S -n sigul-bridge-cert -s 'CN=koji.b2pweb.com' -c sigul-ca -t u,, -v 120</syntaxhighlight> | |||
=== Opérations avec le compte root === | |||
Il est temps de configurer le pont en éditant le fichier <path>/etc/sigul/bridge.conf</path> | |||
<pre> | <pre> | ||
[sigul | [bridge] | ||
bridge-cert-nickname: sigul-bridge-cert | |||
client-listen-port: 44334 | |||
server-listen-port: 44333 | |||
max-rpms-payload-size: 10737418240 | |||
[koji] | |||
koji-config: ~/.koji/config | |||
[daemon] | |||
unix-user: sigul | |||
[ | unix-group: sigul | ||
[nss] | |||
nss-dir: /var/lib/sigul/bridge | |||
[ | nss-password: bridgensspasswd | ||
</pre> | </pre> | ||
== | === Test === | ||
Lancement en mode debug, les logs se trouvant dans le fichier <path>/var/log/sigul_bridge.log</path> | |||
<syntaxhighlight lang="bash">sigul_bridge -v -v</syntaxhighlight> | |||
Vérification du fichier journal et s'il n'y a pas d'erreur, on peut continuer. | |||
{{Admon/note| | {{Admon/note|Le premier message du fichier <path>/var/log/sigul_bridge.log</path> doit être | ||
<pre>2011-11-24 16:41:42,214 DEBUG: Waiting for the client to connect</pre>}} | <pre>2011-11-24 16:41:42,214 DEBUG: Waiting for the client to connect</pre>}} | ||
Arrêt du pont sigul CRTL-C | |||
=== Démarrage === | |||
On peut maintenant lancer le deamon et activer son démarrage automatique au démarrage. | |||
'''systemd''' | |||
<syntaxhighlight lang="bash"> | |||
systemctl start sigul_bridge.service | |||
systemctl enable sigul_bridge.service | |||
</syntaxhighlight> | |||
'''sysVinit''' | |||
<syntaxhighlight lang="bash"> | |||
service sigul_bridge start | |||
chkconfig sigul_bridge on | |||
</syntaxhighlight> | |||
== Mise en place du serveur == | |||
Le serveur est complètement isolé du reste du monde. Toutes les communications depuis l'extérieur doivent être interdites, exception faite des communications avec le pont. De même, les communications sortantes doivent être restreintes au pont pour un maximum de sécurité. Il faut s'assurer qu'aucun accès exterieur est possible (même web). Il détient toutes les clés pour signer les RPMs, et donc aucun utilisateur ne doit avoir accès directement aux clés, le serveur est le seul système qui connait les clés. | |||
=== Opérations préalables sur le pont avec l'utilisateur sigul === | |||
* Export de l'autorité de certification dans le fichier <path>sigulca.p12</path><syntaxhighlight lang="bash">pk12util -d $bridge_dir -o sigulca.p12 -n sigul-ca</syntaxhighlight> | |||
* Copie du fichier <path>sigulca.p12</path> sur le serveur <class>Sigul</class> | |||
* Destruction de l'export<syntaxhighlight lang="bash">rm -f sigulca.p12</syntaxhighlight> | |||
=== Opérations avec l'utilisateur sigul === | |||
== | * Comme toutes '''les commandes de cette partie doivent être lancées par l'utilisateur sigul''', on va donc devenir cet utilisateur<syntaxhighlight lang="bash"># su - sigul</syntaxhighlight> | ||
* Définition du répertoire de destination<syntaxhighlight lang="bash">server_dir=/var/lib/sigul/server</syntaxhighlight> | |||
* Création de la base de données NSS, pour garder les informations des certificats, dans le répertoire de destination définit par la variable ''$server_dir''<syntaxhighlight lang="bash">certutil -d $server_dir -N</syntaxhighlight> | |||
* Import de l'autorité de certification (CA: Certificate Authority)<syntaxhighlight lang="bash">pk12util -d $server_dir -i sigulca.p12</syntaxhighlight><syntaxhighlight lang="bash">certutil -d $server_dir -M -n sigul-ca -t CT,,</syntaxhighlight> | |||
* Génération d'un certificat pour le serveur<br>Le champs CN doit être le nom complet de l'hôte (fqdn) sur lequel le serveur est hebergé<syntaxhighlight lang="bash">certutil -d $server_dir -S -n sigul-server-cert -s 'CN=koji.b2pweb.com' -c sigul-ca -t u,, -v 120</syntaxhighlight> | |||
* Suppression de l'export de l'autorité de certification<syntaxhighlight lang="bash">rm -f sigulca.p12</syntaxhighlight> | |||
{{Admon/bug|Répertoire racine de gnupg|Bien que la configuration de sigul puisse être éditée, | |||
<pre>_default_storage_path = '/var/lib/sigul/server' | |||
default_gnupg_home = os.path.join(_default_storage_path, 'gnupg') | |||
</pre> | |||
il faut quand même rajouter un lien symbolique à la racine du répertoire personnel de sigul. | |||
<pre> | |||
cd /var/lib/sigul | |||
ln -s /var/lib/sigul/server/gnupg gnupg | |||
</pre>}} | |||
=== Opérations avec l'utilisateur root === | |||
Il est temps de configurer le serveur en éditant le fichier <path>/etc/sigul/server.conf</path>. | |||
<pre> | <pre> | ||
[ | [server] | ||
bridge-hostname: koji.didier-linux.eu | |||
bridge-port: 44333 | |||
max-file-payload-size: 1073741824 | |||
max-memory-payload-size: 1048576 | |||
max-rpms-payload-size: 10737418240 | |||
server-cert-nickname: sigul-server-cert | |||
signing-timeout: 60 | |||
[database] | |||
database-path: /var/lib/sigul/server/server.sqlite | |||
[gnupg] | |||
gnupg-home: /var/lib/sigul/server/gnupg | |||
gnupg-key-type: DSA | |||
gnupg-key-length: 1024 | |||
gnupg-subkey-type: ELG-E | |||
gnupg-subkey-length: 2048 | |||
gnupg-key-usage: sign | |||
passphrase-length: 64 | |||
[daemon] | |||
unix-user: sigul | |||
unix-group: sigul | |||
[ | |||
[nss] | |||
nss-dir: /var/lib/sigul/server | |||
[ | nss-password: ********** | ||
</pre> | </pre> | ||
= | On va maintenant créer la base de données pour que le serveur y stocke les informations à propos des utilisateurs et des clés | ||
<syntaxhighlight lang="bash">sigul_server_create_db</syntaxhighlight> | |||
On va ajouter l'administrateur initial. Celui-ci doit déjà exister localement sur le système. | |||
<syntaxhighlight lang="bash">sigul_server_add_admin</syntaxhighlight> | |||
=== Test === | |||
Lancement en mode debug, les logs se trouvant dans le fichier <path>/var/log/sigul_server.log</path> | |||
< | <syntaxhighlight lang="bash">sigul_server -v -v</syntaxhighlight> | ||
Vérification du fichier journal et s'il n'y a pas d'erreur, on peut continuer. | |||
{{Admon/note|You should see the first log message in <path>/var/log/sigul_server.log:</path> | {{Admon/note|You should see the first log message in <path>/var/log/sigul_server.log:</path> | ||
<pre>2011-11-24 16:36:42,154 DEBUG: Waiting for a request</pre>}} | <pre>2011-11-24 16:36:42,154 DEBUG: Waiting for a request</pre>}} | ||
Arrêt du pont sigul CRTL-C | |||
=== Démarrage === | |||
On peut maintenant lancer le deamon et activer son démarrage automatique au démarrage. | |||
'''systemd''' | |||
<syntaxhighlight lang="bash"> | |||
systemctl start sigul_server.service | |||
systemctl enable sigul_server.service | |||
</syntaxhighlight> | |||
'''sysVinit''' | |||
<syntaxhighlight lang="bash"> | |||
service sigul_server start | |||
chkconfig sigul_server on | |||
</syntaxhighlight> | |||
== Mise en place du Client == | |||
Le client doit pouvoir s'authentifier sur le pont avec des certificats pour pouvoir envoyer des commandes à celui-ci. | |||
=== | === Opérations préalables sur le pont avec l'utilisateur sigul === | ||
== | * Export de l'autorité de certification dans le fichier <path>sigulca.p12</path><syntaxhighlight lang="bash">pk12util -d $bridge_dir -o sigulca.p12 -n sigul-ca</syntaxhighlight> | ||
* Copie du fichier <path>sigulca.p12</path> sur le client <class>Sigul</class> et modification du propriétaire sur celui-ci | |||
* Destruction de l'export<syntaxhighlight lang="bash">rm -f sigulca.p12</syntaxhighlight> | |||
=== Opérations sur le client avec l'utilisateur root === | |||
Edition du fichier <path>/etc/sigul/client.conf</path> | |||
<pre> | |||
[client] | |||
bridge-hostname: koji.didier-linux.eu | |||
bridge-port: 44334 | |||
client-cert-nickname: sigul-client-cert | |||
server-hostname: koji.didier-linux.eu | |||
[koji] | |||
koji-config: ~/.koji/config | |||
[nss] | [nss] | ||
nss- | nss-dir: ~/.sigul | ||
</pre> | </pre> | ||
=== Opérations sur le client avec l'utilisateur qui utilisera Sigul === | |||
* Définition du répertoire de destination<syntaxhighlight lang="bash">client_dir=~/.sigul</syntaxhighlight> | |||
== | * Création de celui-ci<syntaxhighlight lang="bash">mkdir $client_dir</syntaxhighlight> | ||
* Création de la base de données NSS, pour garder les informations des certificats, dans le répertoire de destination définit par la variable ''$client_dir''<syntaxhighlight lang="bash">certutil -d $client_dir -N</syntaxhighlight> | |||
* Import de l'autorité de certification (CA: Certificate Authority)<syntaxhighlight lang="bash">pk12util -d $client_dir -i sigulca.p12</syntaxhighlight><syntaxhighlight lang="bash">certutil -d $client_dir -M -n sigul-ca -t CT,,</syntaxhighlight> | |||
* Génération d'un certificat pour le serveur<br>Le champs CN doit être le login de l'utilisateur pour le système <class>Sigul</class><syntaxhighlight lang="bash">certutil -d $client_dir -S -n sigul-client-cert -s 'CN=root' -c sigul-ca -t u,, -v 120</syntaxhighlight> | |||
* Suppression de l'export de l'autorité de certification<syntaxhighlight lang="bash">rm -f sigulca.p12</syntaxhighlight> | |||
* Copie du fichier de configuration générale des clients <path>/etc/sigul/client.conf</path> dans son répertoire personnel <path>~/.sigul/client.conf</path><syntaxhighlight lang="bash">cp /etc/sigul/client.conf ~/.sigul/client.conf</syntaxhighlight> | |||
* Édition du fichier <path>~/.sigul/client.conf</path> pour insérer le mot de passe de l'utilisateur dans la section [nss].<syntaxhighlight lang="bash">nss-password: Your NSS PASS</syntaxhighlight> | |||
=== Test === | |||
Test avec une commande sigul pour valider le bon fonctionnement de toute la chaine | |||
sigul list-users | |||
On peut maintenant utiliser pleinement <class>Sigul</class>. | |||
=Sigul | ==Sigul Client Config Script== | ||
Ce script peut être utilisé pour mettre en place rapidement l’authentification pour un client <class>Sigul</class> quand l’authentification FAS n'est pas utilisée. | |||
{{Admon/important|L'utilisateur doit déjà être créé sur le serveur|Ce script ne fait que la mise en place des certificats.}} | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
#!/bin/bash | #!/bin/bash | ||
| Ligne 294 : | Ligne 303 : | ||
#########################################\ | #########################################\ | ||
</syntaxhighlight> | </syntaxhighlight> | ||
= | == Utilisation == | ||
Utilisation de son [[Koji/SigulUsing|Sigul signing server]] | |||
== Références == | |||
<references/> | |||
Dernière version du 22 avril 2015 à 07:41
Vue d'ensemble
<class>Sigul</class> est une suite logicielle pour un serveur de signature, qui peut signer les RPMs ou de simple ou multiples fichiers. Toutes les clés GPG sont stockés uniquement sur le serveur <class>Sigul</class> (Sigul server), et donc aucun utilisateur n'a accès à aucune clé publique ou privée. Toutes les communications avec le serveur passent par le pont <class>Sigul</class> (Sigul bridge) qui agit comme une passerelle entre le client et le serveur. Cela isole le serveur et interdit tout accès extérieur autre que depuis le pont. Le client <class>Sigul</class>, une fois configuré, autorise les utilisateurs à signer les RPMs avec les clés créées (ou importées) sur le serveur <class>Sigul</class>, en envoyant des commandes au pont, qui lui se chargera de transmettre au serveur.
Installation
Rien de plus simple, on installe via yum, puis on créé l'arborescence nécessaire aux composants de <class>Sigul</class>
La création de l'arborescence est rendue nécessaire par le fait d'installer le pont et le serveur sur le même système (chose qui n'est pas recommandée pour des raisons de sécurité)
yum install sigul
su - sigul -s /bin/bash -c 'mkdir /var/lib/sigul/{bridge,server}'
Firewall
- Le pont <class>Sigul</class> doit pouvoir communiquer avec le serveur <class>Sigul</class> ( default: TCP port 44333 )
- Tous les clients <class>Sigul</class> doivent pouvoir communiquer avec le pont <class>Sigul</class> ( default: TCP port 44334 )
Naturellement, Le pont peut avoir des accès plus restrictifs ( autorisation de quelques adresses IP )
- Pour le pont
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 44334 -j ACCEPT - Pour le serveur (une seule adresse autorisée)
iptables -A INPUT -s 192.168.0.148/32 -p tcp -m state --state NEW -m tcp --dport 44333 -j ACCEPT
Mise en place du pont
Le pont agit en tant que passerelle centrale su système <class>Sigul</class>. C'est le seul composant qui dialogue avec le serveur, c'est à dire que les commandes clientes pour le serveur vont être envoyées au pont, qui les relayera au serveur, recevra la réponse et la redistribuera au client. Le pont agit en tant que passerelle pour Koji pour la signature des paquets, le pont dialogue avec le Hub Koji avec l’authentification d'un utilisateur Proxy, comme Kojiweb. La partie sur la liaison entre <class>Sigul</class> et <class>Koji</class> est ici.
Pour démarrer la mise en place, on doit générer les certificats qui seront utilisés pour authentifier les différent composants du système <class>Sigul</class> entre eux. Le pont sera utilisé comme Autorité de Certification pour les communications internes du système <class>Sigul</class>.
Opérations avec le compte sigul
- Comme toutes les commandes de cette partie doivent être lancées par l'utilisateur sigul, on va donc devenir cet utilisateur
# su - sigul - Définition du répertoire de destination
bridge_dir=/var/lib/sigul/bridge
- Création de la base de données NSS, pour garder les informations des certificats, dans le répertoire de destination définit par la variable $bridge_dir
certutil -d $bridge_dir -N - Génération de l'autorité de certification (CA: Certificate Authority) qui sera utilisée par tous les composants <class>Sigul</class>
certutil -d $bridge_dir -S -n sigul-ca -s 'CN=Sigul CA' -t CT,, -x -v 120
- Génération d'un certificat pour le pont
Le champs CN doit être le nom complet de l'hôte (fqdn) sur lequel le pont est hebergécertutil -d $bridge_dir -S -n sigul-bridge-cert -s 'CN=koji.b2pweb.com' -c sigul-ca -t u,, -v 120
Opérations avec le compte root
Il est temps de configurer le pont en éditant le fichier <path>/etc/sigul/bridge.conf</path>
[bridge] bridge-cert-nickname: sigul-bridge-cert client-listen-port: 44334 server-listen-port: 44333 max-rpms-payload-size: 10737418240 [koji] koji-config: ~/.koji/config [daemon] unix-user: sigul unix-group: sigul [nss] nss-dir: /var/lib/sigul/bridge nss-password: bridgensspasswd
Test
Lancement en mode debug, les logs se trouvant dans le fichier <path>/var/log/sigul_bridge.log</path>
sigul_bridge -v -v
Vérification du fichier journal et s'il n'y a pas d'erreur, on peut continuer.
Arrêt du pont sigul CRTL-C
Démarrage
On peut maintenant lancer le deamon et activer son démarrage automatique au démarrage.
systemd
systemctl start sigul_bridge.service
systemctl enable sigul_bridge.service
sysVinit
service sigul_bridge start
chkconfig sigul_bridge on
Mise en place du serveur
Le serveur est complètement isolé du reste du monde. Toutes les communications depuis l'extérieur doivent être interdites, exception faite des communications avec le pont. De même, les communications sortantes doivent être restreintes au pont pour un maximum de sécurité. Il faut s'assurer qu'aucun accès exterieur est possible (même web). Il détient toutes les clés pour signer les RPMs, et donc aucun utilisateur ne doit avoir accès directement aux clés, le serveur est le seul système qui connait les clés.
Opérations préalables sur le pont avec l'utilisateur sigul
- Export de l'autorité de certification dans le fichier <path>sigulca.p12</path>
pk12util -d $bridge_dir -o sigulca.p12 -n sigul-ca - Copie du fichier <path>sigulca.p12</path> sur le serveur <class>Sigul</class>
- Destruction de l'export
rm -f sigulca.p12
Opérations avec l'utilisateur sigul
- Comme toutes les commandes de cette partie doivent être lancées par l'utilisateur sigul, on va donc devenir cet utilisateur
# su - sigul - Définition du répertoire de destination
server_dir=/var/lib/sigul/server
- Création de la base de données NSS, pour garder les informations des certificats, dans le répertoire de destination définit par la variable $server_dir
certutil -d $server_dir -N - Import de l'autorité de certification (CA: Certificate Authority)
pk12util -d $server_dir -i sigulca.p12certutil -d $server_dir -M -n sigul-ca -t CT,, - Génération d'un certificat pour le serveur
Le champs CN doit être le nom complet de l'hôte (fqdn) sur lequel le serveur est hebergécertutil -d $server_dir -S -n sigul-server-cert -s 'CN=koji.b2pweb.com' -c sigul-ca -t u,, -v 120
- Suppression de l'export de l'autorité de certification
rm -f sigulca.p12
Opérations avec l'utilisateur root
Il est temps de configurer le serveur en éditant le fichier <path>/etc/sigul/server.conf</path>.
[server] bridge-hostname: koji.didier-linux.eu bridge-port: 44333 max-file-payload-size: 1073741824 max-memory-payload-size: 1048576 max-rpms-payload-size: 10737418240 server-cert-nickname: sigul-server-cert signing-timeout: 60 [database] database-path: /var/lib/sigul/server/server.sqlite [gnupg] gnupg-home: /var/lib/sigul/server/gnupg gnupg-key-type: DSA gnupg-key-length: 1024 gnupg-subkey-type: ELG-E gnupg-subkey-length: 2048 gnupg-key-usage: sign passphrase-length: 64 [daemon] unix-user: sigul unix-group: sigul [nss] nss-dir: /var/lib/sigul/server nss-password: **********
On va maintenant créer la base de données pour que le serveur y stocke les informations à propos des utilisateurs et des clés
sigul_server_create_db
On va ajouter l'administrateur initial. Celui-ci doit déjà exister localement sur le système.
sigul_server_add_admin
Test
Lancement en mode debug, les logs se trouvant dans le fichier <path>/var/log/sigul_server.log</path>
sigul_server -v -v
Vérification du fichier journal et s'il n'y a pas d'erreur, on peut continuer.
Arrêt du pont sigul CRTL-C
Démarrage
On peut maintenant lancer le deamon et activer son démarrage automatique au démarrage.
systemd
systemctl start sigul_server.service
systemctl enable sigul_server.service
sysVinit
service sigul_server start
chkconfig sigul_server on
Mise en place du Client
Le client doit pouvoir s'authentifier sur le pont avec des certificats pour pouvoir envoyer des commandes à celui-ci.
Opérations préalables sur le pont avec l'utilisateur sigul
- Export de l'autorité de certification dans le fichier <path>sigulca.p12</path>
pk12util -d $bridge_dir -o sigulca.p12 -n sigul-ca - Copie du fichier <path>sigulca.p12</path> sur le client <class>Sigul</class> et modification du propriétaire sur celui-ci
- Destruction de l'export
rm -f sigulca.p12
Opérations sur le client avec l'utilisateur root
Edition du fichier <path>/etc/sigul/client.conf</path>
[client] bridge-hostname: koji.didier-linux.eu bridge-port: 44334 client-cert-nickname: sigul-client-cert server-hostname: koji.didier-linux.eu [koji] koji-config: ~/.koji/config [nss] nss-dir: ~/.sigul
Opérations sur le client avec l'utilisateur qui utilisera Sigul
- Définition du répertoire de destination
client_dir=~/.sigul
- Création de celui-ci
mkdir $client_dir - Création de la base de données NSS, pour garder les informations des certificats, dans le répertoire de destination définit par la variable $client_dir
certutil -d $client_dir -N - Import de l'autorité de certification (CA: Certificate Authority)
pk12util -d $client_dir -i sigulca.p12certutil -d $client_dir -M -n sigul-ca -t CT,, - Génération d'un certificat pour le serveur
Le champs CN doit être le login de l'utilisateur pour le système <class>Sigul</class>certutil -d $client_dir -S -n sigul-client-cert -s 'CN=root' -c sigul-ca -t u,, -v 120
- Suppression de l'export de l'autorité de certification
rm -f sigulca.p12
- Copie du fichier de configuration générale des clients <path>/etc/sigul/client.conf</path> dans son répertoire personnel <path>~/.sigul/client.conf</path>
cp /etc/sigul/client.conf ~/.sigul/client.conf
- Édition du fichier <path>~/.sigul/client.conf</path> pour insérer le mot de passe de l'utilisateur dans la section [nss].
nss-password: Your NSS PASS
Test
Test avec une commande sigul pour valider le bon fonctionnement de toute la chaine
sigul list-users
On peut maintenant utiliser pleinement <class>Sigul</class>.
Sigul Client Config Script
Ce script peut être utilisé pour mettre en place rapidement l’authentification pour un client <class>Sigul</class> quand l’authentification FAS n'est pas utilisée.
#!/bin/bash
#Variables### And initial setup#######
mkdir ~/.sigul
client_dir=~/.sigul
user=$(whoami)
####################
echo
############################Begin Certificate imports
echo "======================="
echo "Setting up NSS Database"
echo "======================="
certutil -d $client_dir -N
echo
echo "==================="
echo "Downloading CA Cert"
echo "==================="
wget http://someurl.com/sigul/sigulca.p12 <-- Substitute with a path or url of your exported .p12
echo
echo "=================="
echo "Importing CA certs"
echo "=================="
pk12util -d $client_dir -i sigulca.p12
certutil -d $client_dir -M -n sigul-ca -t CT,,
echo
echo "======================"
echo "Generating Client cert"
echo "======================"
certutil -d $client_dir -S -n sigul-client-cert -s "CN=$user" -c sigul-ca -t u,, -v 120
echo
echo "======================"
#########End certificate imports########
########################################
#########NSS password Saver#############
read -p "Would you like to save your nss pass to ~/.sigul/client.conf [y/n]: " nsspasssel
#########User Input conditional#########
if [ $nsspasssel == "y" -o $nsspasssel == "Y" ]; then
echo "Enter your NSS password One more time: "
read -s nsspass
echo "[nss]" > ~/.sigul/client.conf
echo "nss-password: $nsspass" >> ~/.sigul/client.conf
echo
echo "==========="
echo "Cleaning up"
echo "==========="
rm sigulca.p12
else
echo
echo "==========="
echo "Cleaning up"
echo "==========="
rm sigulca.p12
fi
#########################################\
Utilisation
Utilisation de son Sigul signing server