0

Cpp サーバーと Java アプレット クライアント間の接続を取得しようとしましたが、アプレットを実行すると、ブラウザーでこのエラーが発生します。トラスト ストア ファイルに証明書があります (不要な場合はお知らせください)。どんな助けでも大歓迎です。

アクセス拒否 ("java.util.propertypermission" "javax.net.ssl.truststore" "write")

import java.awt.*;
import java.applet.*;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
import java.io.*;
import javax.swing.*;

public class no2 extends Applet {

   int width, height;

   public void init() {

        System.setProperty("javax.net.ssl.trustStore", "keystore.jks"); 
        System.setProperty("javax.net.ssl.trustStorePassword", "changeit"); 

        String trustStore = System.getProperty("javax.net.ssl.trustStore"); 
        if (trustStore == null) { 
            System.out.println("javax.net.ssl.trustStore is not defined"); 
        } else { 
            System.out.println("javax.net.ssl.trustStore = " + trustStore); 
        } 

        try {

        PrintWriter toServer = null;
        BufferedReader fromServer = null;

        SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
        SSLSocket sslsocket = (SSLSocket) sslsocketfactory.createSocket("192.168.0.10", 12120);

        String[] newProtocols = {"TLSv1"};
        sslsocket.setEnabledProtocols(newProtocols);

        toServer = new PrintWriter(sslsocket.getOutputStream(), true);

        toServer.println("Data1\n");
        toServer.println("Data2\n");

        InputStreamReader isr = new InputStreamReader(sslsocket.getInputStream());
        fromServer = new BufferedReader(isr, 1);

        } catch (Exception exception) {

            exception.printStackTrace();
        }
   }
}
4

1 に答える 1

1

アプレット内でシステム プロパティを設定することはできません。ローカル ファイル (keystore.jks) システムにもアクセスできません (特定のアクセス許可を要求しない限り)。

次のようなドキュメントに記載されているように、特別なパラメーターを JVM に渡すことができます。

<APPLET archive="my_applet.jar" code="MyApplet" width="300" height="300">
    <PARAM name="java_arguments" value="-Djavax.net.ssl.trustStore=keystore.jks">
</APPLET>

ただし、ここでも、ローカル ファイルにアクセスするために必要な特別なアクセス許可に注意してください。

于 2012-07-07T15:39:37.437 に答える