2013-01-11 20 views
11

scribe OAuthライブラリを使用しているときに次の例外が発生します。Mac OS Xで扱うルート証明書(トラストストア)を使用するようにJava VMを設定する方法

Caused by: javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty 

Google検索に基づいて、何とかJVMトラストストアを設定する必要があるようです。

なぜこれを行う必要がありますか? Java VMにosのデフォルトのトラストストアを使用するように指示するにはどうすればよいですか? (私の場合はMac OS X)。

答えて

7

私ができるVMを起動するときに、このシステムproperyを追加することで、セットアップのデフォルトのトラストストアを:

-Djavax.net.ssl.trustStore=/Library/Java/Home/lib/security/cacerts 

私はこれを行うために必要なのですか、なぜ私はまだ理解していません。これがデフォルトになります。毎回これを追加することも非常に面倒です。より良い方法がありますか?いくつかのOSの設定?

0

Ah!私はこの問題を知っています。 私は同様の問題を抱えていて、OSXのJavaバインディングに関連していました。 一度最新バージョンをインストールすると修正されました。

https://support.apple.com/en-us/HT204036

0

は、私はSSLを扱うときJAVAは、デフォルトのトラストストアを識別するための方法を必要とするので、この情報は、何らかの方法でJAVAに渡されたことが誰にでも明らかだと思うので、私は「更新を考えます「問題は、いつでも、そして、忘れて、いつでも、それをやり遂げる方法です。

OSレベルで環境変数JAVA_TOOL_OPTIONSを設定すると、この環境変数が設定されていれば、この環境変数で指定した引数でJAVAがデフォルトで起動されます。

だから、あなたの代わりに-Djavax.net.ssl.trustStore=/Library/Java/Home/lib/security/cacertsとして値を使用してOSレベルでの「一回」JAVA_TOOL_OPTIONS環境変数を設定して、あなたが行われ、-Djavax.net.ssl.trustStore=/Library/Java/Home/lib/security/cacertsJVMが起動されるたびに設定する必要はありません。以下

「また読み」の#1からの抜粋である:

この環境変数が設定されている場合、(JNI呼び出しAPIで)のJNI_CreateJavaVM関数 環境 変数の値を付加JavaVMInitArgs引数で指定されたオプションに渡します。

注意すべき唯一の注意点以下のように説明することが、#1から「さらに測定値」の抜粋:いくつかのケースでは

SolarisはOS上でこのオプションは、 例えば、セキュリティ上の理由で無効になっています有効ユーザ またはグループIDが実IDと異なる場合、このオプションは無効になります。

以下は注意するべきことですが、文脈はVM選択引数ではないので、それは意味がないので言及しておきます。使用

この環境変数が のJNI_CreateJavaVMが呼び出された時点で検査されるので、通常 例えば、ランチャによって処理されるオプションを使用してコマンド ラインを増強するために使用することができない、VM選択-clientまたは-serverオプション。

さらに読書:

関連する問題