[gest_crans_lc, utils/ldapcertfs] Fétails gestions des certificats
This commit is contained in:
parent
4a225f1375
commit
266cf73a0a
2 changed files with 19 additions and 13 deletions
|
@ -998,7 +998,12 @@ class GestCrans(object):
|
||||||
def box(fields_values=None):
|
def box(fields_values=None):
|
||||||
fields = [("%s : " % k, form[k]['text'], form[k]['len'] + 1, form[k]['len']) for k in form_order]
|
fields = [("%s : " % k, form[k]['text'], form[k]['len'] + 1, form[k]['len']) for k in form_order]
|
||||||
return self.dialog.form(
|
return self.dialog.form(
|
||||||
text="",
|
text="""Type de certificat : Type de correspondance :
|
||||||
|
* 0 - CA pinning * 0 - certificat entier
|
||||||
|
* 1 - Cert pinning * 1 - sha256
|
||||||
|
* 2 - CA auto signé * 2 - sha512
|
||||||
|
* 3 - Cert autosigné""",
|
||||||
|
no_collapse=True,
|
||||||
height=0, width=0, form_height=0,
|
height=0, width=0, form_height=0,
|
||||||
timeout=self.timeout,
|
timeout=self.timeout,
|
||||||
fields=fields_values if fields_values else fields,
|
fields=fields_values if fields_values else fields,
|
||||||
|
@ -1070,11 +1075,11 @@ les valeurs valident sont :
|
||||||
def todo(machine, certificat, cont):
|
def todo(machine, certificat, cont):
|
||||||
if certificat:
|
if certificat:
|
||||||
with self.conn.search(dn=certificat.dn, scope=0, mode='rw')[0] as certificat:
|
with self.conn.search(dn=certificat.dn, scope=0, mode='rw')[0] as certificat:
|
||||||
certificat['certificat'] = unicode(pem, 'utf-8')
|
certificat['certificat'] = unicode(pem.strip(), 'utf-8')
|
||||||
certificat.save()
|
certificat.save()
|
||||||
else:
|
else:
|
||||||
with self.conn.newCertificat(machine.dn, {}) as certificat:
|
with self.conn.newCertificat(machine.dn, {}) as certificat:
|
||||||
certificat['certificat'] = unicode(pem, 'utf-8')
|
certificat['certificat'] = unicode(pem.strip(), 'utf-8')
|
||||||
certificat.create()
|
certificat.create()
|
||||||
raise Continue(cont(certificat=certificat, machine=certificat.machine()))
|
raise Continue(cont(certificat=certificat, machine=certificat.machine()))
|
||||||
|
|
||||||
|
@ -1307,12 +1312,12 @@ les valeurs valident sont :
|
||||||
def todo(machine, certificat, pem, cont):
|
def todo(machine, certificat, pem, cont):
|
||||||
if certificat:
|
if certificat:
|
||||||
with self.conn.search(dn=certificat.dn, scope=0, mode='rw')[0] as certificat:
|
with self.conn.search(dn=certificat.dn, scope=0, mode='rw')[0] as certificat:
|
||||||
certificat['csr'] = unicode(pem, 'utf-8')
|
certificat['csr'] = unicode(pem.strip(), 'utf-8')
|
||||||
certificat.save()
|
certificat.save()
|
||||||
else:
|
else:
|
||||||
with self.conn.newCertificat(machine.dn, {}) as certificat:
|
with self.conn.newCertificat(machine.dn, {}) as certificat:
|
||||||
certificat['hostCert']=unicode(machine['host'][0])
|
certificat['hostCert']=unicode(machine['host'][0])
|
||||||
certificat['csr'] = unicode(pem, 'utf-8')
|
certificat['csr'] = unicode(pem.strip(), 'utf-8')
|
||||||
certificat.create()
|
certificat.create()
|
||||||
raise Continue(cont(certificat=certificat, machine=certificat.machine()))
|
raise Continue(cont(certificat=certificat, machine=certificat.machine()))
|
||||||
|
|
||||||
|
@ -1356,7 +1361,7 @@ les valeurs valident sont :
|
||||||
menu
|
menu
|
||||||
menu_order = ['Hostname']
|
menu_order = ['Hostname']
|
||||||
if not "privateKey" in certificat['objectClass']:
|
if not "privateKey" in certificat['objectClass']:
|
||||||
menu_order.append('AddPrivateKey')
|
menu_order.extend(['AddPrivateKey', 'SetCertificate'])
|
||||||
if not "x509Cert" in certificat['objectClass']:
|
if not "x509Cert" in certificat['objectClass']:
|
||||||
menu_order.extend([ 'AddCertificate'])
|
menu_order.extend([ 'AddCertificate'])
|
||||||
if "x509Cert" in certificat['objectClass']:
|
if "x509Cert" in certificat['objectClass']:
|
||||||
|
@ -1407,8 +1412,8 @@ les valeurs valident sont :
|
||||||
raise Continue(TailCall(self.modif_certificat_attributs, certificat=certificat, cont=self_cont(certificat=certificat, tag=tag), attr=menu[tag]['attribut'].ldap_name))
|
raise Continue(TailCall(self.modif_certificat_attributs, certificat=certificat, cont=self_cont(certificat=certificat, tag=tag), attr=menu[tag]['attribut'].ldap_name))
|
||||||
else:
|
else:
|
||||||
raise EnvironmentError("Il n'y a ni champ 'attribut' ni 'callback' pour le tag %s" % tag)
|
raise EnvironmentError("Il n'y a ni champ 'attribut' ni 'callback' pour le tag %s" % tag)
|
||||||
(code, tag) = self.handle_dialog(cont, box, tag)
|
cancel_cont = cont(machine=machine) if certificat is None else self_cont(machine=certificat.machine(), certificat=None, tag=tag)
|
||||||
cancel_cont = cont(machine=machine) if certificat is None else self_cont(machine=certificat.machine(), certificat=None)
|
(code, tag) = self.handle_dialog(cancel_cont, box, tag)
|
||||||
return self.handle_dialog_result(
|
return self.handle_dialog_result(
|
||||||
code=code,
|
code=code,
|
||||||
output=tag,
|
output=tag,
|
||||||
|
@ -2353,10 +2358,10 @@ les valeurs valident sont :
|
||||||
}
|
}
|
||||||
### Les clef qui n'existe pas sont toute renvoyé sur la clef ''
|
### Les clef qui n'existe pas sont toute renvoyé sur la clef ''
|
||||||
menu_order = ["aA", "mA", "aMA", "dA", "", "mM", "dM", " ", "aC", "mC", "aMC", "dC", " ", "aKM"]
|
menu_order = ["aA", "mA", "aMA", "dA", "", "mM", "dM", " ", "aC", "mC", "aMC", "dC", " ", "aKM"]
|
||||||
if isinstance(proprio, objets.AssociationCrans):
|
|
||||||
proprio = None
|
|
||||||
if machine and not proprio:
|
if machine and not proprio:
|
||||||
proprio = machine.proprio()
|
proprio = machine.proprio()
|
||||||
|
if isinstance(proprio, objets.AssociationCrans):
|
||||||
|
proprio = None
|
||||||
if machine or proprio:
|
if machine or proprio:
|
||||||
menu_order = [' '] + menu_order
|
menu_order = [' '] + menu_order
|
||||||
if machine:
|
if machine:
|
||||||
|
|
|
@ -46,7 +46,7 @@ from OpenSSL import crypto
|
||||||
|
|
||||||
import lc_ldap.shortcuts
|
import lc_ldap.shortcuts
|
||||||
import gestion.secrets_new as secrets
|
import gestion.secrets_new as secrets
|
||||||
from gestion.gen_confs.populate_sshFingerprint import get_machines
|
|
||||||
# Specify what Fuse API use: 0.2
|
# Specify what Fuse API use: 0.2
|
||||||
fuse.fuse_python_api = (0, 2)
|
fuse.fuse_python_api = (0, 2)
|
||||||
|
|
||||||
|
@ -122,7 +122,7 @@ class LdapCertFS(fuse.Fuse):
|
||||||
# dictionnnaire CN => certificat pour construire la chaine de certificat
|
# dictionnnaire CN => certificat pour construire la chaine de certificat
|
||||||
# Il n'est utile ici que de renseigner des CN de CA intermédiaires
|
# Il n'est utile ici que de renseigner des CN de CA intermédiaires
|
||||||
self.chain = {
|
self.chain = {
|
||||||
'CAcert Class 3 Root' : open('/etc/ssl/certs/cacert-chain.pem').read(),
|
'CAcert Class 3 Root' : open('/etc/ssl/certs/cacert.org.pem').read(),
|
||||||
}
|
}
|
||||||
# Les fichers certificats que l'on veux créer. fil est une liste représentant
|
# Les fichers certificats que l'on veux créer. fil est une liste représentant
|
||||||
# la concaténation des attributs ldap (bien formaté). chain est un joker pour
|
# la concaténation des attributs ldap (bien formaté). chain est un joker pour
|
||||||
|
@ -380,6 +380,7 @@ def main(usage):
|
||||||
if end_option or not item.startswith('-'):
|
if end_option or not item.startswith('-'):
|
||||||
if not os.path.isdir(item):
|
if not os.path.isdir(item):
|
||||||
raise EnvironmentError("%s is not a dir" % item)
|
raise EnvironmentError("%s is not a dir" % item)
|
||||||
|
break
|
||||||
if item == '--':
|
if item == '--':
|
||||||
end_option=True
|
end_option=True
|
||||||
|
|
||||||
|
@ -415,7 +416,7 @@ LdapCertFS - Ldap Certificate File System
|
||||||
# On appel main et on affiche les exceptions EnvironmentError
|
# On appel main et on affiche les exceptions EnvironmentError
|
||||||
try:
|
try:
|
||||||
main(usage)
|
main(usage)
|
||||||
except (EnvironmentError) as e:
|
except (EnvironmentError, fuse.FuseError) as e:
|
||||||
sys.stderr.write("Error: %s\n" % e)
|
sys.stderr.write("Error: %s\n" % e)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue