Visual Studio 2017 Enable SSL
https, kestrel-http-server, ssl, visual-studio-2017
Solution
Ports are locked down in IIS Express so that it doesn't have to be run as Administrator...
Valid Ports are 44300 - 44399
Check out the Dev Community article https://developercommunity.visualstudio.com/content/problem/39430/changing-port-number-in-a-web-project-does-not-imm.html
You can edit launchSettings.json, but the ssl ports must fall in this range.
Problem
How do you enable SSL for a project in Visual Studio 2017? In VS15, I could select Project -> Properties -> Debug -> Enable SSL. This option is not available in VS2017. Where has it moved to? Edit: I've even tried editing `.\vs\config\applicationhost.config` to no avail: ``` <listenerAdapters> <add name="http" /> <add name="https" /> </listenerAdapters> <sites> <site name="WebSite1" id="1" serverAutoStart="true"> <application path="/"> <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" /> </application> <bindings> <binding protocol="http" bindingInformation=":8080:localhost" /> </bindings> </site> <site name="Filters" id="2"> <application path="/" applicationPool="Clr4IntegratedAppPool"> <virtualDirectory path="/" physicalPath="c:\Users\Ashley\documents\visual studio 2017\Projects\Filters\src\Filters" /> </application> <bindings> <binding protocol="http" bindingInformation="*:51107:localhost" /> <binding protocol="https" bindingInformation="*:43107:localhost" /> </bindings> </site> <siteDefaults> <logFile logFormat="W3C" directory="%IIS_USER_HOME%\Logs" /> <traceFailedRequestsLogging directory="%IIS_USER_HOME%\TraceLogFiles" enabled="true" maxLogFileSizeKB="1024" /> </siteDefaults> <applicationDefaults applicationPool="Clr4IntegratedAppPool" /> <virtualDirectoryDefaults allowSubDirConfig="true" /> </sites> <webLimits /> ``` Edit: Another option I've tried, which just feels clunky, and kind of defeats the point of an IDE, is to configure Kestrel to use HTTPS. This isn't ideal since I had to export a copy of a certificate for localhost from IIS, and IIS Express still tries to load the site on a different port. ``` public class Program { public static void Main(string[] args) { var host = new WebHostBuilder() .UseKestrel(options => options.UseHttps(new X509Certificate2("path/to/cert.pfx", "password"))) .UseContentRoot(Directory.GetCurrentDirectory()) .UseUrls("http://localhost:5100", "https://localhost:4300") .UseIISIntegration() .UseStartup<Startup>() .Build(); host.Run(); } } ``` Sadly, this doesn't work when run from VS17. The first time around I got a 502.2 (I think) error, now all I get is an unable to connect error in Chrome. I can run `dotnet run` from PowerShell and it works fine. As a workaround, it does the trick. But it doesn't seem neat.