2013-01-11 37 views
11

tarafından işlenen kök sertifikaları (truststore) kullanmak için Java VM'yi nasıl kurarım scribe OAuth kitaplığını kullanırken aşağıdaki özel durumla karşılaşıyorum.Mac OS X

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

Bazı kullanıcılara dayanarak, JVM güvencesini bir şekilde ayarlamalıyım.

Bunu neden yapmak zorundayım? Java VM'nin os'un varsayılan güvenilir mağazasını kullanmasına nasıl talimat verebilirim? (Benim durumumda Mac OS X).

cevap

7

Ben kurulum VM başlatırken bu sistem propery ekleyerek varsayılan truststore yapılabilir: Bunu yapmam gerekiyor neden

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

Hala anlamıyorum. Bu varsayılan olmalıdır. Bunu her seferinde eklemek de çok can sıkıcı. Daha iyi bir yol var mı, ör. bazı işletim sistemi ayarları?

0

Ben SSL ile uğraşırken JAVA, varsayılan truststore tanımlamak için bir yol ihtiyacı olduğu için, bu bilgi bir şekilde JAVA geçirilecek ettiğini herkese açık olduğunu düşünüyorum, bu yüzden "updated düşünüyorum "Elindeki soru, bunu bir-zaman-bir-zaman-ve-sonra-unut-her zaman yolunda yapmaktır.

En iyi yol, OS seviyenizdeki JAVA_TOOL_OPTIONS ortam değişkenini ayarlayarak, bu ortam değişkeni ayarlanmışsa, JAVA varsayılan olarak bu ortam değişkeninde sağladığınız argümanlar ile başlatılacaktır.

Yani, yerine-Djavax.net.ssl.trustStore=/Library/Java/Home/lib/security/cacertsolarak değerle OS düzeyinde "bir zamanlar"JAVA_TOOL_OPTIONSortam değişkeni ayarlamak ve sonra yapılır,-Djavax.net.ssl.trustStore=/Library/Java/Home/lib/security/cacertsJVM başlatıldığında her saatini ayarlamak gerek yok.

Bu ortam değişkeni

, (JNI'yı çağırma API) JNI_CreateJavaVM fonksiyonu ortam değişkeninin değerini opsiyonlar Aşağıda

# 1 den "daha okumalar" bir alıntı JavaVMInitArgs bağımsız değişkeninde sağlanan seçeneklere.

dikkat Sadece ikaz aşağıda belirtilen, 1. den "Ek okumalar" nin alıntı: Bazı durumlarda

Solaris OS üzerinde bu seçenek, örneğin güvenlik nedeniyle devre dışı Etkin kullanıcı veya grup kimliği, gerçek ID'den farklı olduğunda seçenek devre dışı bırakılır.

Aşağıda dikkat bir daha ikaz ("Ek okumalar" nin 1. alıntı) ama alakalı, ama sadece söz değil yani bağlam VM seçim argümanı hakkında olmadığından sanırım.Bu ortam değişkeni JNI_CreateJavaVM denir o zaman incelenir yana

, bu örneğin normalde başlatıcı tarafından ele olurdu seçenekleri ile komut satırı genişletmek için kullanılamaz, VM seçimi kullanarak -client veya -server seçeneği.

fazla okuma: