2011-01-04 12 views
2

SunMSCAPIを使用してSSL証明書を必要とするWebページを読み取るプログラムがいくつかあります。私のコードはWindows XP(32ビット)では動作しますが、Windows 7(64ビット)を新しくインストールしても動作しません。ここではコードの一部は次のとおりです。java.security.NoSuchProviderException:そのようなプロバイダがありません:SunMSCAPI

System.setProperty("javax.net.ssl.keyStoreProvider", "SunMSCAPI"); 
System.setProperty("javax.net.ssl.keyStoreType", "WINDOWS-MY"); 
System.setProperty("javax.net.ssl.trustStoreProvider", "SunMSCAPI"); 
System.setProperty("javax.net.ssl.trustStoreType", "WINDOWS-ROOT"); 
System.setProperty("proxyHost", "proxy"); 
System.setProperty("proxyPort", "8080"); 

URL url = new URL(TEST_URL); 
try { 
    HttpsURLConnection httpsCon = (HttpsURLConnection) url.openConnection();.... 

そしてここでは、スタックトレースです:

Caused by: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl) 
at java.security.Provider$Service.newInstance(Unknown Source) 
at sun.security.jca.GetInstance.getInstance(Unknown Source) 
at sun.security.jca.GetInstance.getInstance(Unknown Source) 
at javax.net.ssl.SSLContext.getInstance(Unknown Source) 
at javax.net.ssl.SSLContext.getDefault(Unknown Source) 
at javax.net.ssl.SSLSocketFactory.getDefault(Unknown Source) 
at javax.net.ssl.HttpsURLConnection.getDefaultSSLSocketFactory(Unknown Source) 
at javax.net.ssl.HttpsURLConnection.<init>(Unknown Source) 
at sun.net.www.protocol.https.HttpsURLConnectionImpl.<init>(Unknown Source) 
at sun.net.www.protocol.https.Handler.openConnection(Unknown Source) 
at sun.net.www.protocol.https.Handler.openConnection(Unknown Source) 
at java.net.URL.openConnection(Unknown Source) 
at GetData2.SetVallues(GetData2.java:56) *// HttpsURLConnection httpsCon = (HttpsURLConnection) url.openConnection();* 
... 2 more 
Caused by: java.security.NoSuchProviderException: no such provider: SunMSCAPI 
at sun.security.jca.GetInstance.getService(Unknown Source) 
at sun.security.jca.GetInstance.getInstance(Unknown Source) 
at java.security.Security.getImpl(Unknown Source) 
at java.security.KeyStore.getInstance(Unknown Source) 
at com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl.getDefaultKeyManager(Unknown Source) 
at com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl.<init>(Unknown Source) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
at java.lang.reflect.Constructor.newInstance(Unknown Source) 
at java.lang.Class.newInstance0(Unknown Source) 
at java.lang.Class.newInstance(Unknown Source) 
... 15 more 

私はまた、次の例http://muhammadhamed.blogspot.com/2010/04/accessing-ms-certificate-stores-in-java.htmlを試みたが、再びこのNoSuchProviderExceptionを受けました。私の推測では、いくつかの構成エラーがあるが、私はそれが何であるか分からない。ここで

は私のJVMの情報は次のとおりです。
java version "1.6.0_23"
Java(TM) SE Runtime Environment (build 1.6.0_23-b05)
Java HotSpot(TM) 64-Bit Server VM (build 19.0-b09, mixed mode)

私は誰かが

よろしく:-)私を助けることができるよう願っています。

答えて

3

J2SE Security pageは、MS CryptoAPI(SunMSCAPIが使用する)は32ビットWindowsのJava 6でのみ使用可能であると言います。

幸いにも、32ビットJVMをWin64にインストールすることはできます。

+0

hh。 10倍のすべてが32b javaで動作します – npocmaka

関連する問題