如何将 .crt 文件添加到密钥库和信任库

2023-12-22

我有一个 .crt 文件,我想使用 java 导入到密钥库和信任库(首先创建密钥库和信任库,然后导入)。

下面是我正在使用的代码:

import org.glassfish.tyrus.client.ClientManager;
import org.glassfish.tyrus.client.ClientProperties;
import org.glassfish.tyrus.client.SslContextConfigurator;
import org.glassfish.tyrus.client.SslEngineConfigurator;

@ClientEndpoint
public class test {

    private static CountDownLatch latch;

    private Logger logger = Logger.getLogger(this.getClass().getName());

    @OnOpen
    public void onOpen(Session session) {
        logger.info("Connected ... " + session.getId());
        try {
            session.getBasicRemote().sendText("start");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    @OnMessage
    public String onMessage(String message, Session session) {
        BufferedReader bufferRead = new BufferedReader(new InputStreamReader(System.in));
        try {
            logger.info("Received ...." + message);
            String userInput = bufferRead.readLine();
            return userInput;
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    @OnClose
    public void onClose(Session session, CloseReason closeReason) {
        logger.info(String.format("Session %s close because of %s", session.getId(), closeReason));
    }

    public static void main(String[] args) {
        latch = new CountDownLatch(1);
        ClientManager client = ClientManager.createClient();

        try {
            client.connectToServer(test.class, new URI("wss://x.x.x.x:8085"));
            latch.await();

        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

}

我正在使用 tyrus websocket 客户端,因此我需要添加以下属性:

    final ClientManager client = ClientManager.createClient();
    System.getProperties().put("javax.net.debug", "all");
    System.getProperties().put(SSLContextConfigurator.KEY_STORE_FILE, "...");
    System.getProperties().put(SSLContextConfigurator.TRUST_STORE_FILE, "...");
    System.getProperties().put(SSLContextConfigurator.KEY_STORE_PASSWORD, "...");
    System.getProperties().put(SSLContextConfigurator.TRUST_STORE_PASSWORD, "...");
    final SSLContextConfigurator defaultConfig = new SSLContextConfigurator();

    defaultConfig.retrieve(System.getProperties());
        // or setup SSLContextConfigurator using its API.

    SSLEngineConfigurator sslEngineConfigurator =
        new SSLEngineConfigurator(defaultConfig, true, false, false);
    client.getProperties().put(ClientProperties.SSL_ENGINE_CONFIGURATOR,
        sslEngineConfigurator);
    client.connectToServer(... , ClientEndpointConfig.Builder.create().build(),
        new URI("wss://localhost:8181/sample-echo/echo"));
    }

那么,如何创建密钥库和信任库并将 .crt 导入其中。


我通过直接将 .crt 文件导入到 java keystore 解决了上述问题:

用于导入到 java 密钥库

keytool -trustcacerts -keystore "/jdk/jre/lib/security/cacerts" -storepass changeit -importcert -alias testalias -file "/opt/ssl/test.crt"

通过使用上述命令,将验证服务器证书并实现连接,但如果您想创建新的密钥库并将 .crt 导入其中,则意味着使用以下命令,它将创建 .jks 类型的密钥库。

用于创建密钥库并导入 .crt

keytool -import -alias testalias -file test.crt -keypass keypass -keystore test.jks -storepass test@123

here

keystore password : test@123
keypass : keypass

由于某些代码将进行验证,并且如果您使用的是 wss/https,它将要求密钥库/信任库配置,那么您可以使用步骤 2 中提到的上述配置(创建密钥库并导入 .crt)。否则,第 1 步(导入 java 密钥库)就足够了。

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

如何将 .crt 文件添加到密钥库和信任库 的相关文章

  • Twitter4j - 超出速率限制

    我想让追随者使用getFollowersIds 在 Twitter4j 中 但我得到 连接错误异常 超过限速 public static void main String args try Twitter twitter TwitterFa
  • 最好的 Java 集合线程安全锁定机制?

    在 Java 中控制对集合的多次访问的最慢的线程安全机制是什么 我正在将对象添加到集合的顶部 但我非常不确定什么是性能最佳的集合 它是一个向量还是一个队列 我最初认为 ArrayList 会很快 但我进行了一些实验 发现它非常慢 编辑 在我
  • 我怎样才能将图像逐像素绘制到jframe

    我是java的初学者 直到今天我尝试做我自己认为的事情 所以这一天就在这里 我已经将图像的所有像素排列为 RGB 我想单击一个按钮并制作逐像素创建的类似动画的图像 这就是我所做的 但不起作用 import java awt BorderLa
  • 我在 android 上使用 java 时遇到异常 (java.lang.NoClassDefFoundError),为什么?

    这是我运行的线路 AudioInputStream clip1 AudioSystem getAudioInputStream new File wavFile1 这是我得到的异常 来自 LogCat 错误 AndroidRuntime 3
  • CompletableFuture:几个任务

    如何使用 5 个 CompletableFutures 异步执行 20 个 Runnable 任务 或 1 个任务 20 次 这就是我所拥有的 Runnable task gt long startTime System currentTi
  • 通过 iframe 的信用卡付款表格有缺点吗? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我在许多小型企业电子商务网站中看到的一个常见功能是 当我单击 结帐 按钮时 我会离开该网站并重定向到第三方支付网关 如 paypal authoriz
  • 如何在servlet 3.0的web.xml-less中定义

    我有现有的 web 应用程序 我想将其转换为 servlet 3 0 的 web xml less 我已经设法让它工作 但是 web xml 中有 2 个标签 我仍然不知道无 web xml 环境中的等效代码
  • 测试前设置TestNG的输出目录

    我正在使用 Eclipse 运行一些 TestNG 测试 使用 XML 文件 右键单击 作为 TestNG 套件运行 我仅将 Maven 用于依赖项 而不用于运行测试 有没有办法在代码中设置输出目录 例如 System out printl
  • 异步 Spring MVC 控制器方法后记录响应正文

    我的 Spring MVC 应用程序中有以下内容 RestController public class SomeController GetMapping value csv produces text csv MediaType APP
  • 警告:发生了非法反射访问操作(java 中的便携式 opencv)

    我想做一个便携的opencv将依赖项添加到 maven 文件的应用程序pom xml 简化的代码是 import org opencv core Mat public class Builder public static void mai
  • PowerMock,模拟静态方法,然后对所有其他静态调用真实方法

    我正在设置模拟类的静态方法 我必须在 Before 带注释的 JUnit 设置方法 我的目标是设置类来调用真正的方法 except对于那些我明确嘲笑的方法 基本上 Before public void setupStaticUtil Pow
  • 使用带有 OnException 定义的adviceWith进行Camel路由测试

    我有一个非常简单的 Camel 路由定义 其中只包含一些 OnException 谓词来处理相应的异常和一些日志语句 from hazelcast seda someQueue id someQueueID onException Cust
  • gwt rpc 中的会话 ID cookie

    假设我正在滚动自己的会话代码 那么在 java 中生成唯一且安全的会话 id cookie 的正确方法是什么 我不应该自己推出而是使用已经标准化的东西吗 我正在使用 gwt 和 google app engine 平台 如何使会话在浏览器
  • 如何在java中模拟SHIFT+鼠标按键

    我想将鼠标指针移动到特定位置并执行 SHIFT 鼠标右键单击 我可以将鼠标移动到某个位置 但无法模拟鼠标单击 Robot r new Robot r mouseMove x1 y1 我应该做什么来模拟预期的鼠标点击 我认为您只需要一点额外的
  • 我怎样才能设置在中间呢?

    我尝试用Java画一个矩形 我设置了框架大小 800 400 和可调整大小 假 矩形的x 50 y 50宽度 700高度 300 为什么它不在中间 谢谢 如果没有任何其他证据 我会guess你已经覆盖了paint类似的方法JFrame并直接
  • 与嵌套泛型集合的混淆

    请帮助我理解为什么add1 and add4 报告错误以及原因add2 and add3 不 具体来说 请举例说明如果编译器允许其中每一个进行编译 则会产生不良后果的示例 class InnerTypeConfusion interface
  • 在java正则表达式中获取组名

    我正在尝试接收模式和字符串并返回组名称 gt 匹配结果的映射 Example
  • JPA:如何在不加载延迟加载集的情况下计算子记录数

    我正在编写一个 J2EE JPA Spring 3 应用程序 试图保持纯粹的 JPA 2 0 我想获得子对象的计数而不必加载它们 因为这显然是一个昂贵的操作 例如 这是一个简化的示例 Organisation OrgID OrgName E
  • 扩展 Lombok 困难

    我想创建一个注释处理程序来扩展 Java 语言 然而 由于 SCL 文件的原因 我无法轻松做到这一点 我想知道 Lombok 开发人员是否故意让它变得如此困难 如果我尝试扩展 JavacAnnotationHandler 它无法在 lomb
  • JsonNode findValue 不搜索子节点

    我有一个结构如下的资源 activity activity type Like activity id 123456 object id product id reference activity activity type Rating

随机推荐