有没有办法在keytool中打印证书的publick键?我试过了:
keytool -printcert -file client.crt
Run Code Online (Sandbox Code Playgroud)
但它只提供以下信息:
Owner: CN=client, OU=as, O=as, L=as, ST=as, C=as
Issuer: EMAILADDRESS=as, CN=ca, OU=as, O=as, L=as, ST=as, C=as
Serial number: 3
Valid from: Tue Apr 10 12:18:47 GMT+05:30 2012 until: Wed Apr 10 12:18:47 GMT+05
:30 2013
Certificate fingerprints:
MD5: 26:C0:29:E9:8C:AB:C3:9E:95:38:74:8A:87:D3:86:8D
SHA1: 5C:5A:BA:47:44:83:7E:CB:48:BE:DD:E5:39:51:24:42:C6:C5:60:8B
SHA256: DA:26:B8:C8:F4:04:3E:62:F3:7F:3B:EC:1D:9F:85:66:28:00:45:55:66:
15:FF:BB:37:77:97:59:F0:EC:0B:B6
Signature algorithm name: SHA1withRSA
Version: 1
Run Code Online (Sandbox Code Playgroud)
这里没有公钥.
我有证书链的文件 - certificate.cer:
subject=/C...
issuer=/C=US/O=VeriSign, Inc...
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
subject=/C=US/O=VeriSign, Inc...
issuer=/C=US/O=VeriSign, Inc...
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
subject=/C=US/O=VeriSign, Inc...
issuer=/C=US/O=VeriSign, Inc...
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)
我需要将这个证书链添加到密钥库.
我所做的:
openssl x509 -outform der -in certificate.cer -out cert.der
keytool -v -importcert -alias mykey -file cert.der -keypass <passwd> -keystore keystore -storepass <passwd> -alias <myalias>
Run Code Online (Sandbox Code Playgroud)
结果我在密钥库中只有1个证书.
但应该有3.
什么可能是错的?
解决方案:
CA向我发送了PKCS#7格式的证书.
我将它们存储在certificate.p7b文件中,然后通过以下命令成功将它们添加到密钥库:
keytool -import -trustcacerts -file certificate.p7b -keystore keystore -storepass <mypasswd> -alias "myalias"
Run Code Online (Sandbox Code Playgroud) 我刚刚创建了一个带有java keytool的信任库(用于没有CA证书的服务器的服务器身份验证).但是我只是注意到一些奇怪的事 我这样开始我的客户:
java -Djavax.net.ssl.trustStore=<PATHSTUFF>/client.keystore -classpath <STUFF> Client
Run Code Online (Sandbox Code Playgroud)
(注意:没有指定密码)
以上呼叫有效.
但是,当我尝试这个:
java -classpath <STUFF> Client
Run Code Online (Sandbox Code Playgroud)
这是行不通的.(显然它不起作用,它需要信任库).
我本以期需要传递这个选项(但我没有):
-Djavax.net.ssl.trustStorePassword=mypass
Run Code Online (Sandbox Code Playgroud)
问题:您是否需要密码才能访问信任库?密码只是用于修改吗?密钥库怎么样?
我想创建一个JAVA程序,将.cer CA导入到现有的密钥库文件中.这样最终用户可以更方便地插入CA证书(不使用命令中的CMD和密钥).
这是JAVA代码可以做到的任何地方吗?
我尝试某种方式,但仍然无法将证书转换为java
CertificateFactory cf = CertificateFactory.getInstance("X.509");
InputStream certstream = fullStream (certfile);
Certificate certs = cf.generateCertificates(certstream);
Run Code Online (Sandbox Code Playgroud)
错误是不兼容的类型,还有其他建议吗?
谢谢很多
我使用AppSignatureHelper该类生成了11个字符哈希.但是在将apk上传到Play商店后,他们的哈希不再起作用了.我发现Play用另一个替换了密钥,这也是哈希变化的原因.现在我无法获得11个字符的哈希密钥.
我不知道如何使用Google提供的命令.我从这里找到了这个命令
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
因为,我的应用程序启用了Play App签名,我将不得不使用此命令,
keytool -exportcert -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
我keytool从JDK的bin文件夹中替换了它的路径,但后来它说不xxd被识别所以我从网站上下载它现在说它tr不被识别,我想它也会说cut …
我知道该-keypass选项是"密钥的密码",该-storepass选项是"密钥库的密码".
但是,我不明白为什么需要两个密码.
需要2个密码的场景是什么:一个用于商店(文件,在我的情况下)和一个用于密钥.
我正在尝试使用SSL配置Tomcat 6并提供给我们的证书(由某人).我的SSL体验只有几天,但我仍然必须配置这个令人讨厌的东西.
我获得了DER格式的证书(从IE下载).
接下来我创建了一个密钥库:
keytool -import -alias btIEgen -file MyCompany.der -keystore b2b.keystore
说我用"密码"作为密码
我在SSL部分的Tomcat的server.xml中配置了它:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="webapps/b2b.keystore" keystorePass="password" keyAlias="btIEgen"
clientAuth="false" sslProtocol="TLS" />
Run Code Online (Sandbox Code Playgroud)
在启动Tomcat时,我得到了错误.
然后我在b2b.keystore上做了一个keytool -list,并注意到别名是全部小写的,所以在更新server.xml并重新启动之后,我仍然得到相同的错误,但对于小写别名.
然后我想,也许我需要一个根CA. 所以我重新创建了b2b.keystore,如下所示:
keytool -import -alias root -file myCA.cer -keystore b2b.keystore
然后我针对MyCompany.der重新执行了我的keytool命令
但我仍然得到相同的错误,别名不识别键入口.
我想知道我是否在配置tomcat时遇到了一些根本性的错误,或者这个东西应该有效吗?我只是犯了一个愚蠢的粗心错误?
任何指导将不胜感激.
生成密钥库:
keytool -genkey -alias tomcat -keyalg RSA -keystore my.keystore -keysize 2048
Run Code Online (Sandbox Code Playgroud)
生成证书签名请求(CSR):
keytool -certreq -alias tomcat -keyalg RSA -file my.csr -keystore my.keystore
Run Code Online (Sandbox Code Playgroud)
然后我去我的托管服务提供商并获得一些证书.这些我安装如下:
keytool -import -alias root -keystore my.keystore -trustcacerts -file gd_bundle-g2-g1.crt
keytool -import -alias intermed -keystore my.keystore -trustcacerts -file gdig2.crt
keytool -import -alias tomcat -keystore my.keystore -trustcacerts -file my.crt
Run Code Online (Sandbox Code Playgroud)
当我安装最终证书(my.crt)时,我收到以下错误:
keytool error: java.lang.Exception: Failed to establish chain from reply
Run Code Online (Sandbox Code Playgroud)
我相信我已经以正确的顺序导入了链条,所以我对此消息感到非常困惑.谁能看到我做错了什么?
我试图使用此命令将标准PKCS#12(.p12)密钥库转换为Java JKS密钥库:
keytool -importkeystore -srckeystore keystore.p12 -srcstoretype PKCS12 -deststoretype JKS -destkeystore keystore.jks
失败的是:
keytool error: java.io.IOException: failed to decrypt safe contents entry: javax.crypto.BadPaddingException: Given final block not properly padded
Run Code Online (Sandbox Code Playgroud)
你知道如何解决这个问题吗?
在从Android开发中长时间休息后签署apk时,我很惊讶我无法输入空的密钥库密码来解锁它.它只是我还是以前有可能?如果是这样,那么什么时候改变了,我怎么能设法解锁密钥库呢?
一些背景:也许我只是疯了,以前没有使用空密码进入密钥库,但是我可以使用的唯一可能的密码也不起作用(我发誓,我没有机会' d使用了另一个密码!).
keytool ×10
java ×6
android ×3
certificate ×2
keystore ×2
openssl ×2
tomcat ×2
command-line ×1
google-play ×1
jks ×1
pkcs#12 ×1
security ×1
ssl ×1
truststore ×1