5

Java 7 (OpenJDK ではなく Oracle/Sun JDK) にアップグレードした後、Web Start でアプリをテストしようとするとjavaws、「セキュリティ設定によってアプリケーションがブロックされました」と表示されます。Java コントロール パネルを使用して、セキュリティを高から中に下げて動作させることができます (署名されていないアプリを起動するかどうかを尋ねられます) が、それによって Web ブラウザーのセキュリティ レベルも低下します。javaws -J-Dkey=valuejavaws のその 1 つのインスタンスを取得して、起動するものに関してセキュリティを緩和または無視できるようにするシステム プロパティはありますか (ただし、それ以外の場合はセキュリティを同じに保ちます)。

編集: 誰かが Java 7 のソース コードがどこにあるかを教えてくれたらjavaws、喜んでコードを読んで答えを見つけます。

編集 2 : Java コントロール パネルで Java セキュリティを中程度に設定すると、アプリを起動javawsすると、署名されていないアプリを実行するかどうかを尋ねられます。これは私が複製したいものです。コントロール パネルは、システム プロパティdeployment.security.level=MEDIUMをファイルに追加することにより、セキュリティを中レベルに設定します~/.java/deployment/deployment.properties。これを使用する2つの方法を試しました:

-J-Ddeployment.security.level=MEDIUM1)に渡すjavaws。これにより、署名されていないアプリを実行するかどうかを確認することなく、アプリが完全に起動します。

2) を渡します-J-Ddeployment.system.config=~/.java/deployment/FOO.properties。ここFOO.propertiesで、 は通常のdeployment.propertiesファイルのコピーで、deployment.security.level=MEDIUM手動で追加されています。繰り返しますが、これにより、署名されていないアプリを実行するかどうかを確認することなく、アプリが完全に起動します。

編集 3 : OpenJDK ではなく、Oracle/Sun JDK を使用していることに注意してください。

4

1 に答える 1

1
  • 独自のカスタムを作成してみましたSecurityManagerか?
  • (これがあなたjava.security.AllPermissionにとっての修正であるかどうかをテストするためだけに)を試しましたか?

関連スペック:

これはあなたに非常に関連しているかもしれません:

EDIT:Re:javaws、javaws自体の呼び出しを確認してください。私はそうしましたcat /usr/bin/javaws、そしてここに行きます:

#!/bin/bash

JAVA=/usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java
LAUNCHER_BOOTCLASSPATH="-Xbootclasspath/a:/usr/share/icedtea-web/netx.jar"
LAUNCHER_FLAGS=-Xms8m
CLASSNAME=net.sourceforge.jnlp.runtime.Boot
BINARY_LOCATION=/usr/bin/javaws
PROGRAM_NAME=javaws
CP=/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/rt.jar

JAVA_ARGS=( )
ARGS=( )
COMMAND=()

i=0
j=0

while [ "$#" -gt "0" ]; do
  case "$1" in
    -J*)
      JAVA_ARGS[$i]="${1##-J}"
      i=$((i+1))
      ;;
    *)
      ARGS[$j]="$1"
      j=$((j+1))
      ;;
  esac
  shift
done

k=0
COMMAND[k]="${JAVA}"
k=$((k+1))
COMMAND[k]="${LAUNCHER_BOOTCLASSPATH}"
k=$((k+1))
COMMAND[k]="${LAUNCHER_FLAGS}"
k=$((k+1))
i=0
while [ "$i" -lt "${#JAVA_ARGS[@]}" ]; do
  COMMAND[k]="${JAVA_ARGS[$i]}"
  i=$((i+1))
  k=$((k+1))
done
COMMAND[k]="-classpath"
k=$((k+1))
COMMAND[k]="${CP}"
k=$((k+1))
COMMAND[k]="-Dicedtea-web.bin.name=${PROGRAM_NAME}"
k=$((k+1))
COMMAND[k]="-Dicedtea-web.bin.location=${BINARY_LOCATION}"
k=$((k+1))
COMMAND[k]="-Djava.security.manager"
k=$((k+1))
COMMAND[k]="-Djava.security.policy=/etc/icedtea-web/javaws.policy"
k=$((k+1))
COMMAND[k]="${CLASSNAME}"
k=$((k+1))
j=0
while [ "$j" -lt "${#ARGS[@]}" ]; do
  COMMAND[k]="${ARGS[$j]}"
  j=$((j+1))
  k=$((k+1))
done

"${COMMAND[@]}"

exit $?

最も重要なのは、 ajavaws.policyがロードされていることです。

于 2013-06-06T11:07:36.803 に答える