Windows Server Forum / IIS / IIS Security / July 2008
creating multiple client certificates
|
|
Thread rating:  |
Alastair - 10 Jul 2008 14:09 GMT Hi All,
We have a requirement to connect a few pcs and windows mobile devices across the internet to an internal webserver. We would like to have SSL connections and the additional security of client certificates.
We have a CA server (which is also an Exchange server to create certificates for Outlook Web/Mobile access). And have set up the webserver, enabled SSL with a server cert from the CA, but now want to enable client certificates for the internal webserver, so we can distribute to all of the clients.
Can I just make one client cert that I put on all of the clients (if so how exactly?), or do I have to connect each client to the CA's Certsrv to get the client cert? (I don't want to do the client cert/user account mapping).
Any help/advice appreciated
Many thanks,
Al
David Wang - 13 Jul 2008 00:05 GMT On Jul 10, 6:09 am, Alastair <Alast...@discussions.microsoft.com> wrote:
> Hi All, > [quoted text clipped - 16 lines] > > Al I do not understand what you are trying to accomplish with the client certificate. Based on your description, the certificate does not add security but does add hassle for you, so I am not certain what you are trying to accomplish. If you do not map or otherwise validate the client certificate, then anyone can send anything and simply bypass this added "security".
Furthermore, to be effective security, a Client Certificate must be directly presented between the client and the server. Internal server may go through some NAT layer, which would prevent this scheme from being secure since to the web server, the traffic is originating from the NAT, not end-client. What you'd end up with is SSL certificate termination at the NAT instead of internal webserver, which is not the security improvement you are looking for.
Finally, how to put certificates on a given device depends on the device. From a security perspective, this process cannot be initiated by the client, so you have to physically install a certificate onto the client device -- there is no way for the client to remotely connect and install the certificate because that is insecure.
In short, I am really wondering about your requirement because as described, it is not accomplishing its goal of providing additional security, so I really do not know what is required -- the certificates, increased security, or something else.
//David http://w3-4u.blogspot.com http://blogs.msdn.com/David.Wang //
Alastair - 14 Jul 2008 08:55 GMT Hi David, thanks for your reply. Perhaps I’m getting the wrong idea of certificates. I’ll try to explain what we want to do, our setup is as follows: firewall connected to the internet which allows a port (not 443) through to the port configured as ssl on the iis server. We want to only allow the 10 or so PC’s and WM6 devices through that we have configured to connect. This is where we thought that having a client certificate would provide additional security (by stopping any other pc connecting), i.e. we would manually install the client cert (only applicable to the iis server) only on the authorised pc’s/wm6 devices. To gain access to the web application, the user has to enter a username/password, so the client cert does not have to authenticate the user onto the active directory. If we use no client cert at all, are we making the IIS server more vulnerable to any security problems by opening the firewall port through to that server?
Thanks again for your help, it is much appreciated!
Alastair.
David Wang - 14 Jul 2008 12:09 GMT On Jul 14, 12:55 am, Alastair <Alast...@discussions.microsoft.com> wrote:
> Hi David, > thanks for your reply. Perhaps I’m getting the wrong idea of certificates. [quoted text clipped - 15 lines] > > Alastair. To me, your usage of Client Certificate does not improve security.
By opening the firewall port, you are allowing SSL traffic to IIS. Client Certificate does not affect any "security problems" due to such opening.
Client Certificate is something negotiated on that SSL handshake, but unless something authorizes based on the certificate, providing it is useless and does not improve security.
IIS Certificate Mapping only performs an authentication mapping -- no authorization -- so you will need to provide custom code to perform your custom authorization scheme to lock down access.
Personally, the username/password should be sufficient lockdown to those users.
The certificate help lockdown further to only those devices, assuming you've taken care to not allow those certificates to be copied and transferred between devices.
//David http://w3-4u.blogspot.com http://blogs.msdn.com/David.Wang //
Alastair - 14 Jul 2008 14:21 GMT Hi David, Thank you for taking the time to reply.
Simplistically I thought you produce a certificate on the iis server, this can then (or from CA) produce a client cert that can then be exported and copied/installed on the clients. When the client (with cert installed) tries to connect via https the server checks if the client has the cert, if so it connects, if not the connection is refused. Thus stopping the users from getting onto the application from just 'any' pc - just the ones with a client certificate pre-installed by us.
Am I able to generate and copy just one client certificate for this purpose?
Thanks again, Alastair.
David Wang - 14 Jul 2008 20:00 GMT On Jul 14, 6:21 am, Alastair <Alast...@discussions.microsoft.com> wrote:
> Hi David, Thank you for taking the time to reply. > [quoted text clipped - 10 lines] > Thanks again, > Alastair. A certificate can be created anywhere by anyone. The question is whether the users of the certificate trust the authenticity of the certificate.
The issue is that there is no server-side feature which "checks if the client has the cert" to authorize/deny the user's connection attempt, so your usage scenario will require custom code.
//David http://w3-4u.blogspot.com http://blogs.msdn.com/David.Wang //
Ken Schaefer - 16 Jul 2008 10:38 GMT Hi,
"no" - it doesn't work that way.
When a client connects over HTTPS, and the webserver is configured to allow/require client certificates, then the server sends a list of all the CAs that it trusts to the client. The user is then prompted to select a certificate that has the User Authentication OID embedded in it, and that is issued by one of the CAs that the web server trusts.
Caveat: that's how the major browsers all work (what list actually gets presented to the client is entirely a UI thing, so a browser could present any arbitrary list of certificates installed on the machine). The browser then sends this cert back to the server. It is up to the server to then accept/reject it. So, not having a cert doesn't really prevent a connection.
To really be useful as a security measure requires issuing individual client certificates (if you use AD, then you can just auto-enrol users so there is no work on their part - and the certificate <-> user mapping is handled automatically for you). If you issue individual client certs, then you know who is connecting (which is the whole point - client authentication), and you can also revoke a certificate if it gets compromised.
The way you are suggesting is a risk - if one PC gets compromised/lost/stolen/whatever, what are you going to do? You need to revoke the cert, and reissue every single cert you had before.
> Thus stopping the users from > getting onto the application from just 'any' pc - just the ones with a > client > certificate pre-installed by us. Client certs are user based - not machine based. You're basically trying to use a technology for one purpose for some different purpose. And unfortunately, when it comes to security, this is generally insecure (i.e. there are ways to circumvent or subvert the process), and it generally makes your environment more complex and less secure.
Cheers Ken
> Hi David, Thank you for taking the time to reply. > [quoted text clipped - 14 lines] > Thanks again, > Alastair.
|
|
|