gpt4 book ai didi

Tomcat 服务器/客户端自签名 SSL 证书

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

我有一个使用自签名 SSL 证书运行的 Apache Tomcat 6.x 服务器。我希望客户端向服务器出示他们自己的证书,以便我可以根据用户数据库对他们进行身份验证。我根据我在网上找到的一个例子让这一切正常工作,但这个例子带有 jar 装证书和一个预构建的 JKS 数据存储。我想用我自己的证书创建我自己的数据存储,但我没有运气。

如何为 Tomcat 创建数据存储?
如何为 Tomcat 创建自签名证书?

如何为客户端创建自签名证书?
如何强制Tomcat信任客户端的签名?

我已经使用 java keytool 玩了好几个小时了。

最佳答案

终于找到了我的问题的解决方案,所以如果有人遇到困难,我会在此处发布结果。

感谢 Michael's Software Thoughts & Ramblings 的迈克尔·马丁我发现:

keytool by default uses the DSA algorithm when generating the self-signed cert. Earlier versions of Firefox accepted these keys without problem. With Firefox 3 beta 5, using DSA doesn't work, but using RSA does. Passing "-keyalg RSA" when generating the self-signed certificate creates a cert the Firefox 3 beta 5 fully accepts.

我只是设置了那个标志,清除了 FireFox 中的所有缓存,它就像一个魅力!我正在使用它作为我项目的测试设置,我需要与其他人分享它,所以我写了一个小的批处理脚本来创建两个 SSL 证书。一个可以放入 Tomcat 安装程序中,另一个是可以导入 FireFox/IE 的 .p12 文件。谢谢!

用法:第一个命令行参数是客户端的用户名。所有密码都是“password”(不带引号)。更改任何硬编码位以满足您的需求。

@echo off
if "%1" == "" goto usage

keytool -genkeypair -alias servercert -keyalg RSA -dname "CN=Web Server,OU=Unit,O=Organization,L=City,S=State,C=US" -keypass password -keystore server.jks -storepass password
keytool -genkeypair -alias %1 -keystore %1.p12 -storetype pkcs12 -keyalg RSA -dname "CN=%1,OU=Unit,O=Organization,L=City,S=State,C=US" -keypass password -storepass password
keytool -exportcert -alias %1 -file %1.cer -keystore %1.p12 -storetype pkcs12 -storepass password
keytool -importcert -keystore server.jks -alias %1 -file %1.cer -v -trustcacerts -noprompt -storepass password
keytool -list -v -keystore server.jks -storepass password
del %1.cer
goto end

:usage
echo Need user id as first argument: generate_keystore [username]
goto end

:end
pause

结果是两个文件。一个名为 server.jks 的文件放入 Tomcat,另一个名为 {username}.p12 的文件导入浏览器。 server.jks 文件将客户端证书添加为可信证书。

我希望其他人觉得这很有用。

这是需要添加到您的 Tomcat conf/sever.xml 文件中的 XML(仅在 Tomcat 6.x 上测试过)

<Connector
clientAuth="true" port="8443" minSpareThreads="5" maxSpareThreads="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="${catalina.home}/conf/server.jks"
keystoreType="JKS" keystorePass="password"
truststoreFile="${catalina.home}/conf/server.jks"
truststoreType="JKS" truststorePass="password"
SSLVerifyClient="require" SSLEngine="on" SSLVerifyDepth="2" sslProtocol="TLS"
/>

对于 Tomcat 7:

<Connector protocol="org.apache.coyote.http11.Http11NioProtocol"
port="8443" SSLEnabled="true"
maxThreads="200" scheme="https" secure="true"
keystoreFile="${catalina.base}/conf/server.jks" keystorePass="password"
clientAuth="false" sslProtocol="TLS" />

关于Tomcat 服务器/客户端自签名 SSL 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1180397/

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