为什么 Java 的 keytool 没有显示使用 openssl 创建的 PKCS12 信任存储的条目?

2024-04-20

我不确定为什么 Javakeytool认为我的.p12密钥库为空。

如果我创建一个新的自签名证书并将其放入truststore.p12pkcs12 密钥库openssl,像这样:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -subj "/C=US/ST=Oregon/L=Portland/O=Company Name/OU=Org/CN=www.example.com" -sha256

# This prompts for a password, I used 'changeit'
openssl pkcs12 -export -out truststore.p12 -nokeys -in cert.pem

然后查看内容truststore.p12 with:

openssl pkcs12 -in truststore.p12 -nodes

MAC verified OK
Bag Attributes: <No Attributes>
subject=/C=US/ST=Oregon/L=Portland/O=Company Name/OU=Org/CN=www.example.com
issuer=/C=US/ST=Oregon/L=Portland/O=Company Name/OU=Org/CN=www.example.com
-----BEGIN CERTIFICATE-----
MIIFszCCA5ugAwIBAgIJAPddgoNwHemLMA0GCSqGSIb3DQEBCwUAMHAxCzAJBgNV
BAYTAlVTMQ8wDQYDVQQIDAZPcmVnb24xETAPBgNVBAcMCFBvcnRsYW5kMRUwEwYD
VQQKDAxDb21wYW55IE5hbWUxDDAKBgNVBAsMA09yZzEYMBYGA1UEAwwPd3d3LmV4
YW1wbGUuY29tMB4XDTIxMDgyNDIyMzcwN1oXDTIyMDgyNDIyMzcwN1owcDELMAkG
A1UEBhMCVVMxDzANBgNVBAgMBk9yZWdvbjERMA8GA1UEBwwIUG9ydGxhbmQxFTAT
BgNVBAoMDENvbXBhbnkgTmFtZTEMMAoGA1UECwwDT3JnMRgwFgYDVQQDDA93d3cu
ZXhhbXBsZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCmx0XY
pkxMIPgq1GwgpBacHkKHz5R5tQD+uLBzKPa/mwHSwX2MQiHdnq5WIf3omx9AdsF1
gV56iNaHEVPp3WcW9BGkG3UrRuUBuWgGRuy2rEVpUQOFR+WziPbzG8Sq9ot9qQBP
d8sLLwfSj1JlN7sTLkco9mdvxvhYmPp4874qz2Okk3Madh3M94gWTPRdEmqcHDP8
cdETCmJOAw+NfLO962adssUz+ppRWFbG2+w44Xn2fkbgyfZ06CFz6WLfstVrEcvD
j82am0Ysp5+I9zzicvcCrchu5gPwWXS0zKDQsrsrgOXHvYhzOkrD+i3+89BWFyh0
DxGG8uOnnd8nWWiLD/nrQzQLqqXK+i/CvVS+7qr8GBWNgOC+x47rGp33+Oq50EFj
h2kj0gZC5zhhbtA+Y/magcSoFcH7cCj9k9RKeyZDJSHvlIMvkzMveyPAs2upApwx
lEBIq+0/M1/m+6eEbFz5ZxLa+zR21gdIjVo6PejzowzS6GB5yJSwXMvE/WZsb1c5
Ae5AMvssIE85A3NONm73lqV6HiBuQW3K92id6PiLLP+nMmDCVP3KneO+K5exPF53
KwIkC9YtThPsKxQywOztql08k9zVYKf86y0TfqxnHezGCpm9ZQb+f0Adj/NVw0yT
brXPCLCUpbIa1VlP2cYSJ5ZaNRGcE5GC5kDd4wIDAQABo1AwTjAdBgNVHQ4EFgQU
Ll1H2X+k+3uUe7kXEpGx1D/NY30wHwYDVR0jBBgwFoAULl1H2X+k+3uUe7kXEpGx
1D/NY30wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEApmlL3QxP0nD3
nVcphCRfAzjZW0UCrJXz7ldGqfTatR4gwSauU04mazvo5OBvnr6QYEtY8JhlDciX
cTdFYsR25Y52f6XvBgh/EHQ8l1PRJ4SlKcQU1JJxTW2sWRexPVqrCcLo3h18O67V
AZnIWLSlPth1nhbYoqWJJPgWqjDp0DIazIFwZSkK7BhJkXFlPhEsGmw0SeDuqVye
Tm6AcnW1ybrScw6aZgMlsARw80OVxvrHLyXW9kHPeInku5OvsCdBQNj8yR6uQykl
SN8yyBnFO6LVdLPTHrdyAC6VbJwXdajXSUEwx5y6so+9thIHx2Vk7OoHGAl62rzf
B6td3GPVVJpO/7Fm16IHq6V3hQznhiVj2wBqOzfApnxotJsWj80G7VofSPoD705F
iimNwHuvE7oJeYc4K/Uk3YJIkrxUoUkRp7z4pjvKUN+FEEB6gdquBTm9FJaTStNf
BRyzUiu3TMkZPWzDm8tJ79zhFj+BbOlbbivZGV/Bqy2j5y1Zc6XThWGGwRehgGmJ
qPuGAWvZ5b7N4dvArU58B+28F5F1Ka73nr29P9lKV1EOSBMs7vBjR9L1DBpvr/wl
sFU1LhITEJcOPAjHzVh/2ubH2UOHEDH+WH/QETS7oFORoTTZ5+bew2cfsIYniL3/
sKd4THRpAbJtWRAQOQceRDqdAUx6ZPA=
-----END CERTIFICATE-----

一切看起来都不错。但是当我尝试使用 keytool 查看同一文件时:

keytool -list -v -keystore truststore.p12 -storepass changeit -storetype PKCS12

我从keytool:

Keystore type: PKCS12
Keystore provider: SUN

Your keystore contains 0 entries

Why?

对于上下文,我正在生成自己的自签名 CA 并用它颁发客户端和服务器证书。我有一些 Java 应用程序需要使用我的 CA 信任链(通过-Djavax.net.ssl.trustStore命令行参数,但失败,因为我怀疑 keytool 认为它是空的)。

Now, keytool将会呈现privateKeyEntry如果我包含证书相应的私钥。但是,我正在创建一个信任存储(即 CA 链),并且它不应该包含任何私钥;仅公共证书。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Java 的 keytool 没有显示使用 openssl 创建的 PKCS12 信任存储的条目? 的相关文章

随机推荐

  • 创建后缀号码球拍

    我正在尝试在 Racket 中试验我可以做的事情 并且我想在数字后加上字母 对于这个例子 我只想代表10000 as 10K and 1000000 as 1M 有没有办法 用宏或其他方式 我可以扩展1M to 1 1000000 或者有什
  • 如何模块化(大型)Java 应用程序?

    我手头有一个相当大的 几个 MLOC 应用程序 我想将其拆分为更易于维护的单独部分 目前该产品由大约 40 个 Eclipse 项目组成 其中许多项目具有相互依赖性 仅此一点就使得连续构建系统变得不可行 因为每次签入都必须进行大量重建 有没
  • 如何允许函数返回类型未定义

    我认为typescript有很多不明显的地方 使得它不严格也不正确 我想使用 undefined 作为函数返回类型 因为实际上它是未定义的 不是 void 或其他虚构类型 但是当我写下这个 function myFunction undef
  • Java 7 keytool 椭圆曲线加密

    我正在尝试使用带有 keyalg ECC 的 keytool 创建密钥库 这应该是可能的 根据Oracle http www oracle com technetwork java javase jdk7 relnotes 418459 h
  • UIImagePickerController(使用相机作为源)在 iPad2 上自动旋转,我该如何停止它?

    我正在尝试编写一个具有某些相机功能的应用程序 并使用覆盖视图用图像来装饰它 这就是我实现该应用程序的方式 我将 UIImagePickerController 用于用户相机接收的内容 并将 UIImageView 作为子视图添加到camer
  • 如何测试点是否位于其表面由点云定义的 3D 形状内?

    我有一个点的集合 这些点描述了一个大致呈球形的形状的表面 并且我需要一种方法来确定是否有任何其他给定点位于该形状内 我之前一直将形状 近似为精确的球体 但事实证明这太不准确 我需要一种更准确的方法 简单性和速度比完全精确性更有利 一个好的近
  • Ant 任务:使用排除参数

    得到以下 build xml 字符串
  • Spring 4.0.6 与quartz 1.8.6:setCronExpression 方法未公开给 CronTriggerBean 类

    我使用的是 spring 版本 4 0 6 和quartz 版本 1 8 6 问题是 当我尝试使用配置类而不是 xml 带有 Configuration 注释 时 我无法使用该方法设置 cron 表达式 CronTriggerBean ct
  • 如何获取位类型列的计数?

    我正在尝试使用SEDE https data stackexchange com 确定总共授予了多少个基于标签的徽章 我的典型策略是总结 select sum TagBased from Badges 不幸的是 自从TagBased是一个位
  • 在 table() 结果中包含零计数级别

    我有一个向量 y 我使用以下方法计算不同的值table y lt c 0 0 1 3 4 4 table y y 0 1 3 4 2 1 1 2 但是 我还希望结果包含零个 2 和零个 5 的事实 我可以用吗table 为了这 期望的结果
  • 如何在 Meteor 中将 forbidClientAccountCreation 设置为 false?

    Meteor 中的默认设置不允许从客户端创建帐户 这在许多应用程序中出于安全目的是有意义的 但我正在构建一个博客 需要允许用户创建一个帐户 以便他们可以发表评论 github stackoverflow 和各种教程上的典型响应似乎建议将以下
  • 错误 403:向 Cloud PubSub 发送测试消息时出错:用户无权执行此操作

    我想设置推送通知手表 但收到错误响应 我需要什么授权 Request Google API client getClient POST request ch curl init https www googleapis com gmail
  • 更新actionButton的标签为闪亮

    我知道类似的question https stackoverflow com questions 27326929 how to update button labels in r shiny已经回答了 但是该解决方案在字符串输入时创建一个
  • 打字稿感叹号括号[重复]

    这个问题在这里已经有答案了 我在以下位置看到过这个声明有角度的网站 https angular io api common AsyncPipe this resolve hi there 我不知道是什么 可能意味着在这种情况下 我遇到过非空
  • 在Python中删除小数点后的尾随零

    我正在使用Python 2 7 我需要更换 0 字符串在末尾 比如说 a 2 50 a a replace 0 我得到 a 2 5 我对这个结果很满意 现在a 200 a a replace 0 我得到 a 2 这个输出是按照我同意的设计的
  • 如何从文本文件中逐行读取并按字符分割行? [复制]

    这个问题在这里已经有答案了 我正在写一个 Bash 脚本 我的问题是我想从文本文件中逐行读取并按字符分割行 我想要纯 Bash 代码 假设我在文本文件中有这个 格式 姓名 用户名 代码 John Doe johnDoe 534092 Joh
  • 识别并解决 Oracle ITL 死锁

    我有一个 Oracle DB 包 它经常导致我认为是 ITL 感兴趣的事务列表 死锁 跟踪文件的相关部分如下 Deadlock graph Blocker s Waiter s Resource Name process session h
  • i18next 翻译外部组件

    我是 i18next 的新手 正在尝试本地化 翻译网站 一切都适用于组件内部的翻译 但在外部 意味着带有 i18n t 的 json 文件 它不会检索所需的信息 而是显示默认值 我正在使用 create react app 它是文件夹引用的
  • Qt 样式表:无法使用 ID 选择器

    我正在学习使用 Qt 样式表向我的应用程序添加不同的样式 我在网上查看了 Qt 文档 其中说你可以使用名为ID Selector可以将主题应用于某些对象 这就是我实现此功能的方式 QPushButton button color red 但
  • 为什么 Java 的 keytool 没有显示使用 openssl 创建的 PKCS12 信任存储的条目?

    我不确定为什么 Javakeytool认为我的 p12密钥库为空 如果我创建一个新的自签名证书并将其放入truststore p12pkcs12 密钥库openssl 像这样 openssl req x509 newkey rsa 4096