1

Android クライアントが自己署名証明書を使用できるようにする方法について、この記事を読んでいます。

http://blog.crazybob.org/2010/02/android-trusting-ssl-certificates.html#comment-form

ステップ 2 では、いくつかのコマンドを実行する必要がありますが、シェルに慣れていないため、次のコマンドを実行しようとすると構文エラーが発生します。

export CLASSPATH="/Users/me/Desktop/lib/java/bouncycastle/bcprov-jdk16-145.jar"
CERTSTORE=res/raw/mystore.bks
if [ -a $CERTSTORE ]; then
    rm $CERTSTORE || exit 1
fi
keytool \
  -import \
  -v \
  -trustcacerts \
  -alias 0 \
  -file <(openssl x509 -in mycert.pem) \
  -keystore $CERTSTORE \
  -storetype BKS \
  -provider org.bouncycastle.jce.provider.BouncyCastleProvider \
  -providerpath /usr/share/java/bcprov.jar \
  -storepass mypassword

実行時に表示されるエラー:

./test.sh: line 11: syntax error near unexpected token `('
./test.sh: line 11: `  -file <(openssl x509 -in mycert.pem) \'

したがって、 -file 構文には問題がありますが、 -file パラメータが処理できる構文がわからないため、これを何に変更すればよいかわかりません。

誰でも何か考えがありますか?私はMac 10.6を使用しています。

ありがとう

- - - - - アップデート - - - - - - - -

「<」文字を「$」に​​置き換えると、実行時に次の例外が発生します。

java.lang.RuntimeException: Usage error, CERTIFICATE----- is not a legal command
  at sun.security.tools.KeyTool.parseArgs(KeyTool.java:375)
  at sun.security.tools.KeyTool.run(KeyTool.java:171)
  at sun.security.tools.KeyTool.main(KeyTool.java:166)

うーん、例外がどの引数が悪いと言っているのか理解できません。更新されたスクリプトは次のようになります。

export CLASSPATH="/Users/me/Desktop/lib/java/bouncycastle/bcprov-jdk16-145.jar"
CERTSTORE=res/raw/mystore.bks
if [ -a $CERTSTORE ]; then
  rm $CERTSTORE || exit 1
fi
keytool \
  -import \
  -v \
  -trustcacerts \
  -alias 0 \
  -file $(openssl x509 -in mycert.pem) \
  -keystore $CERTSTORE \
  -storetype BKS \
  -provider org.bouncycastle.jce.provider.BouncyCastleProvider \
  -providerpath /usr/share/java/bcprov.jar \
  -storepass mypassword

ありがとう!

4

1 に答える 1