gpt4 book ai didi

Tomcat 和 SSL 客户端证书

转载 作者:行者123 更新时间:2023-11-28 21:50:45 27 4
gpt4 key购买 nike

我想有一个场景:

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

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

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

最佳答案

是的,这当然是可能的,我已经做到了。如果您使用包含您的 CA 证书的信任库配置 Tomcat,那么它应该接受该 CA 签署的任何客户端证书。

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

首先生成您的服务器 key ,以及相应的 CSR

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

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

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

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

这个 .p12 文件现在可以充当 Tomcat 的 keystore。接下来,您需要创建一个单独的 JKS keystore ,其中仅包含用作 truststore 的 CA 证书。

$ 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" />

关于Tomcat 和 SSL 客户端证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11578054/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com