The following line of code will ignore the expired SSL certificate exceptions. Put this line of code at the beginning of your WebRole.OnStart method and also in your Global.asax's Begin_Application method:

// Temporarily not care about Microsoft's ridiculous SSL certificate expiration. ServicePointManager.ServerCertificateValidationCallback = (a, b, c, d) => true;

You can continue to use SSL endpoints to Azure Storage, including the Diagnostics configuration. The main problem you will face is deploying this code to the cloud because Service Management is down. If you were fortunate enough to setup Remote Desktop, you can remote into each instance and copy/paste deploy the solution.

To do this, you must create a cspkg by right-clicking on the Azure Project and selecting 'Package'. This will build a cspkg file for you and open the folder in Windows Explorer. Open the cspkg with 7Zip (or another zip utility) and then open the .cssx file inside this archive (should be the largest file). Navigate to the siteroot folder and copy/paste its contents into E:\sitesroot on your web role instances. Apply an application pool recycle in IIS and you should be up and running with the new line of code you added. I would *not* suggest an iisreset as this requires another service (World Wide Web Publishing Service) to be started before your application will work.

An even lengthier version of the delegate can be used to allow a one day grace period on expiration dates:

ServicePointManager.ServerCertificateValidationCallback = (sender, cert, chain, sslPolicyError) => { if (sslPolicyError == SslPolicyErrors.None) { return true; } else if (sslPolicyError == SslPolicyErrors.RemoteCertificateChainErrors) { var expDate = DateTime.Parse(cert.GetExpirationDateString()); if (expDate < DateTime.Now && expDate.AddDays(1) >= DateTime.Now) { // TODO: Warn about SSL certificate expiration. return true; } } return false; };

Please note: This delegate applies to *all* SSL certificate validations. Use with care.