Re: [Freeipa-devel] Re: Certificate enrollment, principal names

2009-11-05 Thread Simo Sorce
On Thu, 2009-11-05 at 13:21 -0500, Rob Crittenden wrote:
 
 This is about right. What you're missing is storing the certificate
 in 
 the service record. To do this we need to know what the target is.
 
 Nalin and I simply took two different approaches to sending this. We
 can 
 easily support either method by making the principal an optional 
 attribute and looking for it in the CSR if not provided (assuming I
 can 
 get my head around PKCS#10 enough to grab attributes).

Given we should prevent tricks from people the server side should
really parse the CSR and validate it against the ACL IMO.
Otherwise do we have any other part that checks that host
foo.example.com is asking a certificate for itself and not for
bar.example.com ?

Simo.

-- 
Simo Sorce * Red Hat, Inc * New York

___
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel


Re: [Freeipa-devel] Re: Certificate enrollment, principal names

2009-11-05 Thread Dmitri Pal
Simo Sorce wrote:
 On Thu, 2009-11-05 at 13:21 -0500, Rob Crittenden wrote:
   
 This is about right. What you're missing is storing the certificate
 in 
 the service record. To do this we need to know what the target is.

 Nalin and I simply took two different approaches to sending this. We
 can 
 easily support either method by making the principal an optional 
 attribute and looking for it in the CSR if not provided (assuming I
 can 
 get my head around PKCS#10 enough to grab attributes).
 

 Given we should prevent tricks from people the server side should
 really parse the CSR and validate it against the ACL IMO.
 Otherwise do we have any other part that checks that host
 foo.example.com is asking a certificate for itself and not for
 bar.example.com ?

 Simo.

   
This is a valid use case and if the ACIs on the server are not
configured to allow host foo
to get certs for host bar, host foo will be denied regardless of the
way it asked via CSR or not.

-- 
Thank you,
Dmitri Pal

Engineering Manager IPA project,
Red Hat Inc.


---
Looking to carve out IT costs?
www.redhat.com/carveoutcosts/

___
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel


Re: [Freeipa-devel] Re: Certificate enrollment, principal names

2009-11-05 Thread Simo Sorce
On Thu, 2009-11-05 at 11:28 -0800, Andrew Wnuk wrote:
 On 11/05/09 11:22, Simo Sorce wrote:
  On Thu, 2009-11-05 at 13:21 -0500, Rob Crittenden wrote:
 
  This is about right. What you're missing is storing the certificate
  in
  the service record. To do this we need to know what the target is.
 
  Nalin and I simply took two different approaches to sending this. We
  can
  easily support either method by making the principal an optional
  attribute and looking for it in the CSR if not provided (assuming I
  can
  get my head around PKCS#10 enough to grab attributes).
   
  Given we should prevent tricks from people the server side should
  really parse the CSR and validate it against the ACL IMO.
  Otherwise do we have any other part that checks that host
  foo.example.com is asking a certificate for itself and not for
  bar.example.com ?
 
  Simo.
 
 
 CSR is parsed and validated by CA.

How does the CA know Who asked for a specific cert ?

Simo.

-- 
Simo Sorce * Red Hat, Inc * New York

___
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel


Re: [Freeipa-devel] Re: Certificate enrollment, principal names

2009-11-05 Thread Dmitri Pal
Simo Sorce wrote:
 On Thu, 2009-11-05 at 11:28 -0800, Andrew Wnuk wrote:
   
 On 11/05/09 11:22, Simo Sorce wrote:
 
 On Thu, 2009-11-05 at 13:21 -0500, Rob Crittenden wrote:

   
 This is about right. What you're missing is storing the certificate
 in
 the service record. To do this we need to know what the target is.

 Nalin and I simply took two different approaches to sending this. We
 can
 easily support either method by making the principal an optional
 attribute and looking for it in the CSR if not provided (assuming I
 can
 get my head around PKCS#10 enough to grab attributes).
  
 
 Given we should prevent tricks from people the server side should
 really parse the CSR and validate it against the ACL IMO.
 Otherwise do we have any other part that checks that host
 foo.example.com is asking a certificate for itself and not for
 bar.example.com ?

 Simo.


   
 CSR is parsed and validated by CA.
 

 How does the CA know Who asked for a specific cert ?

 Simo.

   
The server should look at the identity of the peer who authenticated
when the connection was established.
It can be admin using his password or a host using his keytab or OTP.
I think Rob figured out how to factor this into the aci validation and
the code to do it already there.
Rob?


-- 
Thank you,
Dmitri Pal

Engineering Manager IPA project,
Red Hat Inc.


---
Looking to carve out IT costs?
www.redhat.com/carveoutcosts/

___
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel


Re: [Freeipa-devel] Re: Certificate enrollment, principal names

2009-11-05 Thread Andrew Wnuk

On 11/05/09 11:34, Simo Sorce wrote:

On Thu, 2009-11-05 at 11:28 -0800, Andrew Wnuk wrote:
   

On 11/05/09 11:22, Simo Sorce wrote:
 

On Thu, 2009-11-05 at 13:21 -0500, Rob Crittenden wrote:

   

This is about right. What you're missing is storing the certificate
in
the service record. To do this we need to know what the target is.

Nalin and I simply took two different approaches to sending this. We
can
easily support either method by making the principal an optional
attribute and looking for it in the CSR if not provided (assuming I
can
get my head around PKCS#10 enough to grab attributes).

 

Given we should prevent tricks from people the server side should
really parse the CSR and validate it against the ACL IMO.
Otherwise do we have any other part that checks that host
foo.example.com is asking a certificate for itself and not for
bar.example.com ?

Simo.


   

CSR is parsed and validated by CA.
 

How does the CA know Who asked for a specific cert ?

Simo.

   

CA authenticates IPA and validates CSR, IPA authenticates and authorizes.

Andrew.

___
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel


Re: [Freeipa-devel] Re: Certificate enrollment, principal names

2009-11-04 Thread Andrew Wnuk

On 11/04/09 16:16, Nalin Dahyabhai wrote:

On Wed, Nov 04, 2009 at 04:39:40PM -0500, Rob Crittenden wrote:
   

Alternatively you can specify which host(s) can request a
certificate for a given service. Use the service-add-member command
to add hosts that can request certs for it.
 

That sounds reasonable.  Is this new post-1.9.0?  I can add members to
various groups, but there's no service-add-member command yet.

   

A couple of tidbits:

- In 1.9.0 we'll issue a certificate for any subject requested.
dogtag has a fix that we will be able to use once it's released that
will let us pull the CN from the request and use just that with the
subject and use a fixed value for the rest.
 

That sounds good -- the default request subject is just 'CN=hostname'
unless it's told different.

   

- The management framework doesn't do anything to the CSR right now,
it literally just passes it onto the CA for processing.
- The whole ugly client IP thing has been ripped out post 1.9.0.
- I still compare the hostname in the subject with the hostname of
the service. This is unfortunately currently broken in python
2.4-based systems.
 

If we're requiring that every certificate has an associated principal
name, then ensuring it agrees with the hostname in the subject field
makes a lot of sense.  I'd kind of like to see both a dnsName and a
Kerberos principal name added to the subjectAltName fields in the issued
certificate, but that's as much because we can as anything else.

   

- I'm not opposed to including more stuff into the CSR itself we
just need to be sure the average admin who doesn't want to use
certmonger can still make a request too.
 

NSS's certutil can trivially add dns and email subjectAltName (SAN)
values and extendedKeyUsage (EKU) values.  I don't see a flag for adding
a Kerberos principal name.  OpenSSL's req command doesn't do most of
that by default, but the configuration file can be used to tell it to do
any of that.  It could be scripted, for sure.

   

  Right now the bar is pretty
low to understanding what is required IMHO with the exception of
pasting in the ugly one-line CSR :-(
 

Yeah, it took me a while to figure out that that was how we were
supposed to pass it in.
   
Passing entire CSR as a parameter to ipa command could avoided if 
XML-RPC framework would provide pre and post processing callbacks on the 
client side. Parameters could be used to describe CSR (instead of 
passing entire CSR), pre-processing callback could generate CSR based on 
provided description, then XML-RPC call could submit generated CSR and 
finally post-processing callback could properly place obtained certificate.


Regards,
Andrew

___
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel


Re: [Freeipa-devel] Re: Certificate enrollment, principal names

2009-11-04 Thread Dmitri Pal
Andrew Wnuk wrote:
 On 11/04/09 16:16, Nalin Dahyabhai wrote:
 On Wed, Nov 04, 2009 at 04:39:40PM -0500, Rob Crittenden wrote:
   
 Alternatively you can specify which host(s) can request a
 certificate for a given service. Use the service-add-member command
 to add hosts that can request certs for it.
  
 That sounds reasonable.  Is this new post-1.9.0?  I can add members to
 various groups, but there's no service-add-member command yet.

   
 A couple of tidbits:

 - In 1.9.0 we'll issue a certificate for any subject requested.
 dogtag has a fix that we will be able to use once it's released that
 will let us pull the CN from the request and use just that with the
 subject and use a fixed value for the rest.
  
 That sounds good -- the default request subject is just 'CN=hostname'
 unless it's told different.

   
 - The management framework doesn't do anything to the CSR right now,
 it literally just passes it onto the CA for processing.
 - The whole ugly client IP thing has been ripped out post 1.9.0.
 - I still compare the hostname in the subject with the hostname of
 the service. This is unfortunately currently broken in python
 2.4-based systems.
  
 If we're requiring that every certificate has an associated principal
 name, then ensuring it agrees with the hostname in the subject field
 makes a lot of sense.  I'd kind of like to see both a dnsName and a
 Kerberos principal name added to the subjectAltName fields in the issued
 certificate, but that's as much because we can as anything else.

   
 - I'm not opposed to including more stuff into the CSR itself we
 just need to be sure the average admin who doesn't want to use
 certmonger can still make a request too.
  
 NSS's certutil can trivially add dns and email subjectAltName (SAN)
 values and extendedKeyUsage (EKU) values.  I don't see a flag for adding
 a Kerberos principal name.  OpenSSL's req command doesn't do most of
 that by default, but the configuration file can be used to tell it to do
 any of that.  It could be scripted, for sure.

   
   Right now the bar is pretty
 low to understanding what is required IMHO with the exception of
 pasting in the ugly one-line CSR :-(
  
 Yeah, it took me a while to figure out that that was how we were
 supposed to pass it in.

 Passing entire CSR as a parameter to ipa command could avoided if
 XML-RPC framework would provide pre and post processing callbacks on
 the client side. Parameters could be used to describe CSR (instead of
 passing entire CSR), pre-processing callback could generate CSR based
 on provided description, then XML-RPC call could submit generated CSR
 and finally post-processing callback could properly place obtained
 certificate.


I though we talked about these callbacks a year ago and planned to do them.
Was this work ever finished?

 Regards,
 Andrew

 ___
 Freeipa-devel mailing list
 Freeipa-devel@redhat.com
 https://www.redhat.com/mailman/listinfo/freeipa-devel


-- 
Thank you,
Dmitri Pal

Engineering Manager IPA project,
Red Hat Inc.


---
Looking to carve out IT costs?
www.redhat.com/carveoutcosts/

___
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel