jjzjj

java - 将公共(public)证书导入 keystore 时出错

coder 2024-03-07 原文

我有来自 CA 的公共(public)证书。我想使用此证书创建 Java SSL 连接。我提到了How can I use different certificates on specific connections?Java SSL connection with self-signed certificate without copying complete keystore to client .由此我了解到我需要将证书导入 keystore 。但是我还没有从 CA 收到任何 keystore 。我创建了一个 keystore 并尝试将公共(public)证书导入其中。但随后出现以下错误:

keytool 错误:java.lang.Exception:回复中的公钥与 keystore 不匹配

我需要来自 CA 的 keystore 还是我做错了什么?


用于创建 keystore 的命令:

keytool -genkey -alias tomcat -keyalg RSA -keystore keystore.jks

用于导入证书的命令:

keytool -import -v -alias tomcat -file signed-cert.pem -keystore keystore.jks

最佳答案

我认为您没有正确遵循证书登录流程。查看此讨论 https://forums.oracle.com/thread/1533940按照以下步骤正确实现它们:

  1. 创建 keystore keytool -genkey -keyalg RSA -keystore test.keystore -validity 360 (这会生成一个 keystore 和一个别名为“mykey”的 key (DC))

  2. 创建证书签名请求 (CSR)。 keytool -certreq -keyalg RSA -file test.csr -keystore test.keystore (这会生成一个文本 CSR 文件)

  3. 已生成签名证书:http://www.instantssl.com/ssl-certificate-support/csr_generation/ssl-certificate-index.html

  4. 导入的签名证书 (如果从第 3 步粘贴签名证书,请注意 CRLF) keytool -import -alias newkey -file <signed cert file> -keystore test.keystore (?重要的是这有一个不同于步骤 1 的别名(默认为“mykey”)?

  5. 导出公钥供客户端使用 keytool -export -alias mykey -file test.publickey -keystore test.keystore

在服务器系统上

  1. 创建信任库 keytool -genkey -keyalg RSA -keystore test.truststore -validity 360 (这会生成一个 keystore 和一个别名为“mykey”的 key (DC))

  2. 导入公钥 - 用于通过客户端测试 SSL SOAP 服务 keytool -import -file test.publickey -keystore test.truststore

问题是让步骤 1 和 6 中的别名默认为“mykey”。 当我将第 6 步更改为: keytool -genkey -alias testAlias -keyalg RSA -keystore test.truststore -validity 360

您可以使用上面的第 7 步导入(尽管我确实在第 7 步中添加了“-alias apublickey”)。 这对我有用。

关于java - 将公共(public)证书导入 keystore 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17083119/

有关java - 将公共(public)证书导入 keystore 时出错的更多相关文章

  1. ruby - ECONNRESET (Whois::ConnectionError) - 尝试在 Ruby 中查询 Whois 时出错 - 2

    我正在用Ruby编写一个简单的程序来检查域列表是否被占用。基本上它循环遍历列表,并使用以下函数进行检查。require'rubygems'require'whois'defcheck_domain(domain)c=Whois::Client.newc.query("google.com").available?end程序不断出错(即使我在google.com中进行硬编码),并打印以下消息。鉴于该程序非常简单,我已经没有什么想法了-有什么建议吗?/Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/base.

  2. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

  3. java - 等价于 Java 中的 Ruby Hash - 2

    我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/

  4. 使用 ACL 调用 upload_file 时出现 Ruby S3 "Access Denied"错误 - 2

    我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file

  5. java - 从 JRuby 调用 Java 类的问题 - 2

    我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www

  6. ruby - Sinatra set cache_control to static files in public folder编译错误 - 2

    我不知道为什么,但是当我设置这个设置时它无法编译设置:static_cache_control,[:public,:max_age=>300]这是我得到的syntaxerror,unexpectedtASSOC,expecting']'(SyntaxError)set:static_cache_control,[:public,:max_age=>300]^我只想将“过期”header设置为css、javaascript和图像文件。谢谢。 最佳答案 我猜您使用的是Ruby1.8.7。Sinatra文档中显示的语法似乎是在Ruby1.

  7. java - 我的模型类或其他类中应该有逻辑吗 - 2

    我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我

  8. ruby - 检查是否通过 require 执行或导入了 Ruby 程序 - 2

    如何检查Ruby文件是否是通过“require”或“load”导入的,而不是简单地从命令行执行的?例如:foo.rb的内容:puts"Hello"bar.rb的内容require'foo'输出:$./foo.rbHello$./bar.rbHello基本上,我想调用bar.rb以不执行puts调用。 最佳答案 将foo.rb改为:if__FILE__==$0puts"Hello"end检查__FILE__-当前ruby​​文件的名称-与$0-正在运行的脚本的名称。 关于ruby-检查是否

  9. java - 什么相当于 ruby​​ 的 rack 或 python 的 Java wsgi? - 2

    什么是ruby​​的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht

  10. 区块链之加解密算法&数字证书 - 2

    目录一.加解密算法数字签名对称加密DES(DataEncryptionStandard)3DES(TripleDES)AES(AdvancedEncryptionStandard)RSA加密法DSA(DigitalSignatureAlgorithm)ECC(EllipticCurvesCryptography)非对称加密签名与加密过程非对称加密的应用对称加密与非对称加密的结合二.数字证书图解一.加解密算法加密简单而言就是通过一种算法将明文信息转换成密文信息,信息的的接收方能够通过密钥对密文信息进行解密获得明文信息的过程。根据加解密的密钥是否相同,算法可以分为对称加密、非对称加密、对称加密和非

随机推荐