DOBON.NET DOBON.NETプログラミング掲示板過去ログ

SSL暗号化してPOST形式で送信

環境/言語:[環境(WindowsXP)、使用言語(VB.NET)、.NET Frameworkのバージョン(1.1)]
分類:[.NET]

お世話になります。
今、WindowsアプリケーションでXML文書をSSLで暗号化を行い、POST形式で送信しようとしているのですが、SSL通信をどのようにしてよいのか分かりません。
どうかご教授お願いします。
サーバ側をHTTPSできるようにして、HTTPSで投げるようにすればいいだけです。
クライアントからの通信方法がわからないだけですか?
■No19519に返信(中博俊さんの記事)
> サーバ側をHTTPSできるようにして、HTTPSで投げるようにすればいいだけです。
> クライアントからの通信方法がわからないだけですか?

すみません。
クライアントの通信方法が分かりません。
例えば、HttpWebRequest を使う場合、SSL であるかどうかなんてことは、プログラマは気にする必要はありません。

送信先の URL が http://xxx なら通常の HTTP で、https://xxx なら HTTP over SSL で送信されます。
ありがとうございます。

渋木宏明(ひどり)さん例えで、HttpWebRequestを使ってやってみたんですが、

データを送信するためのStreamを取得するとこで、

「基になる接続が閉じられました : リモート サーバーと信頼関係を確立できませんでした。」

とでてきました。

これはどのような意味なのでしょうか?
> データを送信するためのStreamを取得するとこで、
>
> 「基になる接続が閉じられました : リモート サーバーと信頼関係を確立できませんでした。」
>
> とでてきました。
>
> これはどのような意味なのでしょうか?

通信相手のサーバってちゃんとしたものですか?
SSL 接続の際にサーバ証明が確認できなかったような印象を受けます。

てか、ものすごく心配になってきたんですけど、そのサーバは HTTPS (SSL) 接続をサポートしてますか?

クライアント「だけ」で幾ら頑張ってみても、HTTP(SSL) 接続なんかできないですよ。
渋木宏明(ひどり)さんありがとうございます。
>
> 通信相手のサーバってちゃんとしたものですか?
> SSL 接続の際にサーバ証明が確認できなかったような印象を受けます。
>
> てか、ものすごく心配になってきたんですけど、そのサーバは HTTPS (SSL) 接続をサポートしてますか?
>
> クライアント「だけ」で幾ら頑張ってみても、HTTP(SSL) 接続なんかできないですよ。
>
>
提供側から、XML文書をSSLで暗号化を行い、POST形式で送信するようにと言われて
いるのでサーバの方は大丈夫だとおもいます。
IEで開くこともできますから。
もう少しがんばってみます。
お世話になります。
色々と調べてみたのですが、うまくいきません。

Try
''文字コードを指定する
Dim enc As System.Text.Encoding = _
System.Text.Encoding.GetEncoding("UTF-8")

'POST送信する文字列を作成
Dim postData As String =System.Web.HttpUtility.UrlEncode                               (oXML, enc)
''バイト型配列に変換
Dim postDataBytes As Byte() = _
System.Text.Encoding.UTF8.GetBytes(postData)

'WebRequestの作成
Dim req As System.Net.HttpWebRequest = _
System.Net.HttpWebRequest.Create("https://*******.co.jp/")

'メソッドにPOSTを指定
req.Method = "POST"
req.ContentType = "text/xml"

'POST送信するデータの長さを指定
req.ContentLength = postDataBytes.Length

'ContentTypeを"application/x-www-form-urlencoded"にする
req.ContentType = "application/x-www-form-urlencoded"

'データをPOST送信するためのStreamを取得
→ Dim reqStream As Stream = req.GetRequestStream()

→のところにいくと「基になる接続が閉じられました : リモート サーバーと信頼関係を確立できませんでした。」とエラーがでてきてしまいます。
これではとうらないのでしょうか?

どうかまたご教授おねがいします。
> 'WebRequestの作成
> Dim req As System.Net.HttpWebRequest = _
> System.Net.HttpWebRequest.Create("https://*******.co.jp/")

URL は正しいですか?

ホスト名は伏字であるとしても、トップページに POST して受け付けてくれるとは思えません。
> 'ContentTypeを"application/x-www-form-urlencoded"にする
> req.ContentType = "application/x-www-form-urlencoded"

form-urlencode は「XML 文書を丸投げ」じゃないですよ。
この辺、基本的なことなんで十分に勉強してください。
> 'データをPOST送信するためのStreamを取得
> → Dim reqStream As Stream = req.GetRequestStream()
>
> →のところにいくと「基になる接続が閉じられました : リモート サーバーと信頼関係を確立できませんでした。」とエラーがでてきてしまいます。
> これではとうらないのでしょうか?

POST で投げてる形式が間違っていますが、それは接続云々とは関係ないはずです。

サーバの方で User-Agent やらを見てはじく、などはしていないでしょうか?

「同じ端末で、ブラウザで form を表示して、そこから xml 文書をアップロード」はうまくいくんですよね?
渋木宏明(ひどり)さんありがとうございます。

URLは間違いないと思っているのですが。

やはり提供者に聞くべきなのでしょうか・・・。
お世話になります。

返事が遅くなってしまいました。

すみません。

あのあと色々調べてできるようになりました。

このようなことでした。

http://support.microsoft.com/kb/823177/ja

本当にありがとうございました。
解決済みにチェックを入れ忘れていました・・・。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板