Tomcat 8 中的 SSL:服务器和客户端 JKS + 客户端公共 cer

2023-11-30

我按照本指南使用 SSL 层设置 Tomcat 8 实例,生成客户端和服务器密钥库以及自动签名的公共客户端证书。

我想问题是我真的不知道如何配置 Tomcat 的连接器......

这是我当前的 server.xml 文件(删除了不必要的注释):

    <?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener"/>

  <Listener SSLEngine="on" className="org.apache.catalina.core.AprLifecycleListener"/>
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>

  <GlobalNamingResources>

    <Resource auth="Container" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase" pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase"/>
  </GlobalNamingResources>

  <Service name="Catalina">

    <Connector connectionTimeout="40000" port="9090" protocol="HTTP/1.1" redirectPort="8443"/>

    <!-- I've also tried using these ones: -->
    <!-- <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" /> -->
    <!--<Connector  clientAuth="true" port="8443" minSpareThreads="5"
                enableLookups="true" disableUploadTimeout="true"
                acceptCount="100" maxThreads="200"
                scheme="https" secure="true" SSLEnabled="true"
                keystoreFile="C:\Program Files\Apache Software Foundation\Tomcat 8.0\keys/server.jks" keystoreType="JKS" keystorePass="triple1327"
                truststoreFile="C:\Program Files\Apache Software Foundation\Tomcat 8.0\keys/server.jks" truststoreType="JKS" truststorePass="triple1327"
                sslProtocol="TLS" />-->

                <!-- Don't work on tomcat8:
                maxSpareThreads="75"
                SSLVerifyClient="require"
                SSLEngine="on"
                SSLVerifyDepth="2"
                -->

        <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
        maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
        clientAuth="true" sslProtocol="TLS" 
        keystoreFile="C:\Program Files\Apache Software Foundation\Tomcat 8.0\keys\server.jks" keystoreType="JKS" keystorePass="triple1327"
        truststoreFile="C:\Program Files\Apache Software Foundation\Tomcat 8.0\keys\server.jks" truststoreType="JKS" truststorePass="triple1327"
                />

        <!-- Define an AJP 1.3 Connector on port 8009 -->
        <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"  />   

    <Engine defaultHost="localhost" name="Catalina">

        <Realm className="org.apache.catalina.realm.LockOutRealm">

        <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
    </Realm>

    <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t &quot;%r&quot; %s %b" prefix="localhost_access_log" suffix=".txt"/>
        <Context path="/rutas" docBase="C:\Users\IN006\cavwebapp" reloadable="true" crossContext="false">
        </Context>
    </Host>

    </Engine>
  </Service>
</Server>

使用这个,我尝试访问 tomcat 欢迎页面:

  • 本地主机:8443
  • https://本地主机
  • https://本地主机:8443

但他们都没有工作...

Any tip?

谢谢你!

EDIT

解决方案:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
       maxThreads="150" scheme="https" secure="true"
       clientAuth="false" sslProtocol="TLS" 
       keystoreFile="/etc/tomcat7/server.jks"
       keystorePass="changeit" />

我已经能够通过以下方式访问它https://本地主机:8443


您的问题缺乏重要的详细信息,例如 tomcat 的日志和密钥库的结构。例如,放置在密钥库中的密钥本身可以受到密码保护。您要使用的端口可能已被占用,等等。有很多事情可能会出错。

一般来说,我可以建议你让事情尽可能简单。 试试这个片段:

<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
           maxThreads="150" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS" 
           keystoreFile="/etc/tomcat7/server.jks"
           keystorePass="changeit" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tomcat 8 中的 SSL:服务器和客户端 JKS + 客户端公共 cer 的相关文章

  • Spring @PostConstruct 依赖于 @Profile

    我想在一个配置类中拥有多个 PostConstruct 带注释的方法 这些方法应该根据 Profile 进行调用 你可以想象这样的代码 Configuration public class SilentaConfiguration priv
  • ClientRequestFactory RestEasy 已弃用...还有其他 RestEasy 替代方案吗?

    我需要使用其他人创建的 RestService 的接口来创建轻松的客户端 这工作很好 除了一件事 当我从rest easy 2 3 5 Final更新到resteasy 3 0 x时 Client RequestFactory类看起来像 D
  • Mockito 匹配器和基元数组

    有了 Mockito 我想verify 方法调用byte 在它的参数列表中 但我没有找到如何写这个 myMethod byte 我只想要类似的东西anyByteArray 如何使用 Mockito 做到这一点 我会尝试any byte cl
  • 为什么 Java 中需要 String[] args?

    我知道 String args 是作为参数传递到 main 的字符串数组 java Print Hello World class Print public static void main String args System out p
  • 使用 Firebase Java API 检索/格式化数据的最佳方式

    我在用着Firebase用于数据存储Android项目 并使用Firebase Java API来处理数据 不过 我不确定我是否尽可能高效地完成此操作 并且我希望获得一些有关检索和格式化数据的最佳实践的建议 我的Firebase存储库看起来
  • 如何在Eclipse中制作war文件[重复]

    这个问题在这里已经有答案了 制作war文件的简单方法是什么 当我右键单击 在服务器上运行 时 我的项目正在运行 但我想部署在 tomcat 服务器上 我已经安装了m2clipse但这给了我一个错误 maven是否必须制作war文件 我需要特
  • AJAX(原型/java)在执行期间获取部分状态更新

    这部分模仿了AJAX 原型 php 在脚本执行期间获取部分状态更新 https stackoverflow com questions 800997 ajax prototype php getting partial status upd
  • Ubuntu 上的 Tomcat8 .log.gz 已存在且未覆盖

    在我们的 Tomcat 服务器上 我经常看到如下警告 etc cron daily tomcat8 gzip var log tomcat8 app1 app1 log gz already exists not overwritten g
  • 是否可以将 BitmapDescriptor 转换为 Bitmap?

    我需要将 BitmapDescriptor 转换为 Bitmap 我可以使用以下代码将位图转换为 BitmapDescriptor BitmapDescriptor bd BitmapDescriptorFactory fromBitmap
  • 原型组件的 Spring 事件处理

    假设我有两个组件 X 和 Y 其中 X 是单例 而 Y 不是 当我发布XUpdateEvent时 没有问题 我可以捕获该事件 但是 对于 YUpdateEvent 我无法捕获事件 Spring 为每个触发的事件创建新实例 而不是使用已经创建
  • 如何在 TestNG 报告中包含 Log4j2 消息

    我希望在所有测试用例的 TestNG 报告中提供 Log4j2 日志记录信息 TestNG 使用一个名为 Reporter java 的特殊记录器类来跟踪日志输出并将其保存在其结果 XML 中 在 log4j 中 可以简单地创建一个路由到
  • 使用 IntelliJ 调试 Java 进程 - 连接到套接字但不连接到目标 VM

    现在已解决 请参阅问题末尾 我正在尝试使用 IntelliJ Community Edition 的调试器来调试 Java 进程 套接字正在侦听 但是当我尝试连接时 调试过程显示以下内容 连接到目标虚拟机 地址 8003 传输 socket
  • 结果显示图像上有衬里

    我正在使用 opencv 和 android ndk 下面是我的 jni 代码 void Vignete Mat img1 Mat img2 Mat out resize img1 img1 img2 size img1 convertTo
  • Java Swing 组件的命名约定(前缀)

    在 Java 中使用 Swing 进行编程时 我想到的一个问题是 它是 Swing 组件的推荐还是 官方 最常用的命名约定 前缀 例如 尽管其他人可能更喜欢其他命名约定 但这就是我当前正在使用的 JTextField 的 txt JButt
  • 是否可以使用“WHERE”子句来选择SQL语句中的所有记录?

    晚上好 我很好奇是否可以在 SQL 语句中创建一个 WHERE 子句来显示所有记录 下面一些解释 随机 SQL 语句 Java JSP示例 正常情况 String SqlStatement SELECT FROM table example
  • Eclipse 错误:“设置构建路径”遇到错误

    我正在使用一个名为 jtwitter 的 API 它有一个 jar 文件 jtwitter jar 我一直在使用它并使用 git 维护它 我把代码托管在github上 有些天 我没有碰过它的代码 今天 当我克隆我的 git repo 时 实
  • 如何使用二叉树中的递归来完成回溯

    我正在尝试插入一个二进制节点 我的代码很复杂 没有希望挽救它 所以我计划重写它 基本上我没有考虑回溯 也没有仔细考虑算法 我正在尝试使用顺序遍历插入二进制节点 但我不明白应该如何回溯 D B E A C F 我如何搜索根 D 的左子树 然后
  • JNA Windows 服务启动类型

    我一直在使用 JNA 并且能够使用下面的代码返回 Windows 服务的状态 即启动或停止 但我不确定如何返回服务的启动类型 我确信 JNA 之外还有其他方法 但如果可能的话我想继续使用 JNA import com sun jna imp
  • 通过命令行参数更改默认的 ant 目标

    最近我被分配了一个任务 让ant能够为不同的环境构建war包 除了一项功能外 我几乎完成了 蚂蚁接受一个env参数类似 Denv DEV 并使用不同的配置文件来制作war包 但默认目标是start它将构建 部署并启动 tomcat 我不希望
  • CompletableFuture 的多个 thenAccept 块的执行顺序是什么

    所以我有一个返回a的方法CompletableFuture 在返回之前 此方法添加一个块thenAccept这是在之后执行的CompletableFuture完成 此方法的调用者还添加了另一个块thenAccept 显然 这可以通过多个链式

随机推荐

  • 绘制太多点?

    R 基 格或其他 如何从 100000 个元素向量 或输出该值的函数 创建图形 它会阴谋一些而拒绝另一些吗 将所有内容都放在彼此之上 我怎样才能改变这种行为 我怎样才能创建一个图表 让我在每个时间间隔都能看到最大值和最小值 就像交易 条形
  • 导出的 JAR 无法读取图像 [重复]

    这个问题在这里已经有答案了 我正在尝试让图像显示在 JPanel 中 这是我正在使用的代码 URL imageURL BufferedImage image null ImageIcon icon imageURL getClass get
  • 使用 PDO 在 postgres 中自动回滚

    我发现postgres PDO自动回滚当抛出异常时 先前的更改 即使异常被捕获并吞下 示例 伪代码 transaction gt begin try manager gt insert INSERT try manager gt exec
  • Pandas - DataFrame 聚合行为异常

    相关Dataframe聚合方法传递列表问题 and Pandas 无法使用聚合函数列表进行聚合 考虑这个数据框 import pandas as pd import numpy as np df pd DataFrame index ran
  • 如何使用 dill 库通过 shelve 库进行对象序列化

    我在用着PyMemoize缓存协程的库 我装饰了协程 但是当 Python 调用它时 我得到 TypeError can t pickle coroutine objects 发生这种情况是因为PyMemoize内部尝试腌制协程并将其存储在
  • 手动签署 AppSync URL 以在 Lambda 中使用会出现错误的签名错误

    在 Lambda 中 我想签署我的AppSync端点与aws signature v4以便将其用于突变 生成的 URL 似乎没问题 但当我尝试它时 它给了我以下错误 errors errorType InvalidSignatureExce
  • 如何使用 nextjs 处理获取 URL

    因此 我尝试将 nextjs 应用程序部署到 vercel 但它在代码的索引获取 URL 部分始终失败 在我的index js页面目录的文件我有以下代码 export async function getStaticProps const
  • Zend Framework:无法确定临时目录,请手动指定cache_dir

    我刚刚学习 Zend 框架 我创建了一个简单的 Zend Form 当我提交表单时 出现以下错误 An error occurred Application error Exception information Message Could
  • Xcode 4.2 中的 Guard Malloc。它在哪里?

    它在哪里 Xcode 中还有其他可用的工具吗 谢谢 现在 NDA 不再适用于 xcode 4 2 以下是包含所需步骤的屏幕截图 对于仍在寻找 Guard Malloc 的人来说 这应该会更快
  • 如何将各种类型的函数指针存储在一起?

    普通指针可以使用通用存储void e g void arr 10 arr 0 pChar arr 1 pINt arr 2 pA 不久前 我看到一个讨论 void 可能无法在所有平台 例如 64 位及更多 中存储函数指针而不丢失数据 但我不
  • 使用java插入二叉树不起作用

    我目前正在使用java学习树 我这里发生了一些错误 在二叉树中插入项目 我不明白为什么它不起作用 这是代码 树节点 public class TNode int data TNode left TNode right public TNod
  • 更新 AppWidget 上的 TextView 文本大小

    我无法弄清楚这一点 我已经为此苦苦挣扎了好几天 我已经厌倦了 我正在使用配置活动中的 Spinner 更改 AppWidget 上 TextView 的文本大小 但无法正确更新 我告诉它第一次时它不会更新 但第二次和第三次以及之后的每次都会
  • 如何测试网页是否包含某些文本

    我正在尝试检测网页是否包含某些文本 例如 我想看看是否这个网页包括以下短语 这是我的代码 我无法发现 如果那么 条件得到满足 这就是我正在尝试的 Const READYSTATE COMPLETE 4 Declare Function Se
  • 列表视图在视图翻转器内滑动

    我试图在列表视图上左右滑动并切换视图翻转器 就像 remeberthemilk 应用程序以及 Nexus One 上的默认新闻和天气应用程序一样 滑动浏览新闻主题 使用我找到的各种教程 我在 stackoverflow 上发现了一个展示如何
  • 无法通过c#删除.exe文件

    我在 Windows 窗体应用程序中有一个更新按钮 当用户单击更新按钮时 应用程序会检查应用程序的当前版本与从 Web 服务获取的服务器中的可用版本 如果版本不匹配 应用程序将从Web服务获取的路径下载新版本 我目前在同一解决方案中使用两个
  • 运行jsp文件时出现错误

    我在 eclipse juno 中创建了一个简单的 Hello jsp 程序 当我尝试通过在服务器上运行来运行此 jsp 文件时 出现以下错误 出现问题 在本地主机上发布到 Tomcat v6 0 服务器 遇到了问题 发布失败并出现多个错误
  • 使用 pandas python 的 SuperTrend 代码

    我正在尝试使用 pandas 在 python 中为 SuperTrend 指标编写以下算法 BASIC UPPERBAND HIGH LOW 2 Multiplier ATR BASIC LOWERBAND HIGH LOW 2 Mult
  • 尝试将内联 UIDatePicker 添加到 UITableViewCell

    我正在尝试在 TableView 单元格内创建一个内联 DatePicker 类似于this and this所以线程 我使用下面的方法创建日期选择器 该方法在加载视图时调用 void createDatePicker datePicker
  • 在 sql 查询中使用数组/变量

    我确信有办法做到这一点 但我不知道了 我有一张包含所有数据的大表 In the table I包含以下信息的行 columnA1 groupName columnA2 groupID ColumnB3 name columnB4 group
  • Tomcat 8 中的 SSL:服务器和客户端 JKS + 客户端公共 cer

    我按照本指南使用 SSL 层设置 Tomcat 8 实例 生成客户端和服务器密钥库以及自动签名的公共客户端证书 我想问题是我真的不知道如何配置 Tomcat 的连接器 这是我当前的 server xml 文件 删除了不必要的注释