Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

Apache HttpComponentsでのSSL通信について

JavaのSwingでWebサーバと通信をしてデータの取得をする
クライアントプログラムを作っております。

当初はhttp通信でベーシック認証を使った方法でやってお
りましたが、サーバにSSL証明書を導入してhttpsでの通信
を行うことになりました。

そこでクライアント側でもSSLに対応すべく修正を行おう
としたのですが、リクエストのURLを"http://" から 
"https://"に書き換えただけで動いてしまい、これでいい
のかと判断が付かない状態です。


テストをした限りでは特に動きに問題は無いようですが、
やはり想定していない動きなので、、
そこで教えていただきたい内容は以下の二点になります、
よろしくお願い致します。

・通信の手段として合っているか
JavaでのSSL通信で調べた記事や、HttpComponentsのチュ
ートリアルでは、Javaの実行環境にSSL証明書をインスト
ールして検証を行い通信する方法が書かれています。
それと比べて随分コード量が少ないのですが問題は無いか
教えて頂ければと思います。


・情報漏えい対策等
WireSharkでパケットを見る限りでは暗号化されているよ
うなので問題無いようにも見えますが、
ベーシック認証の処理をそのまま流用しているので何かま
ずい点があればご指摘頂ければと思います。



長文失礼しました。


■ 環境
開発環境   :NetBeans
使用ライブラリ:Apache HttpComponents 4.3.5



■ コード抜粋

import org.apache.http.HttpResponse;
import org.apache.http.auth.AuthScope;
import 
org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import 
org.apache.http.client.methods.HttpUriRequest;
import 
org.apache.http.impl.client.BasicCredentialsProvider
;
import 
org.apache.http.impl.client.HttpClientBuilder;


// 接続情報
CredentialsProvider credsProvider = new 
BasicCredentialsProvider();
AuthScope                     
scope = new new AuthScope("test.com", 80);
UsernamePasswordCredentials cred  = new 
UsernamePasswordCredentials("id", "pass"));

// クライアント生成
credsProvider.setCredentials(scope, cred);
HttpClient httpClient = 
HttpClientBuilder.create().setDefaultCredentialsProv
ider(credsProvider).build();


// リクエスト
HttpUriRequest  request = new 
HttpGet("https://test.com/get_xxx");
HttpResponse response = httpClient.execute(request);

// 受信したデータを解析する処理...


1

回答

4137

閲覧

1件の回答

評価

0

証明書の導入にコーディングは必要ないので、コード量は
変わらないと思うが。

てのはともかく、接続先がどこかによるんじゃないのか
ね。
同じJava実行環境で既に接続したことのあるサーバなら、
証明書は既に導入済みだろうし。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。