我将我的第一个应用程序上传到市场,现在我想升级一个新版本,但是当我升级我的应用程序时,我遇到了这个异常."必须使用与先前版本相同的证书对apk进行签名." 我丢失了证书密钥库,在这种情况下我该怎么办?取消发布我的应用并重命名包?我可以使用其他密钥库上传其他应用程序吗?
如何在java sun keytool中创建.bks密钥库,我该怎么办?
C:\Program Files\Java\jdk1.6.0\jre\bin>keytool -genkey -alias server3private -ke
ystore server3.private -storetype BKS -keyalg rsa -dname "CN=Your Name, OU=Your
Organizational Unit, O=Your Organization, L=Your City, S=Your State, C=Your Coun
try" -storepass tahirpw -keypass tahirpw
Run Code Online (Sandbox Code Playgroud)
它给了我错误
keytool错误:java.security.KeyStoreException:找不到BKS
我做了以下步骤,但它抛出异常:
1.我在Windows Server 2003上安装了openam 10.0.0.
2.在同一台Windows服务器计算机上使用ssl配置tomcat.
3.配置正确,可以使用https访问openam网址.
4.安装openam客户端sdk在另一台机器上,这是ubuntu机器,从那个ubuntu机器我试图登录到openam服务器使用
AuthContext lc = new AuthContext("/","https://server.ensarm.com:8443/openam/namingservice");
AuthContext.IndexType indexType = AuthContext.IndexType.MODULE_INSTANCE;
lc.login(indexType, "DataStore");
return lc;
Run Code Online (Sandbox Code Playgroud)
但我得到以下例外:
ERROR: Naming service connection failed for https://server.ensarm.com:8443/openam/namingservice
com.iplanet.services.comm.client.SendRequestException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Run Code Online (Sandbox Code Playgroud)
我不明白可能是什么问题.由于我的java密钥库(ssl配置需要)是在Windows服务器机器上,我在ubuntu机器上没有密钥库,
要么
需要将密钥库导入到ubuntu机器中.请任何人帮我摆脱这个.
我已经完成了一个Android应用程序的开发,并决定用密钥库签名.我对此过程没有任何问题,但我确实对密钥库的密码有疑问.我正在从Keystore selection窗口创建密钥库,在窗口,我选择了create new keystore.在我按下后,在Key Creation窗口下,我需要键入密钥库的详细信息; 别名,有效期,密码等
我想问的是,Key Creation窗口中的密码字段和Keystore selection窗口之间有什么区别吗?我尝试为两者设置相同的密码,它对我来说很好.我可以选择输入不同的密码吗?它是否会影响该特定密钥库的任何内容?希望任何人都可以为我提供这方面的见解.
我真的很困惑为什么编码值不同
这是完整的代码
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.security.Key;
import java.security.KeyStore;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import org.bouncycastle.util.encoders.Base64;
public class KeyStoreDemo {
private static final String KEY_STORE_TYPE = "JCEKS";
private static final String KEY_STORE_NAME = "sampleKeyStore.store";
private static final String KEY_STORE_PASSWORD = "letmein";
public static void main(String[] args) throws Exception {
File storeFile = new File(KEY_STORE_NAME);
storeFile.createNewFile();
//Create a keystore
createKeyStore(KEY_STORE_TYPE, storeFile,KEY_STORE_PASSWORD);
//Generate a key and store it in keystore
KeyStore keyStore = loadKeyStore(KEY_STORE_TYPE,storeFile,KEY_STORE_PASSWORD);
// Get the KeyGenerator …Run Code Online (Sandbox Code Playgroud) 我有一个Java密钥库,我为每个客户的子域存储证书.我打算使用服务器别名来区分密钥存储区中的多个客户,如此处所示.Play框架1.2.7使用Netty的SslHandler来支持服务器端的SSL.我尝试实现使用此解决方案的自定义SslHttpServerContextFactory .
import play.Play;
import javax.net.ssl.*;
import java.io.FileInputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.security.KeyStore;
import java.security.Principal;
import java.security.PrivateKey;
import java.security.Security;
import java.security.cert.X509Certificate;
import java.util.Properties;
public class CustomSslHttpServerContextFactory {
private static final String PROTOCOL = "SSL";
private static final SSLContext SERVER_CONTEXT;
static {
String algorithm = Security.getProperty("ssl.KeyManagerFactory.algorithm");
if (algorithm == null) {
algorithm = "SunX509";
}
SSLContext serverContext = null;
KeyStore ks = null;
try {
final Properties p = Play.configuration;
// Try to load it from …Run Code Online (Sandbox Code Playgroud) 我必须实现具有以下场景的AES加密/解密.
App1和App2有2个应用程序在不同的服务器上运行.App1将加密(使用AES加密)一些数据并将其提供给App2.App2将使用AES解密解密相同的数据.需要与App2共享密钥以进行解密.那么,如何与App2共享密钥?在这种情况下我们可以使用java密钥库吗?
我正在创建一个解锁应用,可以删除广告并解锁几个应用中的高级功能.我的计划是只调用PackageManager并验证已安装解锁应用程序,如果是,请验证签名以确保它实际上是我的应用程序.我在这里听到这个答案:检测是否从Android Market下载了应用程序
但是,我想我对我正在验证的签名有点困惑......这是我的公钥,对吗?如果是这样,我如何从现有的应用程序或密钥库中提取它?
我在Android Studio中创建了一个新的应用程序,一切都很顺利,我创建了一个签名的apk,但我在Play商店发布了一个旧应用程序,我设法找到了那个旧应用程序的key.keystore,我最初在Eclipse中做了两个几年前,所以在Keystore Explorer中打开我的旧apk后,我能够记住我的旧商店密码,别名和密码,所以我回到Android Studio,点击Generate New Signed apk,我选择了我的旧密钥库路径,填写在信息中(存储密码,别名,密钥密码,它让我生成带有旧key.keystore的新签名apk,所以我假设我实际上已经使用我的旧Eclipse key.keystore或它签署了新的AS应用程序不会让我生成一个签名的apk吗?或者在模拟器中运行它,直到我输入正确的信息.
现在我遇到的下一个问题是重命名包,我需要做的是将新的app/package重命名为与旧app/package相同的名称(com.name.radio)我读到你在build.gradle .....当我在AS中创建我的新应用程序时,我能够首先在java下重命名3个文件夹而没有任何问题(到name.ie.radio)这样做我选择了我要重命名的文件夹,单击显示选项菜单,取消选中Compact Empty Middle Packages,右键单击我的文件夹并选择Refactor> Rename> Rename Package,然后我必须在build.gradle中更正它,第一次正常工作.
现在我想重新命名我的新应用程序/包,与我的旧应用程序(com.name.radio)同名,所以我尝试将新包名设置为com,但它不允许我,说该文件已经存在.http://i.stack.imgur.com/cNgA5.png
我应该删除以下位置的com文件夹:\ app\build\generated\source\r\release尝试在build.gradle中重命名它是没有意义的吗?
有人在这里帮助我,这就像每晚的猜测.我只是想发布我的旧应用程序的更新,而不必发布一个新的应用程序.
我正在按照本教程创建基于回合制的多人游戏:https://developers.google.com/games/services/console/enabling
在"指定客户端ID设置"部分下,他们说要运行:
keytool -list -keystore [path-to-debug-keystore]
这很好,因为他们也不在话下调试密钥库的位置:"在Windows中,调试密钥库可以位于C:\用户[用户名] .android\debug.keystore"
他们还说要运行这个命令:
keytool -list -keystore [path-to-production-keystore]
但他们没有提到发布/生产密钥库的位置.
...它在哪里?