前提・実現したいこと
ASP.Net MVCでのシステムを構築しています。このシステムで、他社サービスのAPIを実行する部分がありまして、そのAPIを実行するには固定IPアドレスの値を申請する必要がありました。
開発PCは固定IPでなく動的であるので、デバッグのためAmazon EC2にてWindows Server2019を構築、固定IPを割り当て、開発中のシステムを発行しリモートデバッグとまではうまくできているのですが、肝心の他社サービスAPIを実行する部分で下記のエラーが発生しています。
発生している問題・エラーメッセージ
The request was aborted: Could not create SSL/TLS secure channel.
該当のソースコード
コードの概要は下記の通りです。
C#
1// 下記はAPI実行に必要な設定 2x509Certificate2 = new X509Certificate2("pfxファイルを読み込んだバイト配列", "パスワード", X509KeyStorageFlags.PersistKeySet); 3WebRequestHandler handler = new WebRequestHandler(); 4handler.ClientCertificates.Add(x509Certificate2); 5handler.ServerCertificateValidationCallback = delegate { return true; }; 6 7using (var client = new HttpClient(handler)) 8{ 9 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; 10 HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://他社サービスのAPIエンドポイント"); 11 request.Headers.Add("Authorization", "APIに必要なトークン"); 12 request.Content = new StringContent("ボディリクエスト文字列", new UTF8Encoding(), "application/x-www-form-urlencoded"); 13 14 // ☆↓がエラーが発生している箇所 15 response = client.SendAsync(request).Result; 16}
試したこと
Fiddler(やりとりされるHTTPリクエストやレスポンスを確認できるツール。HTTPS通信もキャッチするように設定済み)にて、トラフィックを確認しましたが、キャッチされず、そもそものリクエストが送信できていないようです。
エラーメッセージからhttps通信の設定の問題かと考え、EC2のセキュリティグループを確認、IISマネージャでの証明書、SSL設定を追加したのですが状況が変わりませんでした。
開発用PC(動的IP)でデバッグ実行するとFiddlerでキャッチされますし、他社APIのエラーメッセージが返っております。そのエラー内容も「許可されていないIPアドレスである」旨であるため、通信自体は上記のコードで合っており、EC2の設定の問題なのかと思っています。
ただ、EC2「から他サーバへの」HTTPS通信について調べようとしても、たいていはEC2に構築したWebサーバーにHTTPS通信する内容が多く見つかります。正直、このHTTPS通信、SSL/TLSに関して自分の理解は浅いです。
今回行いたい「EC2(のIIS)から他サービスへHTTPS通信をさせる」のと、多く情報がある「EC2へHTTPS通信する」ことは、設定自体は同じ話になるのでしょうか?
コードで解消できる話題なのか、AWSの設定で解消できる話なのか、ご助力いただきたく存じます。よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー