java - 在 Java 中创建信任库
问题描述
供应商给了我一个 .jks 以通过 jms 连接到他们的 mq。我使用以下代码作为我的概念证明的模板。
使用 SSL/Keystore 连接到 Java 中的 Websphere MQ
密钥库的创建很好,但是当它尝试创建信任库时,它会加载一个新的 .jks 文件。我应该生成这个文件还是应该提供它,因为目前我无法创建它。
// instantiate a KeyStore with type JKS
KeyStore ks = KeyStore.getInstance("JKS");
// load the contents of the KeyStore
ks.load(new FileInputStream("/home/hudo/hugo.jks"), KSPW);
System.out.println("Number of keys on JKS: "
+ Integer.toString(ks.size()));
// Create a keystore object for the truststore
KeyStore trustStore = KeyStore.getInstance("JKS");
// Open our file and read the truststore (no password)
trustStore.load(new FileInputStream("/home/xwgztu2/xwgztu2.jks"), null);
谢谢
解决方案
这个答案有很多假设(因为这个问题没有提供太多信息),但我也假设它伴随着丰富的经验。
要创建 SSL 连接,服务器必须具有密钥对(私钥、公钥和绑定到公钥的证书),并且客户端必须信任证书(或其颁发者)。还有一个双向 SSL 选项(也称为客户端身份验证 ssl),其中客户端需要自己的密钥对和证书,而服务器需要信任客户端的证书。
Truststore 它会加载一个新的 .jks 文件。我应该生成这个文件还是应该提供它,因为目前我无法创建它。
信任库应有效地包含服务器证书的颁发者证书(如果使用自签名证书,则为同一证书)。
您可以通过连接到服务来获取证书
openssl s_client -connect host:port -showcerts
然后将返回的证书导入新的密钥库(使用例如keytool -importcert
命令)
keytool -importcert -keystore mytruststore.jks -alias mqserver -file servercert.pem
如果服务器返回给您多个证书(证书链),您可以将它们全部导入。
如果您不能这样做,只需要求服务提供商(部署 MQ 的人)为您提供证书或信任库。
推荐阅读
- c - 计算和打印矩阵的对角线之和
- javascript - 如何在 Angular 中使用 addEventListener 和 postMessage?
- php - 如何将日期、时间和值从单选按钮放入数据库
- c# - 逐个像素地动态绘制和显示,有一些延迟
- npm - 如何从 Nexus oss 代理获取依赖于 github 项目的 npm 包
- django - Django 测试 - 发送包含整数的数组数组
- android - 在 android 中使用改造登录
- json - 我如何在 nunjuncks 中乘以数据?
- swift - 为什么不能在swift中将可变参数标记为inout?
- vue.js - Vue Js 2 / Vue-CLI 3 / 托管时显示空白页