技術・プログラミング]javaのプログラムからSSLで接続する場合に、OpenSSH等で作成した自己証明書を使っているサイトを利用する場合があると思います。開発時など、正式な証明書が用意されていない時や、開発環境へのアクセスなどが考えられますね。それ以外にも、javaが正式なルート証明書だと認識していない証明書を使っている場合には、以下のようなエラーが出て、接続に失敗してしまいます。com.batch.SLLTestBatch.main(SLLTestBatch.java:41)このような場合は、javaを起動する際に、自己証明書の情報を含めたキーストアを指定してあげると、エラーを回避することができます。指定して起動する方法を。行きたいところですが、少し準備が必要です。キーストアとは何でしょうか。(KeyStore)とは、鍵と証明書の情報を保管するためのファイルです。ファイル全体がパスワードによって暗号化されています。Javaアプリケーションを起動する際に、信頼できる証明書情報が格納されたファイルとしてこのキーストアファイルを指定してあげると、アプリケーションは、それらの証明書を利用しているサイトを妥当なサイトとして信頼します。デフォルトのキーストアの場所キーストアは、通常、システムにインストールされたjreまたはjdkの配下にあります。FilesJavajre1.5.0_22libsecurity」など、自分の環境のjavaのフォルダの下の「libsecurity」を見てみましょう。そこに、「cacerts」というファイルがあるはずです。これが、Javaが実行時にデフォルトで使用するキーストアになります。自己証明書を利用したサイトにJavaプログラムからアクセスするには、このデフォルトのキーストアに自己証明書を追加してあげるか、自己証明書入りのキーストアファイルを新たに作成して、起動時に、デフォルトのキーストアではなく、そちらのファイルを使用するように指定してあげればよいことになります。どちらでも良いのですが、今回は、分かりやすさとメンテのしやすさのために、新たにファイルを作ることにしましょう。始めに、キーストアにimportする、接続先サイトの証明書を用意しましょう。自分で作成した証明書で無い場合は、サイトにブラウザでアクセスし、証明書をエクスポートしてください。X509(cer)形式)を「mycert.cer」とします。キーストア作成では、キーストアを作成します。対象のサイトの証明書だけを格納したキーストアを作成してもよいのですが、すでにデフォルトのキーストアに格納されている証明書に追加したキーストアを作成した方が、ゆくゆくは何かと便利でしょうから、そうしてみます。先程のデフォルトのキーストアファイル「cacerts」を複製して、リネームします。今回は「cacerts_add」としました。以下のコマンドをコマンドプロンプトから入力します。./cacerts_addキーストアを操作するコマンドは「keytool」になります。すると、キーストアのパスワードを入力してください:と聞かれますので、「changeit」と入力します。これは、デフォルトのキーストアのパスワードです。[no]:と聞かれますので、「yes」と入力します。追加されたかを確認するには、以下のコマンドを使いましょう。./mycerts_added作成したキーストアを使ってjavaプログラムを起動では、作成したキーストアの方を使うように、javaプログラムの起動時に、VMの引数として以下の指定をしてみましょう。-Djavax.net.ssl.trustStorePassword=changeitこれで、自己証明書等のサイトでもjavaのプログラムから問題なく接続ができるようになります。タグ:javaこんな記事も読まれていますコメントを残す返信をキャンセルする。Reserved.このページの先頭へ。