我是SSL的新手.
我正在尝试使用keytool为SSL连接创建密钥库.首先,我尝试了以下命令
[aniket@localhost bin]$ keytool -genkey -alias myKeyStore -keyalg RSA -keystore
/home/aniket/keystore
Run Code Online (Sandbox Code Playgroud)
它问我密码和其他细节,最后给了我以下错误
keytool error: java.io.FileNotFoundException: /home/aniket/keystore
(Is a directory)
Run Code Online (Sandbox Code Playgroud)
所以我在keystore文件夹中创建了一个文件keystoreFile.txt并执行了
[aniket@localhost bin]$ keytool -genkey -alias myKeyStore -keyalg RSA -keystore
/home/aniket/keystore/keystoreFile.txt
Run Code Online (Sandbox Code Playgroud)
现在(没有提示密码等)我得到了
keytool error: java.lang.Exception: Keystore file exists, but is empty:
/home/aniket/keystore/keystoreFile.tx
Run Code Online (Sandbox Code Playgroud)
该文件的内容应该是什么.我虽然keytool将生成密钥对(公钥和相关的私钥)
我试图使用本文中的说明发现Java Runtime中的受信任权限列表.当我输入以下命令时:
C:\ColdFusion8\runtime\jre\lib>keytool -list -storepass changeit -noprompt -keystore
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
'keytool'不被识别为内部或外部命令,可操作程序或批处理文件.
我检查了包含我的keytool可执行文件的目录是否在路径中.(在我的Windows 7机器上,它在C:\Program Files (x86)\Java\jre6\bin
)尽管如此,命令行将无法识别该keytool
命令.
我假设doc中提到了两个单独的命令:
C:\CFusionMX\runtime\jre\lib>keytool -list -storepass changeit -noprompt -keystore
C:\CFusionMX\runtime\jre\lib\security\cacerts
编辑:
那么我可以使用以下过程而不是答案中提到的复杂步骤吗?
然后我点击"安装证书"选项
打开证书导入向导窗口,我单击Next我看到两个选项
我决定选择选项(b)
,但我很困惑我应该选择哪个证书库.
我使用以下命令为Android的Facebook应用控制台生成密钥哈希
.\keytool.exe -exportcert -alias app_android -keystore release.keystore | openssl sha1 -binary | openssl base64
Run Code Online (Sandbox Code Playgroud)
根据帮助页面和开发人员控制台,密钥散列应该是28个字符长,但是keytool生成32个字符的长密钥.
Java版本:jdk1.8.0_31操作系统:Windows 7
为android生成.
编辑
根据@ Shreyash-mashru的建议,我使用以下代码来获取keyhash
try {
PackageInfo info = getPackageManager().getPackageInfo(
"my.package.name",
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.e("KeyHash:", "++++++++++++++++++++++++++++++++++++++" + Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (PackageManager.NameNotFoundException e) {
Log.e("KeyHash:", "++++++++++++++++++++++++++++++++++++++" + e.toString());
} catch (NoSuchAlgorithmException e) {
Log.e("KeyHash:", "++++++++++++++++++++++++++++++++++++++" + e.toString());
}
Run Code Online (Sandbox Code Playgroud)
但是,如果有人仍然可以帮助我理解为什么命令行工具生成32个char长键哈希而不是28 ...
在播放商店中没有更新我的应用程序一段时间后,我尝试使用我的密钥库签署我的一个APK,但却发现密钥库和别名密码不再起作用.我可以使用这个要点重置密钥库密码:gist.github.com/zach-klippenstein/4631307
现在工作正常.这适用于两个不同应用程序的两个不同的密钥库.
跑步keytool -list -keystore mykeystore
导致:
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 1 entry
myalias, Dec 23, 2014, PrivateKeyEntry,
Certificate fingerprint (SHA1): 85:8F:69......
Run Code Online (Sandbox Code Playgroud)
我100%确定别名密码与密钥库密码相同,但它似乎不起作用.我已尝试在Android Studio中签署APK,jarsigner -keystore mykeystore -storepass mykeystorepassword app-debug.apk myalias
但响应总是:jarsigner: unable to recover key from keystore
.
我尝试将别名移动到新的密钥库文件,keytool -importkeystore -srckeystore mykeystore -destkeystore newkeystore -srcalias myalias
然后要求我输入新密钥库的新密码和旧密钥库的密码(两者都有效),只有在输入别名密码后才会出现异常:
Enter destination keystore password:
Re-enter new password:
Enter source keystore password:
Enter key password for <myalias>
keytool error: java.security.UnrecoverableKeyException: Cannot recover key
Run Code Online (Sandbox Code Playgroud)
经过一些谷歌搜索后,我发现对于某些人来说,密钥库在更新到另一个JDK版本或Android …
我只是试图使用java keytool,但我无法弄清楚如何设置主机名.
这就是我尝试的方式:
hostname[username:/this/is/a/path][640]% keytool -keystore server.keystore -genkeypair -alias hostname
Enter keystore password:
Re-enter new password:
What is your first and last name?
[Unknown]: hostname
What is the name of your organizational unit?
[Unknown]: hostname
What is the name of your organization?
[Unknown]: hostname
What is the name of your City or Locality?
[Unknown]: hostname
What is the name of your State or Province?
[Unknown]: hostname
What is the two-letter country code for this unit?
[Unknown]: CA
Is CN=hostname, OU=hostname, …
Run Code Online (Sandbox Code Playgroud) 我已经签署了我的应用程序,并将其导出到我桌面上名为app的文件夹中,该文件夹是我的应用程序本身和密钥库.如何找到可以复制到facebook开发者页面的密钥哈希.我有openssl安装,但似乎无法生成密钥哈希我已经在堆栈上尝试了许多其他线程,似乎没有任何帮助,谢谢
詹姆士
我在jre/lib/security下有一个密钥库文件cacerts,其中我使用import命令添加了一个Certicate.
我的密钥库中有超过50个证书.如何在密钥库中找到上次导入的证书的别名.我想删除我需要别名的最后添加的证书.请帮助.
我想更改我在密钥库中使用的密码,用于谷歌播放中已有的Android应用程序,我想在做之前了解一些事情:
1)如果我更改了密钥库密码,我是否可以继续使用相同的密钥库来存储上传的应用程序(我需要这样做,这就是我要问的原因)
2)更改我的别名密码会产生同样的后果吗?
3)我应该如何使用keytool?
我已将证书导入私有~/.keystore
文件:
keytool -list
Enter keystore password:
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 1 entry
mylyn-mantis, Jul 15, 2010, trustedCertEntry
Run Code Online (Sandbox Code Playgroud)
我正试图用它签一个罐子,但是我得到了一个'找不到证书链'的错误.
jarsigner -verbose /home/robert/file.jar mylyn-mantis
jarsigner: Certificate chain not found for: mylyn-mantis. mylyn-mantis must reference a valid KeyStore key entry containing a private key and corresponding public key certificate chain.
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?
Book-Pro:main vy$ keytool -exportcert -list -v \
> -alias androiddebugkey -keystore ~/.android/debug.keystore
keytool error: java.lang.Exception: Only one command is allowed: both
-exportcert and -list were specified.
Run Code Online (Sandbox Code Playgroud)
我正在尝试在MBP上为Android Firebase项目创建一个SHA1.我按照说明从Firebase控制台中提取命令... https://developers.google.com/android/guides/client-auth
keytool -exportcert -list -v\-alias androiddebugkey -keystore~/.android/debug.keystore
我收到一个错误.keytool error:java.lang.Exception:只允许一个命令:指定了-exportcert和-list.
我试过手写这个想法,也许浏览器有问题.我安装了新的JDK ......不知道这里出了什么问题.请帮助
keytool ×10
java ×6
android ×4
certificate ×2
jarsigner ×2
keystore ×2
ssl ×2
coldfusion ×1
facebook ×1
google-play ×1
hashtag ×1
https ×1
web-services ×1