- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我很茫然,因为我不是 Tomcat 用户。我需要使用第 3 方的 Web 服务,他们需要通过 SSL 进行客户端身份验证,因此他们生成并向我颁发了 SSL 证书。不幸的是,这只是他们支持的范围,无法给我任何关于如何实际使用它的指导。我一直在使用这个第 3 方,所以不幸的是我不得不忍受他们缺乏支持。
所以我拥有的是一个供应商为我们提供的 Java 应用程序(显然他们从来没有处理过这个),一个在 CentOS 5.3 上运行 6.0.20 的 Tomcat 应用程序服务器,以及来自第 3 方的 SSL 证书.
此时我需要做什么?我在网上只能找到如何设置 keystore ,以便我的应用程序可以对连接到它的东西使用客户端身份验证,而不是在它需要连接到其他人时,或者如何通过端口 8443 使用 SSL(我知道如何做已经设置好了)。
最佳答案
更新:
尝试以下方式在 Tomcat 中启用客户端身份验证。
为了使 tomcat 利用客户端身份验证,我们需要三个证书。即 Tomcat 的服务器证书、浏览器的客户端证书和将签署上述两个证书的 CA 证书。在这里,我将展示如何在 Windows 中执行此操作。
有两种方法。
您应该有一个 CSR 文件,即证书签名请求。您可以将其提交给证书颁发机构,如 Verisign或 Comodo或许多其他像他们一样的人。他们会给你证书。或者
您可以创建自己的证书颁发机构并签署证书。但建议仅供个人使用。
您应该安装 Java 和 OpenSSL 才能执行以下步骤。
要生成证书签名请求,您应该有 key 。要生成 key ,请在 CMD 中键入以下命令。
openssl genrsa -out Serverkey.key 1024
这将生成一个文件“Serverkey.key”。 key 大小为1024。您可以根据自己的要求给它。
现在借助以下命令生成 CSR 文件。
openssl req -new -key Serverkey.key -out ServerReq.csr -config /path/to/openssl.cnf
执行此命令后,系统会要求您提供一些信息。之后,您将在您的目录中找到 CSR 文件。您可以将此文件提交给 CA。如果您这样做是为了个人用途,并且您想要拥有自己的 CA,请借助上面给出的两个命令为您的 CA 创建一个 key 和 CSR。获得 CA 的 CSR 后,您可以在以下命令的帮助下使用 CA 的 key 进行签名。
openssl x509 -req -days 365 -in CAReq.csr -signkey CAKey.key -out CA.crt
获得 CA 证书后,您可以使用它来签署其他证书。
openssl x509 -req -days 365 -CA CA.crt -CAkey CAKey.key -CAcreateserial -in ServerReq.csr -out Server.crt
您也可以对客户端证书使用相同的命令。
作为我们客户端的浏览器将接受 P12 格式的证书。 P12 格式是一个包含您的证书和 key 的文件。
要将 CRT 转换为 P12,请使用以下命令。
openssl pkcs12 -export -in Server.crt -inkey ServerKey.key -chain -CAfile CA.crt -out ServerCert.p12
在 tomcat 中,有一个包含 CA 证书的信任库,另一个是包含服务器 key 和证书(p12 文件)的 keystore 。
要将 CA 的证书导入信任库,请使用以下命令。
keytool -import -alias CertAuth -keystore caCerts.jks -file CA.crt
你可以随便给别名。请记下执行上述命令后询问时提供的密码。我们将在 server.xml 文件中使用该密码。同样适用于以下命令。
要将 p12 格式证书导入 keystore ,请使用以下命令。
keytool -importkeystore -destkeystore tomcat.keystore -srckeystore -ServerCert.p12 -srcstoretype PKCS12 -alias 1
现在,将 tomcat 的 server.xml 更改如下。
<Connector port="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true" scheme="https" secure="true"
truststoreFile="path/to/truststorefile" truststorePass="password"
keystoreFile="path/to/keystorefile" keystorePass="password"
clientAuth="true" sslProtocol="TLS"
/>
现在,将客户端的P12格式证书导入浏览器。然后,启动tomcat服务器,尝试访问https://localhost:8443。您可以访问blog对于这个答案的详细版本。希望这会有所帮助。
关于使用 SSL 的 Tomcat 客户端身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1552345/
我正在使用SQL Server 2008 R2,并且想创建一个触发器。 对于每个添加(仅添加),将像这样更新一列: ABC-CurrentYear-AutoIncrementCode 例子: ABC-
是否可以在显示最终一致性的数据存储中创建/存储用户帐户? 似乎不可能在没有一堆架构复杂性的情况下管理帐户创建,以避免可能发生具有相同 UID(例如电子邮件地址)的两个帐户的情况? 最终一致性存储的用户
您好, 我有一个带有 Identity 的 .NetCore MVC APP并使用 this指导我能够创建自定义用户验证器。 public class UserDomainValidator : IU
这与以下问题相同:HiLo or identity? 我们以本站的数据库为例。 假设该站点具有以下表格: 帖子。 投票。 注释。 使用它的最佳策略是什么: 身份 - 这是更常见的。 或者 HiLo -
我想将 Blazor Server 与 ASP.NET Identity 一起使用。但我需要使用 PostgreSQL 作为用户/角色存储,因为它在 AWS 中。 它不使用 EF,这是我需要的。 我创
我正在开发一个 .NET 应用程序,它可以使用 Graph API 代表用户发送电子邮件。 提示用户对应用程序进行授权;然后使用获取的访问 token 来调用 Graph API。刷新 token 用
我使用 ASP.NET 身份和 ClaimsIdentity 来验证我的用户。当用户通过身份验证时,属性 User.Identity 包含一个 ClaimsIdentity 实例。 但是,在登录请求期
所以我在两台机器上都安装了 CYGWIN。 如果我这样做,它会起作用: ssh -i desktop_rsa root@remoteserver 这需要我输入密码 ssh root@remoteser
我尝试在 mac osx 上的终端中通过 telnet 连接到 TOR 并请求新身份,但它不起作用,我总是收到此错误消息: Trying 127.0.0.1... telnet: connect to
我正在开发一个 .NET 应用程序,它可以使用 Graph API 代表用户发送电子邮件。 提示用户对应用程序进行授权;然后使用获取的访问 token 来调用 Graph API。刷新 token 用
我正在开发一项服务,客户可以在其中注册他们的 webhook URL,我将发送有关已注册 URL 的更新。为了安全起见,我想让客户端(接收方)识别是我(服务器)向他们发送请求。 Facebook和 G
在 Haskell 中,有没有办法测试两个 IORef 是否相同?我正在寻找这样的东西: IORef a -> IORef a -> IO Bool 例如,如果您想可视化由 IORef 组成的图形,这
我是 .NET、MVC 和身份框架的新手。我注意到身份框架允许通过注释保护单个 Controller 操作。 [Authorize] public ActionResult Edit(int? Id)
我有一列具有身份的列,其计数为19546542,我想在删除所有数据后将其重置。我需要类似ms sql中的'dbcc checkident'这样的内容,但在Oracle中 最佳答案 在Oracle 12
这是我用来创建 session 以发送电子邮件的代码: props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enabl
我想了解 [AllowAnonymous] 标签的工作原理。 我有以下方法 [HttpGet] public ActionResult Add() { return View(); } 当我没
在使用沙盒测试环境时,PayPal 身份 token 对某些人显示而不对其他人显示的原因是否有任何原因。 我在英国使用 API,终生无法生成或找到 token 。 我已经遵循协议(protocol)并
我对非常简单的事情有一些疑问:IDENTITY。我尝试在 phpMyAdmin 中创建表: CREATE TABLE IF NOT EXISTS typEventu ( typEventu
习语 #1 和 #5 是 FinnAPL Idiom Library两者具有相同的名称:“Progressive index of (without replacement)”: ((⍴X)⍴⍋⍋X⍳
当我第一次在 TFS 中设置时,我的公司拼错了我的用户名。此后他们将其更改为正确的拼写,但该更改显然未反射(reflect)在 TFS 中。当我尝试 checkin 更改时,出现此错误: 有没有一种方
我是一名优秀的程序员,十分优秀!