【发布时间】:2011-03-11 05:22:13
【问题描述】:
我正在阅读这篇关于如何允许 Android 客户端使用自签名证书的文章:
http://blog.crazybob.org/2010/02/android-trusting-ssl-certificates.html#comment-form
在第 2 步中,我必须运行一些命令,但我对 shell 不太熟悉,并且在尝试运行以下命令时遇到语法错误:
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
谢谢!
【问题讨论】:
-
美元符号行不通。这会将
openssl命令的输出放在命令行上,因此它正在尝试执行文本。