Tomcat 和 SSL 客户端证书

2023-12-23

我想要一个以下场景:

  1. 创建我自己的 CA
  2. 创建服务器证书并使用我的 CA 对其进行签名
  3. 创建多个客户端证书并使用我的 CA 对其进行签名

接下来,我想对每个提供由我的 CA 签名的证书的客户端进行身份验证。

是否可以在不将每个客户端证书添加到我的 tomcat 密钥库的情况下实现这种情况?我只想验证客户端提供的证书是否由我的 CA 颁发和签名。


是的,这当然是可能的,而且我也确实做到了这一点。如果您使用包含 CA 证书的信任库配置 Tomcat,那么它应该接受该 CA 签名的任何客户端证书。

我假设您已经生成了 CA 密钥和根证书,并且您知道如何使用它将 CSR 转换为证书。

首先生成您的服务器密钥和相应的 CSR

$ openssl genrsa -out XXX.key 2048
$ openssl req -new -nodes -key XXX.key -out XXX.csr

使用您的 CA 证书签署 CSR,生成服务器证书XXX.crt。现在将服务器密钥、服务器证书和 CA 证书打包到单个 PKCS#12 文件中

$ cat XXX.crt ca-certificate.pem | openssl pkcs12 -export -inkey XXX.key -out XXX.p12 -name tomcat -caname myauthority

此过程将提示您输入多个密码,将它们全部设置为相同的值(该值是什么并不重要,并且不必是安全密码,只需非空 - 我使用changeit).

This .p12文件现在可以充当keystore对于雄猫。接下来,您需要创建一个单独的 JKS 密钥库,其中仅包含要用作信任库.

$ keytool -import -alias myauthority -keystore truststore.jks -file ca-certificate.pem

再次,使用相同的非空密码回复所有密码提示,例如changeit.

最后可以配置Tomcat:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
           maxThreads="150" scheme="https" secure="true"
           connectionTimeout="20000"
           keystoreFile="${catalina.home}/conf/XXX.p12"
           keystoreType="PKCS12"
           keystorePass="changeit"
           truststoreFile="${catalina.home}/conf/truststore.jks"
           truststoreType="JKS"
           truststorePass="changeit"
           clientAuth="true" sslProtocol="TLS" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tomcat 和 SSL 客户端证书 的相关文章

随机推荐

  • Python 类 @property:使用 setter 但避免 getter?

    在 python 类中 property 是一个很好的装饰器 它避免使用显式的 setter 和 getter 函数 然而 它的开销是 经典 类函数的 2 5 倍 就我而言 在设置属性的情况下这是相当好的 与设置时需要完成的处理相比 开销是
  • 如何在越狱的iOS设备上快速从应用程序的bundle id获取应用程序的目录?

    在 iOS 设备中 所有用户应用程序都位于 var mobile Applications目录 每个应用程序都有一个唯一的随机 uuid 作为其目录名称 例如 var mobile Applications 15FD62FD 2BEB 4C
  • 快速创建空文件

    如何用 Swift 代码创建一个空文件 最好避免使用终端 用尽可能少的代码行 我正在使用 Swift 4 Xcode 9 4 1 和 macOS High Sierra 我尝试过使用终端运行 Bash 代码 请参阅我的帖子here http
  • 是否可以在 Silverstripe 模板变量上运行函数来格式化输出?

    我创建了一个数据模型 其中包含办公室地址的纯文本区域输入字段 我想做相当于nl2br OfficeAddr 在我的相关 Silverstripe 模板中打印数据时 据我所知 他们的模板系统不支持此类功能 我错过了什么吗 有什么推荐的解决方法
  • 在终止的线程上调用 pthread_cancel() 是否安全?

    我想知道打电话是否安全pthread cancel 在已终止的线程上 我在手册页中找不到任何提示 预先感谢您的任何提示 编辑 也许我不够准确 我是not谈论的是由较早的 pthread cancel 终止的线程 而是谈论只是从其线程函数返回
  • Windows:最大化/像任务栏一样对待我的窗口?

    我们正在开发一个 仪表板 应用程序 它基本上 总是在最上面 并以一种烦人的方式挂在屏幕的左侧 这是一个内部公司应用程序 世界不会受到影响然后全面拒绝 我的问题 是否有某种方法可以使其他应用程序窗口像任务栏一样对待我的应用程序窗口 IE 当有
  • 如何反转Python中的光标移动?

    在此代码中 我使用 Python 2 7 13 OpenCV 2 4 13 和 PyAutoGUI 0 9 36 目的是根据面部运动来移动光标 但光标移动是反向的 例如 如果我的脸朝右 则光标移动到左侧 如果我的脸朝左 则光标移动到右侧 另
  • 在 makefile 中将 Windows 路径转换为 ​​Unix 路径

    这个问题与在 makefile 中将 Cygwin 路径转换为 Windows 路径 https stackoverflow com questions 4400310 convert cygwin path to windows path
  • 反编译的 .winmd 文件仅包含外部调用

    我正在尝试将 Windows 应用商店应用程序的 ComboBox 控件反编译为 C 但没有代码 相反 似乎所有属性都是对单独程序集的调用 如何找到真正的代码存在的位置 以及如何读取 C 中的方法体 我无法阅读汇编 所以这对我没有好处 有关
  • 在 Elastic Beanstalk 环境中运行 Rails rake 任务

    有谁知道在 Elastic Beanstalk 环境中为 Rails 应用程序运行 rake 任务的最简单方法 我有一些数据想要每隔一段时间重置一次 时间线待定 我看过其他帖子讨论创建 cron 任务 但我现在只想能够一次性执行该任务 您需
  • 为什么 Bootstrap 包含 bootstrap-theme 文件?

    问题是similar对于这个 如何在 Bootstrap 3 中使用 bootstrap theme css https stackoverflow com questions 18327543 how to use bootstrap t
  • 在 C++ 中,有处理内存分配/删除的一般准则吗?

    也许我所要求的只是一个我尚未找到的网站的链接 但是从 Java 背景出发 在 C 中处理内存分配和删除的一般准则是什么 我觉得我可能会在我的应用程序中添加各种内存泄漏 我意识到智能指针有多种变体 您也可以向我提及它们 但我想重点关注标准 C
  • 正则表达式获取间隔下划线之间的字符串

    我见过很多类似的问题 但我无法获得所需的输出 我有一根绳子means variab textimput x2 200 txt我想抓住ONLY第三个和第四个下划线之间是什么 文本输入 我用的是R stringr 我尝试了很多方法 但都没有解决
  • 使用 Gremlin 和 Java 连接 JanusGraph 出现序列化异常(遇到未注册的类 ID:65536)

    我正在尝试使用以下 Java 程序连接到 Janus Graph 我正在尝试从现有图表中获取条目 我正在使用 Janusgraph 0 4 0 和 Cassandra 3 11 5 Graph graph EmptyGraph instan
  • 我正在使用 Pylons 并遇到了 response.set_cookie 问题

    我认为 Pylons 的一个版本是不同的 但我找不到一种简单的方法来判断我正在运行的版本 在第一个示例中 我相当确定它是 0 9 7 及以上版本 使用 webob 设置 cookie 此环境将 符号设置为 100 正如您在其他环境中看到的那
  • 求解线性最小二乘法的最快方法

    In https math stackexchange com a 2233298 340174 https math stackexchange com a 2233298 340174有人提到 如果通过 LU 分解来求解线性方程 M x
  • 如何在flutter应用程序中调整figma尺寸?

    我设计了 Figma 我需要将其应用到我的 flutter 应用程序中 但我有一定的困难 所以按顺序 我尝试的第一件事是使用自动导入工具 我尝试过 Adobe XD 到 Flutter 超新星工作室 不幸的是 这些工具仍处于其旅程的开始阶段
  • Clojure Ref、Var、Agent、Atom 之间的差异以及示例

    我对 Clojure 很陌生 你们能给我解释一下现实世界的场景吗 我的意思是 在哪里使用 Ref Var Agent Atom 我读过书 但是仍然无法理解现实世界的例子 我强烈推荐 The Joy of Clojure 或 programm
  • 如何使用 JavaScript 将部分文本包装在节点中

    我有一个具有挑战性的问题需要解决 我正在编写一个以正则表达式作为输入的脚本 然后 该脚本在文档中查找此正则表达式的所有匹配项 并将每个匹配项包装在其自己的中 span 元素 困难的部分是文本是格式化的 html 文档 因此我的脚本需要浏览
  • Tomcat 和 SSL 客户端证书

    我想要一个以下场景 创建我自己的 CA 创建服务器证书并使用我的 CA 对其进行签名 创建多个客户端证书并使用我的 CA 对其进行签名 接下来 我想对每个提供由我的 CA 签名的证书的客户端进行身份验证 是否可以在不将每个客户端证书添加到我