QA@IT

Herokuで javax.net.ssl.SSLHandshakeException が発生した場合の対処法をごぞんじでしょうか

2782 PV

Heroku + Java(実際はScalaを使ってますが。。) + SSL な組み合わせで使われてる方いらっしゃいますか?
HerokuのJVMにSSL証明書を食わせるにはどうすればいいのかなーと悩んでいます。Keytoolが使えれば問題解決するのですが。。

Dev centerのヘルプを見る限り、Herokuで作ったアプリにSSLを適用するやり方は書いてありますが、Herokuで作ったアプリから、SSLで保護された別ドメインのAPIコールするための方法(通常の環境であればKeytoolを使ってJVMにSSL証明書を食わせる)について言及が見当たらなかったです。

なにかご存じの方がいればぜひ情報をください!

回答

今回は問題になってるAPIサーバがオレオレ証明書を使っていたので、SSL証明書を変更することで対処しました。。

お騒がせしました。

編集 履歴 (0)

Javaアプリケーションに任意のキーストアファイルを指定するには、システムプロパティで指定すれば良いようです。関係するプロパティは javax.net.ssl.trustStore, javax.net.ssl.trustStorePassword, javax.net.ssl.keyStore, javax.net.ssl.keyStorePassword あたりのようです。これらについて実行時にパラメータで指定すればできるかもしれません。$JAVA_HOME/jre/lib/security/cacerts へ自己認証局の証明書を追加したものを $HOME/.keystore へトラストストアファイルとして用意したとすると、下記のような感じで実行できるようです。

java -Djavax.net.ssl.trustStore=$HOME/.keystore \
  -Djavax.net.ssl.trustStorePassword=secret \
  -jar sample.jar https://example.jp/
編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。