While working on the backend for To-Do.Studio, we ran into a scenario where we needed to test on a developer’s machine with https (ssl) enabled.
note – we use Kestral for testing and not IISExpress.
First thing we did was to try and add a https url in the LaunchSettings.json file. That didn’t work 🙂
What we found was that had to configure Kestral manually and tell it which certificate to use. The code in our Program class looks like this :
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseApplicationInsights()
.UseAzureAppServices()
#if DEBUG
.UseKestrel(t => {
t.Listen(IPAddress.Loopback, 55172);
t.Listen(IPAddress.Loopback, 55000, o =>
{
o.UseHttps("localhostCertificate.pfx", "password");
});
})
#endif
.UseStartup<Startup>()
.Build();
But how do we get a certificate ? There are various ways but i didn’t feel like finding my win32 sdk as some instruction’s on the web… so i decided to use my Ubuntu WSL…
Two commands
erik@ErikLAPTOP:~$ openssl req -x509 -days 10000 -newkey rsa:2048 -keyout cert.pem -out cert.pem erik@ErikLAPTOP:~$openssl pkcs12 -export -in cert.pem -inkey cert.pem -out cert.pfx
and i had a good looking self made certificate. The hardest part was to copy this cert.pfx file to a Windows directory so i could use it my code.
Voilà ! after modifying my LaunchSettings.json, i could test in either http or https mode !
"ToDoStudio.Server_http": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:55172/"
},
"ToDoStudio.Server_https": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "https://localhost:55000/"
}

Leave a reply to Erik Cancel reply