質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.38%
HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

1回答

31974閲覧

https通信時に「SSLHandshakeException」となる場合とならない場合がある

kohei_jf

総合スコア4

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2020/01/09 11:30

編集2020/01/15 00:55

前提

javaにてhttps通信を行いサーバーに接続するアプリと
そのアプリを端末にインストールさせるためのインストーラーをInno Setup(Pascal言語)で作成しています。

発生している問題

Installerとアプリ、両方とも同じサーバーに対してhttps通信を行い接続するように実装しているのですが
実行する端末環境のセキュリティによってはInstallerからのhttps通信は正常に接続できるが
Javaアプリからhttps通信を実行した場合は「SSLHandshakeException」となる場合があります。

Installer側で成功しているだけに、Java側でエラーが発生する原因がまだつかめていない状況です。

勉強不足で恐れ入りますが、ご経験・知見のある方にご教示いただけますと幸いです。

よろしくお願いいたします。

###エラーメッセージ内容
以下のようにエラーメッセージが出力されていました。
Connection failed to the server: javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

take88

2020/01/10 08:31

SSLHandshakeException のメッセージはなんですか?
退会済みユーザー

退会済みユーザー

2020/01/11 11:53

セキュリティで確保できないSSL(信用ならない証明書、プロトコル)の利用だからじゃね、言語によって差異はあるだろうし
kohei_jf

2020/01/15 00:54

以下のようにエラーメッセージが出力されていました。 Connection failed to the server: javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake
guest

回答1

0

SSL ハンドシェイクで 拒否されて、通信が確率出来てないようですね。
切り分けできてないので、一般論ですが 次の いずれかの対応で 解消しそうな気がします。

  1. サーバー側のSSL証明書の問題(自己証明書、期限切れ、脆弱な暗号化アルゴリズムなど)

サーバー側のSSL証明書に問題がある場合は、正規の証明書に更新します。
プログラム側の対応は不要です。

  1. サーバーの証明書をクライントにインストールして 信頼できるようにする。

サーバーの証明書を Java 環境にインポートすれば その証明書は信頼されるようになります。
具体的には JDK/JRE に付属の keytool コマンドを使って、キーストアにインポートします。

実行例: ※JAVA_HOME はお使いの環境に合わせて読み替えてください。

keytool -import -trustcacerts -file 証明書ファイル -keystore JAVA_HOME/jre/lib/security/cacerts -alias ca

補足:証明書ファイルが手元にない場合は、Chrome 等でサーバーにアクセスして、URL の鍵マークをクリックすると、証明書のプロパティが 表示されるので、それをファイルに書き出してください。(細かい手順は省きます)

投稿2020/01/15 09:10

take88

総合スコア1446

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.38%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問