为android创建密钥库的步骤(在eclipse环境中)?我需要在我的应用程序中使用谷歌地图,我不知道我错过了哪些步骤.请向我提供具体的详细步骤(我从指南中了解不到).
我有一堆.keystore文件,需要找到一个具有特定CN和别名的文件.有没有办法用keytool,jarsigner或其他工具做到这一点?我找到了一种检查特定密钥库是否用于签署特定apk的方法,但我还需要在每个文件中获取别名和证书名称.
我目前有一个密钥库,只有我应该知道的密码.我现在需要将该密钥库的访问权限授予其他人,所以我想要:
1)更改密码,以便我可以与他人共享并让他们签名
2)创建不同的密码并允许他们签名.
这可能吗? - 如果是的话 - 怎么样?
在开发Java Web服务客户端期间,我遇到了一个问题.Web服务的身份验证使用客户端证书,用户名和密码.我从webservice后面的公司收到的客户证书是.cer
格式化的.当我使用文本编辑器检查文件时,它具有以下内容:
-----BEGIN CERTIFICATE-----
[Some base64 encoded data]
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)
我可以在Internet Explorer中将此文件作为证书导入(无需输入密码!)并使用它来通过Web服务进行身份验证.
通过首先剥离第一行和最后一行,转换为unix换行符并运行base64-decode,我能够将此证书导入密钥库.可以将生成的文件导入密钥库(使用该keytool
命令).当我列出密钥库中的条目时,此条目属于该类型trustedCertEntry
.由于此条目类型(?),我无法使用此证书对Web服务进行身份验证.我开始认为提供的证书是用于身份验证的公共证书...
我找到的解决方法是在IE中导入证书并将其导出为.pfx
文件.此文件可以作为密钥库加载,并可用于对Web服务进行身份验证.但是,我不能指望我的客户每次收到新证书时都会执行这些步骤.所以我想将.cer
文件直接加载到Java中.有什么想法吗?
附加信息:webservice背后的公司告诉我,应该从PC和用户那里请求证书(使用IE和网站),以便稍后导入证书.
我试图找到.keystore
文件和.jks
文件之间的区别,但我找不到它.我知道jks
是"Java密钥库",两者都是存储键/值对的方法.
是否有任何差异或偏好使用一个而不是另一个?
我在本地计算机上生成证书时遇到以下错误.
C:\Users\abc>keytool -genkey -alias tomcat -keyalg RSA
Enter keystore password:
keytool error: java.io.IOException: Keystore was tampered with, or password was incorrect
Run Code Online (Sandbox Code Playgroud)
我认为在jdk版本中存在一些问题.我在我的同事机器上运行了相同的命令,它运行正常.
请分享您的意见.
我正在添加到我们的大型Java应用程序的模块必须与另一家公司的SSL安全网站进行交谈.问题是该站点使用自签名证书.我有一份证书副本,以验证我没有遇到中间人攻击,我需要将此证书合并到我们的代码中,以便与服务器的连接成功.
这是基本代码:
void sendRequest(String dataPacket) {
String urlStr = "https://host.example.com/";
URL url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setMethod("POST");
conn.setRequestProperty("Content-Length", data.length());
conn.setDoOutput(true);
OutputStreamWriter o = new OutputStreamWriter(conn.getOutputStream());
o.write(data);
o.flush();
}
Run Code Online (Sandbox Code Playgroud)
在没有为自签名证书进行任何额外处理的情况下,这会在conn.getOutputStream()处死,但有以下异常:
Exception in thread "main" javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
....
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
....
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path …
Run Code Online (Sandbox Code Playgroud) 我的java程序如何知道包含证书的密钥库在哪里?或者,我如何告诉我的java程序在哪里查找密钥库?
以某种方式指定密钥库后,如何指定用于向客户端验证服务器的证书?
我确实想将自签名证书导入Java,因此任何尝试建立SSL连接的Java应用程序都会信任此证书.
到目前为止,我设法将其导入
keytool -import -trustcacerts -noprompt -storepass changeit -alias $REMHOST -file $REMHOST.pem
keytool -import -trustcacerts -noprompt -keystore cacerts -storepass changeit -alias $REMHOST -file $REMHOST.pem
Run Code Online (Sandbox Code Playgroud)
不过,当我尝试跑步时,HTTPSClient.class
我仍然得到:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target