如何设置基本 Jersey/Grizzly 2.21 SSL 启动配置

2023-12-29

我正在尝试启动并运行一个非常基本的 Grizzly 服务器,以允许单向 SSL (HTTPS) 连接访问 jax-rs REST 服务。最终我想要双向 SSL 安全性。

我已经浏览了很多例子,但我无法让任何东西发挥作用。我一直遇到 SSL 握手错误。显然我一定是在做一些愚蠢的事情。任何帮助表示赞赏。

以下是使用 Jersey 包装类启动嵌入式 Grizzly 服务器的代码:

public static HttpServer startHttpsServer(URI listenerURI) throws IOException  {
  ResourceConfig resourceConfig = new ResourceConfig().packages("ws.argo.experiment.ssl");

  // First I tried this configuration using the certs from the Jersey sample code
  // Grizzly ssl configuration
  SSLContextConfigurator sslContext = new SSLContextConfigurator();

  // set up security context
  sslContext.setKeyStoreFile("./src/main/resources/keystore_server"); // contains server keypair
  sslContext.setKeyStorePass("asdfgh");
  sslContext.setTrustStoreFile("./src/main/resources/truststore_server"); // contains client certificate
  sslContext.setTrustStorePass("asdfgh");

  // Then I tried just using a default config - didn't work either
  //    sslContext = SSLContextConfigurator.DEFAULT_CONFIG;


  if (!sslContext.validateConfiguration(true)) {
    LOGGER.severe("Context is not valid");

  }

  LOGGER.finer("Starting Jersey-Grizzly2 JAX-RS secure server...");
  HttpServer httpServer; //=   GrizzlyHttpServerFactory.createHttpServer(listenerURI, resourceConfig, false);


  httpServer= GrizzlyHttpServerFactory.createHttpServer(
      listenerURI,
      resourceConfig,
      true,
      new   SSLEngineConfigurator(sslContext).setClientMode(false).setNeedClientAuth(false)
      );



  httpServer.getServerConfiguration().setName("Test HTTPS Server");
  httpServer.start();
  LOGGER.info("Started Jersey-Grizzly2 JAX-RS secure server.");

  return httpServer;
}

我还尝试用 null 替换 SSLEngineConfigurator(sslContext).setClientMode(false).setNeedClientAuth(false) 看看是否有帮助。没有。

我总是收到以下错误:

grizzly-nio-kernel(3) SelectorRunner, fatal error: 40: no cipher suites in common
javax.net.ssl.SSLHandshakeException: no cipher suites in common
%% Invalidated:  [Session-2, SSL_NULL_WITH_NULL_NULL]
grizzly-nio-kernel(3) SelectorRunner, SEND TLSv1.2 ALERT:  fatal, description = handshake_failure
grizzly-nio-kernel(3) SelectorRunner, WRITE: TLSv1.2 Alert, length = 2
grizzly-nio-kernel(3) SelectorRunner, fatal: engine already closed.  Rethrowing javax.net.ssl.SSLHandshakeException: no cipher suites in common

添加到 JMS 评论之上,他的回答也解决了我的问题。 这是我用来生成 RSA 证书的命令。

keytool -genkey -keystore ./keystore_client -alias clientKey -keyalg RSA -keypass changeit -storepass changeit -dname "CN=Client, OU=Jersey, O=changeit, L=KL, ST=SEL, C=MY"
keytool -export -alias clientKey -storepass changeit -keystore ./keystore_client -file ./client.cert
keytool -import -alias clientCert -file ./client.cert -storepass changeit -keystore ./truststore_server


keytool -genkey -keystore ./keystore_server -alias serverKey -keyalg RSA -keyalg RSA -keypass changeit -storepass changeit -dname "CN=changeit, OU=Jersey, O=changeit, L=KL, ST=SEL, C=MY"
keytool -export -alias serverKey -storepass changeit -keystore ./keystore_server -file ./server.cert
keytool -import -alias serverCert -file ./server.cert -storepass changeit -keystore ./truststore_client
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何设置基本 Jersey/Grizzly 2.21 SSL 启动配置 的相关文章

随机推荐

  • 子树将主树合并到分支中: -s recursive -Xsubtree=?

    In the git book https git scm com book en v2 Git Tools Advanced Merging 子树合并 部分 它说 您也可以做相反的事情 进行更改rackmaster 分支的子目录 然后将它
  • 从浏览器缓存中删除单个文件

    我的页面中有一张图像 该图像缓存在浏览器中 现在我已经删除了图像 但是因为它已被缓存 所以请求不会发送到服务器 并且它会再次出现 那么如何从浏览器缓存中删除它呢 不 您无法物理删除缓存文件 相反 您可以动态生成文件的链接 例如 并最终用不同
  • 如何在 Windows 8 / 2012 中左对齐窗口标题?

    有没有办法 本质上 在 Windows 8 或 2012 计算机中左对齐窗口标题 Window 8 或 2012 中的窗口标题水平居中对齐 我们有一个移植到 Windows 8 2012 计算机的 WPF 应用程序 我们正在与几个客户一起测
  • 为什么我在 ~/.m2 下找不到我的 settings.xml?

    为什么我找不到我的设置 xml under m2 注意 我当前正在运行 Apache Maven3 3 9在我的机器上 settings xml 文件可能存在于两个位置 Maven 安装 maven home conf settings x
  • 多种条件提前停止

    我正在为推荐系统 项目推荐 进行多类分类 并且我目前正在使用sparse categorical crossentropy损失 因此 合理执行EarlyStopping通过监控我的验证损失 val loss像这样 tf keras call
  • 将 TFS 2010 中的源、标签和历史记录从根文件夹移动到分支

    我遇到了一个情况 我不确定是否可以解决 我最近开始组建一个从未使用过任何类型的版本控制系统的新团队 并且我们的组织使用 TFS 作为标准 我以前从未使用过 经过多次恳求 我让管理员为我在服务器上的现有代码创建一个 TFS 项目 并且由于我的
  • 如何使用 php 生成 .xlsx

    我需要生成一个带有扩展名的 Excel 文件 xlsx 这是我的简单代码 file test xlsx header Content Type application vnd openxmlformats officedocument sp
  • UITextView行间距导致段落行之间的光标高度不同

    我在用着NSMutableParagraphStyle in my UITextview用于在每行文本之间添加行间距 当我在文本视图中输入内容时 光标高度是正常的 但是当我将光标位置移动到第二行 不是最后一行 上的文本时 光标高度变得更大
  • 访问对象中数据的复杂性

    在我日常工作的一些项目中 我需要访问非常大的 JS 对象中的数据 大约数千个键值对 我正在努力提高代码的效率 所以我提出了几个问题 当访问这样一个对象中的字段时 JS 的运行时复杂度是多少 我最初的预感是 O n 通过点表示法和括号表示法访
  • 在控制器之间传递值

    我正在学习Yii 我有一个测试开发 其中包含许多表 员工 个人详细信息 地址 我对 MVC 的理解使我将它们视为独立的行星 其中每个 MVC 组件在该世界中都扮演着明确定义的角色 我有一个问题开始困扰我 因为我现在想在这些世界之间传递数据和
  • 从后端发送 JSON 到前端

    我需要对 JSON 对象进行一些说明 在我的节点后端中 我收到一个 JSON 对象 在检查完所需的键 值对后 我将其发送到前端 这就是我感到困惑的地方 我仍然需要通过response json 将该响应对象转换为json 为什么 如果后端传
  • PHP 空构造函数

    只是想知道在 PHP 中最好定义一个空构造函数还是完全保留构造函数定义 我有这样的习惯 定义构造函数return true 即使我不需要构造函数做任何事情 只是为了完成原因 如果不需要构造函数 最好将其省略 无需编写更多代码 当你写它时 将
  • 视频序列中车牌的超分辨率

    这是我的问题的后续问题 视频序列中车牌的局部增强 https stackoverflow com questions 21715908 local enhancing of license plate in video sequence I
  • 更改 r 中的 x 轴标签

    我有 ggplot geom bar x 轴上有月份的名称 我有一些不同日期的数据 但我希望轴上的名称与特定日期相对应 Date Percent Category 2020 02 03 30 Apple 2020 02 03 25 Bana
  • 根据 Woocommerce 电子邮件通知中的运输方式显示自定义内容

    Woocommerce 更新到 3 2 后 下面的代码不再起作用 add action woocommerce email order details my completed order email instructions 10 4 f
  • Windows 10 上的 Jenkins 与 Bash

    我目前正在 Windows 10 上设置 Jenkins 服务器 希望能够使构建脚本更加跨平台 我希望能够利用 Windows 10 中提供的 bash 环境 我希望这可以通过将 Jenkins 中的 shell 路径设置为 bash 可执
  • 如何将 Gremlin Server 连接到远程 Neo4j 数据库?

    我有一个关于 Gremlin 服务器的问题 是否可以将 Gremlin 服务器连接到 Neo4j 服务器 远程数据库 目前我的文件系统中有一个 Neo4j 数据库以及一个连接到它的 Gremlin 服务器 现在我希望两台服务器都运行相同的
  • 如何同步两个git仓库

    我在不同的电脑上有两个 git 存储库 我在每一个地方都有一些分支机构 我不想将此分支发送到远程服务器 只需将它们保留在本地即可 那么如何在不使用网络的情况下进行同步呢 我可以只在一台电脑上压缩存储库并移动到另一台电脑吗 这样安全吗 也许我
  • 如何在 Google Maps API v3 中检测进入和退出 streetView

    有没有办法在 API v3 下检测用户何时进入和退出 Google 地图中的 StreetView 我想在用户进入 StreetView 时触发现有的 隐藏菜单 功能 因为菜单不相关 然后在退出时重新显示菜单 观察visible chang
  • 如何设置基本 Jersey/Grizzly 2.21 SSL 启动配置

    我正在尝试启动并运行一个非常基本的 Grizzly 服务器 以允许单向 SSL HTTPS 连接访问 jax rs REST 服务 最终我想要双向 SSL 安全性 我已经浏览了很多例子 但我无法让任何东西发挥作用 我一直遇到 SSL 握手错