projectkudu/kudu — pull request #1409 by jeme (2014-12-04 08:52:26+00:00)
Title: [RFC] Support for HTTPS Protocol, Certificates and SNI for IIS 8

This replaces the old PR: https://github.com/projectkudu/kudu/pull/1386

Requirements
----

- [ ] Should be able to add custom HTTPS Bindings though the UI
- [ ] Should be able to choose a certificate when adding a custom HTTPS Bindings though the UI
- [ ] Should be able to choose SNI on IIS 8.x
- [ ] Should not be able to choose SNI on IIS 7.x
- [ ] Should not not be able to set a host name on unless the Certificate is a wildcard cert (*.) or if SNI is enabled

The UI has changed significantly, I ended up choosing to mimic the UI in the IIS manager instead of the "Syntax" thing, this is because I had to add some additional fields anyways, like certificate and SNI on IIS 8, so I ended up remaking it completely for familiarity sake. (IIS Administrators should now be familiar with the fields)

- [ ] Should be able to add define default HTTPS bindings
- [ ] Should be able to configure default certificate for default HTTPS bindings
- [ ] Should be able to configure SNI for bindings
- [ ] Should be able to configure Certificate stores (relevant for IIS 8 as it allows you to choose multiple stores when adding certs, we could state that the cert HAS to be in the personal store for KUDU as an alternative)

I Changed the whole configuration concept to be a Configuration section, and added an abstraction on top of that that to keep backwards compatibility.

Default bindings are now quite flexible in the way that you can add any number of default bindings, currently only with http or https, but it should now be significantly easier to add support for other protocols if needed.

There is still a few missing things in this PR:
----

- [ ] Move IP's and IISVersion a IKuduContext or redesign the KuduEnvironment class to support those. They where added tot he IKuduConfiguration for now as it was the easy route, but they don't belong there as they are not configuration values.
- [ ] Tests - Clearly there needs some testing here.
- [ ] Cleanup the default `app.config` and refresh the documentation.
- [ ] CLA - There is a description of that this needs to be done, but as I recall there was no link to further info?

Please feel free to note other things missing.

CC: @n3rd, @davidebbo, @ahmelsayed, @suwatch (Those that participated in the old PR)

----
From the old PR:

We need to be able to define HTTPS bindings for our app's deployed with KUDU, so since I found #923 and that didn't seem to have much traction, I thought I would look into how this could possibly be added.

So this is a work in progress, but I wanted to see if I could get some feedback midway as I choose to change the configuration concept as well.

I am still figuring out how to deal wit certificates, as those become a thing to deal with when we suddenly wan't to do https.