0

JApplet から証明書ファイル ( private.der) を読み取って RSA の PrivateKey を作成する必要がありますが、エラーが発生します

access denied ("java.io.FilePermission" "private.der" "read")

JApplet がサンドボックスで実行されており、割り当てられていない限りファイルにアクセスできないことを知りました。私が間違っている場合は修正してください。

私はそれに署名し、それは働いた:

keytool -genkey -keyalg rsa -alias myKeyName
keytool -export -alias myKeyName -file myCertName.crt

jarsigner "RSA.jar" myKeyName

しかし、それでもエラーFilePermissionError が表示されます。

Java コード

File f = new File("private.der");
FileInputStream fis = new FileInputStream(f);
DataInputStream dis = new DataInputStream(fis);
byte[] keyBytes = new byte[(int) f.length()];
dis.readFully(keyBytes);
dis.close();

PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(keyBytes);
KeyFactory kf = KeyFactory.getInstance("RSA");
PrivateKey key = kf.generatePrivate(spec);

Google Chrome でサンドボックスを無効にするためのフラグ/パラメータがあれば教えてください。とにかく--allow-file-access-from-files --disable-web-security、Same Origin Policy のため、でテストしています。

4

2 に答える 2

1

アプレットへの署名は、次の目的にのみ役立ちます。

a) プロバイダーを識別します (通常は、CA からの証明書を使用する方が適切です)。

b) コンテンツが他の誰かによって変更されていないことを確認します。

それ自体では、セキュリティ権限は付与されません。誰かによって署名されたアプレットに、セキュリティ ポリシー ファイルで必要なアクセス許可を付与する必要があります。

このリンクは少し古いですが、プロセスをよく説明しています。http://www.pawlan.com/monica/articles/signedapps/

Oracle のリファレンスは、この種の問題についてアプレットではなく Java Web Start アプリケーションを指しているので、調べてみてください。 http://docs.oracle.com/javase/tutorial/deployment/applet/security.html

ああ、ちなみに、これらのチェックはすべてJVMの内部にあるため、ブラウザで無効にするフラグ/構成があるとは思えません。

于 2013-08-15T19:07:32.680 に答える
0

ファイルから読み取るには、次のようにします。

byte[] keyBytes = (byte[]) AccessController.doPrivileged(new PrivilegedAction<Object>() {
    public Object run() {
        try {
            File f = new File("<path>\\private.der");
            FileInputStream fis = new FileInputStream(f);
            DataInputStream dis = new DataInputStream(fis);
            byte[] keyBytes = new byte[(int) f.length()];
            dis.readFully(keyBytes);
            dis.close();

            return keyBytes;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
});

そして、ファイルを読み取ってコンテンツをバイト配列として取得できます

于 2013-08-15T20:25:24.720 に答える