我应该创建一个BKS密钥库并存储一个私有Application密钥,该密钥是一个48字符长的字符串.我还有一个JCEKS密钥库,其中已包含此密钥值.如果我尝试使用portecle工具转换为BKS类型密钥库,则Key条目将丢失.
我是JCE的新手.有人可以指导我在Keystore中导入此密钥需要做些什么吗?
谢谢.
开发人员使用他的个人密钥库签署了一个应用程序,但应该是该公司的密钥库.
是否可以立即使用公司的密钥库更新市场中的应用程序,并且仍然可以简化用户的更新?这有什么后果吗?
洞察力赞赏
我想在我的Android应用程序中加载密钥库.我已将key(truststore.bks)复制到该文件夹中res/raw.来自Android的SDK生成带有trustsotre条目的R.java.在App中尝试使用:
Resources.getSystem().openRawResource(R.raw.truststore);
但我总是例外:
android.content.res.Resources$NotFoundException: Resource ID #0x7f040000
我查看apk文件,看到truststore.bks文件在文件夹中res/raw/.
我的错误是什么?
我是Android开发的新手.现在我在Java Eclipse中面临这个问题,
Error generating final archive: Debug Certificate expired on 1/11/12 12:52 PM Unknown Android Packaging Problem
Run Code Online (Sandbox Code Playgroud)
我在谷歌搜索,并从Eclipse Android插件中的这个链接"调试证书过期"错误找到了我的问题的答案.他们给出了我的问题的答案.我正在使用Eclipse Mac OS X.他们给的解决方案,删除debug.key从Preferences - Android - Build - Default debug keystore.我找到了~/.android/debug.keystore从该位置,我试图删除debug.keystore Default debug keystore:但是,我无法从该位置删除它,因为它不可编辑.任何人都可以解决我的问题吗?提前致谢.
我正在尝试使用自己的SSL客户端连接到我自己的SSL服务器,但是我收到以下错误:
javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
at sun.security.ssl.SSLSessionImpl.getPeerCertificateChain(SSLSessionImpl.java:420)
at server.run(Server.java:70)
at server.main(Server.java:22)
我在stackoverflow上搜索了同样的问题,但我只能找到在Apache或其他HTTPS"系统"中使用它的人.
这是我的服务器代码:
/* Server SSL */
import javax.net.ssl.*;
import java.io.*;
import java.net.InetAddress;
import java.security.KeyStore;
//import java.security.cert.X509Certificate;
import java.util.Date;
import javax.security.cert.X509Certificate;
class server {
ObjectOutputStream out;
ObjectInputStream in;
public static void main(String[] args) {
new server().run();
}
void run() {
Date date = new Date();
try {
// Security test (to avoid starting from the command line)c
char[] passphrase = "password".toCharArray();
KeyStore keystore = KeyStore.getInstance("JKS");
keystore.load(new FileInputStream("/home/ME/CERT/keystore"), passphrase);
KeyManagerFactory kmf …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用我的调试密钥库,因此我可以获取地图视图的密钥,但是当我尝试使用它时,它会出现这个
Illegal option: B:\Fabian\.android\debug.keystore
keytool -list [OPTION]...
Run Code Online (Sandbox Code Playgroud)
我喜欢这个:
keytool -v -list -keystore "C:\Users\MyPcName.android\debug.keystore"
Run Code Online (Sandbox Code Playgroud)
当我尝试使用时:
keytool -list -alias androiddebugkey \ -keystore <path_to_debug_keystore>.keystore \ -storepass android -keypass android
Run Code Online (Sandbox Code Playgroud)
它想出来了
C:\Program Files\Java\jdk1.7.0_04\bin>keytool -list -alias androiddebugkey \ -k
ystore B:\Fabian\.android\.keystore \ -storepass android -keypass android
Illegal option: \
keytool -list [OPTION]...
Lists entries in a keystore
Options:
-rfc output in RFC style
-alias <alias> alias name of the entry to process
-keystore <keystore> keystore name
-storepass <arg> keystore password
-storetype <storetype> keystore type
-providername …Run Code Online (Sandbox Code Playgroud) 我正在尝试将证书导入到位于tomcat / conf目录中的keystore.jks中。过去,我已经使用命令提示符完成过多次。我通常只是cd到tomcat / conf目录,然后输入以下行:
“ C:\ Program Files(x86)\ Java \ jre7 \ bin \ keytool.exe” -import -alias“ alias CA-30” -file cert.cer -keystore keystore.jks
但是,他们最近阻止了我们使用命令提示符,因此我在Powershell中进行了此操作,这是我以前从未使用过的。这是我得到的错误:
您必须在'-'运算符的右侧提供一个值表达式
它指向“导入”之前的第一个“-”。
有人可以在Powershell中告诉我此语句的正确语法吗?
我可以使用keytool命令将Java信任库(仅包含证书,没有私钥的JKS文件)导出到p12文件:
keytool -importkeystore -srckeystore truststore.jks -destkeystore truststore.p12 -deststoretype PKCS12
Run Code Online (Sandbox Code Playgroud)
但是,我似乎无法弄清楚如何使用“ openssl pkcs12”命令创建相同的文件。它允许您传递证书,但是我尝试过的每个选项都要求用户传递私钥。
我一直在尝试使用使用Glassfish的应用程序来帮助我们的一个站点时收到错误消息.登录应用程序时,会引发以下错误:
CommunicationException:发出HTTP请求时发生错误.这可能是由于服务器证书不是configured properly with HTTP.SYS in the HTTPS case. This could also be caused by a mismatch of the客户端和服务器之间的安全绑定.
在Server.log中,显示以下内容:
0400 | SEVERE | glassfish3.1 | com.sun.grizzly.config.GrizzlyServiceListener | _ThreadID = 287; _TreadName = Thread-1; |无法加载带路径C的密钥库类型JKS:\ glassfishv3\glassfish\domains\domain1/config/keystore.jks由于Keystore被篡改,或密码错误java.io.IOException:Keystore被篡改,或密码不正确
该网站只有在更改glassfish主密码时才会遇到此问题.当主密码保留为默认设置时,一切正常.默认主密码为"changeit".
此外,该站点还生成并导入用于glassfish的证书.以下是为了生成证书和更改密码而按顺序执行的步骤:
停止Glassfish服务.
打开MMC.MSC:操作 - >所有任务 - >申请新证书
从"证书注册"向导中,选择"计算机类型"证书.单击"属性"按钮并配置证书.它获得友好名称"s1as"和密钥大小为2048的可导出私钥.私钥导出为pfx文件,证书导出为cer文件.这些文件保存在glassfish配置文件夹中.如果需要,可以使用此过程的详细信
DOS提示符已打开,此命令在glassfish配置文件夹中运行:keytool -delete -alias s1as -keystore keystore.jks -storepass changeit
运行以下命令:keytool -import -v -trustcacerts -alias -file root.cer -keystore cacerts.jks -storepass changeit
回答"Y"信任证书.
输入密码,然后在成功导入1个条目后显示成功消息.
我们有一个有效的Apache mod_ssl配置.我想为Undertow启用HTTPS支持,以便它同时监听http和https,从而避免了对Apache的需求.
我查看了Undertow的javadocs.Undertow.Builder类有两个带有以下签名的addHttpsListener方法:
public Builder addHttpsListener(int port, String host,
KeyManager[] keyManagers, TrustManager[] trustManagers);
public Builder addHttpsListener(int port, String host,
SSLContext sslContext) {
Run Code Online (Sandbox Code Playgroud)
所以我似乎可以在使用Builder API引导Undertow时使用这些,例如
Undertow server = Undertow.builder()
.addHttpsListener(8443, "localhost", sslContext)
.build();
Run Code Online (Sandbox Code Playgroud)
我不确定如何创建SSLContext变量,或者如何配置KeyManagers和TrustManagers.拥有mod_ssl正在使用的证书文件,如何继续为Undertow启用HTTPS?
更新:
根据hwellmann的回答,我重用了SslContextFactory.createSslContext()方法.在此之前,我必须将我的公钥/私钥对转换为PKCS12格式并将其导入Java密钥库.
提供SSL转换转换/导入命令(取自此处和此处),希望这对任何人都有用:
# Convert to PKCS12
$ openssl pkcs12 -export -out output_cert.pfx -inkey input_cert.key -in input_cert.crt -certfile intermediate.crt
# Import into Java keystore
$ keytool -v -importkeystore -srckeystore output_cert.pfx -srcstoretype PKCS12 -destkeystore output_store.jks -deststoretype JKS
Run Code Online (Sandbox Code Playgroud)