在 TLS v1.0/1.1 生命周期结束计划之后,Heroku 应用程序无法使用 https

Heroku apps not working with https after TLS v1.0/1.1 End of life schedule

我用 parseplaform 部署了几个应用程序。这些应用程序一直运行到昨天,但从今天起我收到系统无法运行的消息。有时,Heroku 似乎不接受来自解析应用程序的请求。

解析服务器云功能应用程序与 Heroku 一起部署,它启用了 ACM(自动证书管理),目前是 TLS v1.2。域名,例如 https://my-app.herokuapp.com/parse.

此外,我的 CMS 应用程序是使用 Appharbor 部署的,它是用 C# .net 框架编写的。这也是使用TLS v1.2认证。

我发现 Heroku 不再接受 TLS v.1.0/1.1。更改之后,只有这些应用停止工作。

在我的 CMS 应用程序中,我提到服务器如下:

<add key="ParseServer" value="https://my-app.herokuapp.com/parse/" />

它不工作,但当它像下面这样更改为 HTTP 时它开始工作:

<add key="ParseServer" value="http://my-app.herokuapp.com/parse/" />

当尝试来自 CMS 的请求时,例如当登录如下时:

var parseUser = await ParseUser.LogInAsync(username, password);

它会产生以下错误:

System.NullReferenceException: 'Object reference not set to an instance of an object.'

堆栈跟踪:

at Parse.Internal.HttpClient.<>c__DisplayClass16.<ExecuteAsync>b__d(Task`1 t)
   at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
   at System.Threading.Tasks.Task.Execute()
   at Parse.Internal.InternalExtensions.<>c__DisplayClass7`1.<OnSuccess>b__6(Task t)
   at System.Threading.Tasks.ContinuationResultTaskFromTask`1.InnerInvoke()
   at System.Threading.Tasks.Task.Execute()
   at Parse.Internal.InternalExtensions.<>c__DisplayClass7`1.<OnSuccess>b__6(Task t)
   at System.Threading.Tasks.ContinuationResultTaskFromTask`1.InnerInvoke()
   at System.Threading.Tasks.Task.Execute()
   at Parse.Internal.InternalExtensions.<>c__DisplayClass7`1.<OnSuccess>b__6(Task t)
   at System.Threading.Tasks.ContinuationResultTaskFromTask`1.InnerInvoke()
   at System.Threading.Tasks.Task.Execute()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at Senterapps.Web.Controllers.LoginController.<Index>d__5.MoveNext() in \path\project\Controller.cs:line 555

除此之外还有什么我需要检查的吗?我做错了什么?提前致谢:)

这个问题原来是我的 .net Framework 4.5 的协议问题。因此,主要不支持 TLSv1.2 的应用程序存在实际问题。为了支持这一点,我在我的 Global.asax.cs:

中添加了以下覆盖
ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12;

在阅读 Microsft 博客上的这篇 article 时想到了这个主意。将来需要根据它更新.net框架和依赖项。直到这是解决方法。