谁能告诉我为什么我在Java中得到一个错误,而使用SSL? [英] Can anyone tell me why I get an error in Java while using SSL?

查看:177
本文介绍了谁能告诉我为什么我在Java中得到一个错误,而使用SSL?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在试图让一个.cpp的服务器和Java小程序客户端,但之间的连接,当我运行小程序我在浏览器中出现此错误。我在信任存储文件中的证书(让我知道如果我不需要它)。任何帮助将是AP preciated。


  

访问被拒绝(java.util.propertypermission
  javax.net.ssl​​.trustStore中,写)


 进口java.awt中的*。
导入的java.applet。*;
进口javax.net.ssl​​.SSLSocket中;
进口javax.net.ssl​​.SSLSocketFactory;
进口java.io. *;
进口的javax.swing *。公共类NO2扩展的Applet {   INT宽度,高度;   公共无效的init(){        System.setProperty(javax.net.ssl​​.trustStore中,keystore.jks);
        System.setProperty(javax.net.ssl​​.trustStorePassword中,的changeit);        串的trustStore = System.getProperty(javax.net.ssl​​.trustStore中);
        如果(的trustStore == NULL){
            的System.out.println(javax.net.ssl​​.trustStore中没有定义);
        }其他{
            的System.out.println(javax.net.ssl​​.trustStore中=+的trustStore);
        }        尝试{        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 =的新PrintWriter(sslsocket.getOutputStream(),TRUE);        toServer.println(数据1 \\ n);
        toServer.println(数据2 \\ n);        InputStreamReader的ISR =新的InputStreamReader(sslsocket.getInputStream());
        fromServer =新的BufferedReader(ISR,1);        }赶上(例外的例外){            exception.printStackTrace();
        }
   }
}


解决方案

您不能applet中设置系统属性。您不能访问本地文件(keystore.jks)中,系统或者(除非你请求这样做特定的权限)。

您可以通过特殊参数JVM的像的文档是这样的:

 < APPLET归档=my_applet.jarcode =MyAppletWIDTH =300HEIGHT =300>
    < PARAM NAME =java_argumentsVALUE = - Djavax.net.ssl​​.trustStore = keystore.jks>
< / APPLET>

但同样,带你需要访问本地文件的特殊权限的照顾。

I have been trying to get a connection between a Cpp server and a Java applet client but when I run the applet I get this error in the browser. I have the certificate in the trust store file (let me know if I don't need it). Any help would be appreciated.

access denied ("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();
        }
   }
}

解决方案

You can't set system properties within an Applet. You can't access local file (keystore.jks) systems either (unless you request for a specific permission to do so).

You can pass special parameters to JVM like stated in documentation like this:

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

But again, take care of the special permissions you'd need to access local files.

这篇关于谁能告诉我为什么我在Java中得到一个错误,而使用SSL?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆