我在ubuntu 11.10上使用OpenJDK(java版"1.6.0_22")运行最新的opensc 0.12.2
我可以阅读我的智能卡(飞天ePass PKI)
pkcs15-tool --dump
Run Code Online (Sandbox Code Playgroud)
现在我尝试使用带有keytool的智能卡:
keytool
-providerClass sun.security.pkcs11.SunPKCS11 \
-providerArg /etc/opensc/opensc-java.cfg \
-keystore NONE -storetype PKCS11 -list
Run Code Online (Sandbox Code Playgroud)
这会导致错误:
keytool error: java.security.KeyStoreException: PKCS11 not found
java.security.KeyStoreException: PKCS11 not found
at java.security.KeyStore.getInstance(KeyStore.java:603)
at sun.security.tools.KeyTool.doCommands(KeyTool.java:621)
at sun.security.tools.KeyTool.run(KeyTool.java:194)
at sun.security.tools.KeyTool.main(KeyTool.java:188)
Caused by: java.security.NoSuchAlgorithmException: PKCS11 KeyStore not available
at sun.security.jca.GetInstance.getInstance(GetInstance.java:159)
at java.security.Security.getImpl(Security.java:696)
at java.security.KeyStore.getInstance(KeyStore.java:600)
... 3 more
Run Code Online (Sandbox Code Playgroud)
当我运行相同的命令时启用调试选项,如下所示:
keytool
-providerClass sun.security.pkcs11.SunPKCS11 \
-providerArg /etc/opensc/opensc-java.cfg \
-keystore NONE -storetype PKCS11 -list \
-J-Djava.security.debug=sunpkcs11
Run Code Online (Sandbox Code Playgroud)
它突然起作用:
... debug infos ...
Enter keystore password:
sunpkcs11: login …Run Code Online (Sandbox Code Playgroud) 如果有人能够对以下问题有所了解,我将非常感激.我已经阅读了keytool文档但是找不到任何关于这里可能出现问题的提示.
我创建了一个密钥库
keytool -genkey -alias privateKeyName -keyalg RSA -keystore privateKeyName.jks -validity 720 -keysize 1024
我创建了一个证书请求
keytool -certreq -alias privateKeyName -keystore privateKeyName.jks -file certReqFileName.csr
在签名机构给我.cer文件后,我试着用它导入它
keytool -import -alias privateKeyName -file certReqFileName_t_f.cer -keystore privateKeyName.jks
导入失败
keytool错误:java.lang.Exception:无法从回复建立链
我已经坚持了一段时间,所以任何帮助都会很棒.谢谢.
嗨,我正在使用keytool来创建csr.我想知道选项-genkey和-genkeypair之间有什么区别.据我所知-genkey只创建私钥,-genkeypair创建私钥和publice密钥.如果我的理解是正确的,如何获取使用-genkey创建的私钥的公钥.
我需要使用keytool和jarsigner在很多文件夹中签署很多o文件.
每次我开始签署这些文件时,我都需要删除.cert和keystore文件来重新创建它.
我在开发环境和使用假passwd签署它,在应用程序工作后,infra人将照顾签名,我没有访问真正的证书.
当我打字时keytool -import .......,输入后,请求输入密码我只需输入它,但批量输入就成了问题.
我在这里的Windows 7上.
我试过keytool -import ....... < passHere和keytool -import ....... | passHere,太多,但它不工作.
我想转动标志最自动化.
有人告诉我这里以编程方式使用它,但我只需要在bat文件上使用它.
密码是固定值内批处理文件.
有一种方法可以将passwd内联到keytool吗?
可以在'运行时'中设置环境变量来提供keytool密码吗?怎么做?
有一种方法可以将浴缸内的密码给密钥工具吗?我看到了这个,但没有帮助,因为我不是一个asm开发人员,不知道它是否匹配问题,我想知道是否有更简单的东西.
谢谢
我创建了一个证书,并将CN设置为我的服务器的IP地址,格式为xxx.xxx.xxx.xxx.但是当我尝试在Java中运行我的代码时,我收到一条HTTPS hostname wrong: should be <xxx.xxx.xxx.xx>错误消息.
可能有什么不对?我确定我正在连接到正确的IP地址.但是,我没有在证书上指定服务器的端口.在为CN提供价值时是否需要端口?但我正在使用https的默认端口8443.此外,我尝试将CN从服务器的IP地址更改为"localhost".它之后工作.我在想是否CN部分不接受IP地址作为值?
您能否解释CN如何工作以及它所需的值是多少?
谢谢!
我正在使用SSL握手连接到URL.为此,我生成了一个.csr文件并将其签名.签名后,我创建了一个my.jks文件,其中包含3个条目
我使用jetty作为服务器,我专门将密钥库和信任库设置为相同的jks文件
-Djavax.net.ssl.keyStore=/home/keystore/my.jks
-Djavax.net.ssl.keyStorePassword=changeit
-Djavax.net.ssl.trustStore=/home/keystore/my.jks
-Djavax.net.ssl.trustStorePassword=changeit
Run Code Online (Sandbox Code Playgroud)
它工作正常.但这是正确的方法吗?我认为密钥库应该包含客户端证书和私钥,信任库应该包含CA. 但是当我尝试这样做时,我得到以下错误.
"javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到所请求目标的有效证书路径"
请就此提出建议.
在将密钥库的类型从PKCS12更改为JKS后,我遇到了获取相同指纹的问题.
为了进行更改,我创建了一个新的JKS密钥库,删除了其中的密钥,并从.p12文件中导入了我需要的密钥.用keytool -keystore keystore.jks -list
它验证密钥时输出指纹:
(SHA1): 21: ... :39
Run Code Online (Sandbox Code Playgroud)
这是.p12文件的指纹,指纹谷歌说我以前的apks已经.当我用这个证书签署我的apk并尝试将其上传到Playstore时,它说证书有指纹:
SHA1: C7: ... :AF
Run Code Online (Sandbox Code Playgroud)
当我用KeyStore Explorer检查原始的.p12文件和新的.jks文件时,它们都SHA1: C7: ... :AF列为指纹.
EDIT1:
keytool -keystore disneyquiz.p12 -storetype PKCS12 -alias 1 -list
Enter keystore password:
1, Jun 4, 2014, PrivateKeyEntry,
Certificate fingerprint (SHA1): 21: ... :39
keytool -keystore quizstore.jks -list
Enter keystore password:
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 1 entry
key0, Dec 3, 2014, PrivateKeyEntry,
Certificate fingerprint (SHA1): 21: ... :39
Run Code Online (Sandbox Code Playgroud)
新的Apk
keytool -printcert -file CERT.RSA …Run Code Online (Sandbox Code Playgroud) 将der文件导入密钥存储区后,如下所示
keytool -keystore my-release-key.keystore -importcert
-file ~/Downloads/upload_cert.der -alias uploadcert
Run Code Online (Sandbox Code Playgroud)
尝试组合发布APK时出错
trusted certificate entries are not password-protected
Run Code Online (Sandbox Code Playgroud)
如果我加
-protected
Run Code Online (Sandbox Code Playgroud)
对于进口,我说
keytool error: java.lang.IllegalArgumentException: password can't be null
Run Code Online (Sandbox Code Playgroud)
如果我在保护后传递密码,我会收到使用帮助消息.不知道如何传递密码.
如果我正在使用谷歌上传证书文件签署正确的道路,我是否有任何想法?
在谷歌关于短信和通话记录权限的新政策之后,我正在尝试为我的 android 应用程序实现短信检索器 API。本教程看起来很简单,但我在创建/生成相同的哈希时发现了一个问题。
当我打字
keytool -alias MyAndroidKey -exportcert -keystore MyProduction.keystore | xxd -p | tr -d "[:space:]"
Run Code Online (Sandbox Code Playgroud)
或者
keytool -exportcert -alias MyAndroidKey -keystore MyProductionKeys.keystore | xxd -p | tr -d "[:space:]" | echo -n com.example.myapp `cat` | sha256sum | tr -d "[:space:]-" | xxd -r -p | base64 | cut -c1-11
Run Code Online (Sandbox Code Playgroud)
它说:
'xxd' is not recognized as an internal or external command,
operable program or batch file.
'tr' is not recognized as an internal or external command,
operable program …Run Code Online (Sandbox Code Playgroud) 我正在尝试将第三方的 p7b 文件导入到 java 信任存储中。看起来 p7b 包含根证书和公钥。
我正在尝试使用类似于的命令导入它
keytool -importcert -file certs.p7b -keystore dave.jks -storetype JCEKS -trustcacerts
Run Code Online (Sandbox Code Playgroud)
当第三方将文件提供给我时,他们没有告诉我公钥的别名是什么。
我是否认为在不知道这些信息的情况下无法导入它?