Jboss EAP 7 - REST API 客户端的动态 SSL 身份验证

Jboss EAP 7 - Dynamic SSL authentication for REST API clients

我正在努力解决有关 SSL 证书及其签名的一些问题。

我的需求:我需要能够添加(生成?)客户端证书以允许他们使用我的 API。

我的问题:如果更改 java 信任库以使修改可用,似乎需要重新加载 Wildfly。

我的理解:这是对问题的错误处理,应该做的是:

  1. 从受信任的机构获取 CA 证书
  2. 将此证书添加到我的密钥库
  3. 使用该证书签署客户端证书

这样只有我的 CA 证书需要在我的 java 密钥库上,并且通过 CA 验证链,我的客户端将被允许使用我的服务。

问题:

  1. 我做对了吗?
  2. 如果我应该签署我的客户证书,他们应该向我发送什么才能使签名成为可能?
  3. 是否可以在不调用 keytool 实用程序的情况下完成此操作?我希望尽可能使用 java 来做到这一点,而不是依赖 OS.
  4. 如果我的 CA 证书来自受信任的机构并且我用它来签署我的客户证书,那些仍然算作自签名证书吗?

感谢您提供的所有指点。

好的,

因为它可能对其他人有帮助,所以我将把我的各种测试帮助我弄清楚的东西放在一起。 :

  1. 我猜对了吗?

据我所知:是的 为什么我不能确定呢?因为由于我的开发环境以及我无法拥有具有有效域的真实有效证书来测试它这一事实,我遇到了一些测试限制。

  1. 如果我应该签署我的客户证书,他们应该向我发送什么才能签署?

因此,他们需要发送 CSR(证书签名请求)和他们的 public 密钥才能进行签名。

  1. 是否可以在不调用 keytool 实用程序的情况下完成此操作?我希望尽可能使用 java 来做到这一点,而不是依赖 OS.

使用 Bouncycastle 库应该可以做到这一点。我正在使用 should 因为我没有去实现它,稍后会详细介绍。

  1. 如果我的 CA 证书来自受信任的机构并且我用它来签署我的客户证书,那些仍然算作自签名证书?

我还不清楚,但证书签名似乎有某种范围可以防止任何人伪造实际的 CA。欢迎任何人对此有更确切的了解。

我最终做了什么:

作为我们自己的 CA 会遇到太多障碍,所以我们实际上要做的是要求我们的客户从已知的 CA 获取他们的证书并将这些 CA 证书添加到我们的信任库中。这与之前的原则相同,但我们将利用实际的 CA 资源,而不是扮演 CA。

希望这对有某种等效要求的任何人有所帮助。