実現したいこと
VB.NETでPOSTでTLS 1.1 および TLS 1.2 を有効化したい
前提
VB.NETでPOSTでデータを送信したいと以前質問をさせて頂いた際に、.NETのバージョンが3.5などと古く、TLS1.2以上で通信していないのが原因ではないかとご回答を頂きました。
そのため、TLS1.1およびTLS1.2を有効にしたいのですが、できません。
発生している問題・エラーメッセージ
System.Net.WebException:基礎になる接続が閉じられました: 送信時に、予期しないエラーが発生しました。 System.IO.IOException:トランスポートストリームから予期しないEOFまたは0バイトを受信しました。
該当のソースコード
Dim url As String = "https://××××.co.jp/○○○_△△△" Dim wc As New System.Net.WebClient 'NameValueCollectionの作成 Dim ps As New System.Collections.Specialized.NameValueCollection '送信するデータ(フィールド名と値の組み合わせ)を追加 ps.Add("key", "123") ps.Add("id", "B123456781") '※※※※※※ここにTLS1.2の候補が出てきません※※※※※※ ServicePointManager.SecurityProtocol = ServicePointManager.SecurityProtocol Or SecurityProtocolType.Tls 'データを送信し、また受信する Dim resData As Byte() = wc.UploadValues(url, ps) wc.Dispose() '受信したデータを表示する Dim resText As String = System.Text.Encoding.UTF8.GetString(resData) Console.WriteLine(resText)
試したこと
色々と調べた結果、ウェブブラウザの設定でTLS1.1やTLS1.2にチェックを入れたり、レジストリにTLS1.1やTLS1.2関連の情報を追加しました。
補足情報(FW/ツールのバージョンなど)
開発環境
Windows7
Microsoft Visual Studio 2008
前回の質問へのリンクも本文に追記すると回答得られやすくなると思います。
なお、前回の回答で示したリンク先に記載あるようにブラウザの設定など変更しても解決(影響)せず
.NET Framework 4.5 以上にバージョンを上げる必要があると思います。
質問内容としては「3.5のままでTLS 1.1 および TLS 1.2を利用したい」ということでしょうか?
前回に引き続き、ご回答を頂きましてありがとうございます。
まだまだ使い方がわからず、ご迷惑をお掛けし申し訳ございません。
また、いつもご丁寧にご指摘頂き、ありがとうございます。
現在使用している開発環境を変更するのが難しく、3.5のままでTLS1.1およびTLS1.2が利用できるようにしたいです。
サイトの使い方、回答を得られやすい質問の仕方については以下を参照ください。
https://teratail.com/help
https://teratail.com/help/question-tips
いつもご丁寧にありがとうございます。
熟読させて頂き、今後は気をつけるように致します。
「SecurityProtocolType 列挙型」
https://learn.microsoft.com/ja-jp/dotnet/api/system.net.securityprotocoltype?view=net-7.0
定数である Tls11 = 768, Tls12 = 3072 をキャストすれば良いのでは(試してません)
Const Tls11 As SecurityProtocolType = DirectCast(&H300, SecurityProtocolType) '768
Const Tls12 As SecurityProtocolType = DirectCast(&HC00, SecurityProtocolType) '3072
ServicePointManager.SecurityProtocol = ServicePointManager.SecurityProtocol Or Tls11 Or Tls12
KOZ6.0様、ご回答ありがとうございました。
ご指示通りに書き直したところ、問題なく通りました。
ありがとうございました。
KOZ6.0様、先ほどはありがとうございました。
ベストアンサーにさせて頂きたいのですが、こちらですとできないようです。
どのようにさせて頂けばよろしいでしょうか。
どのように修正したかを回答として書いて、自己解決としていただければ、と思います。
KOZ6.0様、ご回答ありがとうございました。
KOZ6.0様よりサンプルを記載して頂きましたが、
そのままご使用できる内容でしたので、そのままご使用させて頂きました。
それを自己解決とするのは個人的に納得できず、また本当に助かりましたので、
是非ベストアンサーをと思いました。
では回答に転記します。

回答2件
あなたの回答
tips
プレビュー