Windows Server から Discourse API に接続する際に「Could not create SSL/TLS secure channel error」が発生する

みなさん、こんにちは。

最近、2.4.0.beta4 (1576b07a10) にアップデートしました。アップデート以降、外部アプリケーションの 1 つが Discourse API での認証ができなくなっています。

アプリケーションは単純なエラーを投げます。

The request was aborted: Could not create SSL/TLS secure channel.

アプリケーションは TLS1.2 を使用していますが、これはもうサポートされていないのでしょうか?

他のアプリケーションのデバッグに数時間を費やさないために、最近の変更点についてご意見があればお聞かせください。

TLS のバージョン 1.2 および 1.3 が有効になっています。SSL Server Test (Powered by Qualys SSL Labs) をご自身でテストして確認できます。

@Falco さん、ありがとうございます。まだ残っていることを確認しました:

はい、デバッグを進めます。Discourse 側で何か別の変更があり、それが外部アプリケーションの停止を引き起こしているようです。これは開発環境と本番環境の両方で発生しています。

原因を特定できるよう頑張ります :+1:t2:

実は、こちらで説明されている問題と非常に似た事例がありました:

当社の Discourse API に接続する外部レガシーアプリケーションは、古い Windows Server 2008 R2 上で動作しています。

理由は不明ですが、今週初めに Discourse のアップデートを適用したところ、Windows サーバーと Discourse サーバー間で暗号スイートの合意ができなくなっていました。アップデートによって何らかの暗号が変更されたのか、それとも同じタイミングで Let’s Encrypt の証明書更新が行われたことが原因なのかは分かりません :man_shrugging:

いずれにせよ、Discourse 側を編集するのではなく、@Falco さんが上記で共有した SSL Labs のリンクを参考に、両者で合意できる暗号スイートを Windows サーバー側にいくつか追加することで解決できました :slight_smile:

わあ、それってかなり古いね!サポート終了まであとわずか4ヶ月。そろそろ交換の時期かな :sweat_smile:

これは @gerhard さんの変更に関連している可能性はありますか?

これは、Debian へのアップグレードに伴う暗号スイートの切り替えが原因だったのかもしれません。楕円曲線証明書の追加を行っていたので、IE11 だけでなく、すべての古い Windows システムで動作すると思っていたのですが。もし私の記憶が正しければ、IE11 は Windows の暗号ライブラリを使用しているはずです… :man_shrugging: