On Fri, 2012-11-30 at 09:56 -0600, Endi Sukma Dewata wrote:
Some issues:
1. The pki_use_common_admin_user is set to true in [Common] but
overwritten to false in [CA]:
[Common]
pki_use_common_admin_user=true
[CA]
pki_use_common_admin_user=false
If I understood correctly it's done this way to make sure that if we use
a common admin user, only CA will generate the certificate file, but not
the other subsystems:
if not config.str2bool(master['pki_clone']) and \
not config.str2bool(master['pki_use_common_admin_user']):
... create cert file ...
Having conflicting pki_use_common_admin_users in the same config file is
confusing to users because we are actually using a common admin user for
all subsystems including CA so the value should be "true". I think it
would be better to check for CA explicitly in the code:
[Common]
pki_use_common_admin_user=true
if not config.str2bool(master['pki_clone']):
if not config.str2bool(master['pki_use_common_admin_user']) or
master['pki_subsystem'] == 'CA':
... create cert file ...
The thing is - someone might install a subordinate CA and want to use
this mechanism to import an admin cert. So we dont really want to
exclude this simply because its a CA. Maybe we can change the name of
the directive to import_admin_cert = true/false ? This makes it clearer
what we are doing. Sound reasonable?
2. The location of the admin cert was changed from pki_client_dir to
pki_database_path. I think we should keep it in pki_client_dir because
the certificate belongs to the admin, not the instance, so it should be
in the admin's home directory. As long as the other subsystems are
created by the same admin the code should be able to read the cert from
the admin's home directory.
So the following parameters should point to the admin's home directory:
- pki_client_admin_cert_p12
- pki_admin_cert_file
I agree with you that the cert belongs to the admin and not the
instance. The problem is that we purge the client database by default.
And we should purge it once we have generated the p12 file, because it
includes the nss database and password files and so on. I suppose we
could be a little smarter about exactly what it is that we purge.
3. The default pki_admin_nickname is too long:
PKI Administrator's
example.com Security Domain ID
It can be simplified without losing information:
PKI Administrator of
example.com
OK - will change.
4. The common cert files are called ca_admin.*. I think we should remove
the "ca_" to reflect that the cert works on all subsystems.
Well along the lines of my response to above, if we change the name of
the directive to import_admin_cert - then its clearer that we are
importing a cert that was generated during the CA install for the admin
user on all subsystems.
In that case, using ca_admin is probably OK.