2025年5月24日 星期六 乙巳(蛇)年 二月廿六 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 服务器 > Tomcat

tomcat 配置https 双向认证

时间:06-27来源:作者:点击数:38

1. 生成https证书

本方案生成证书需要java环境

1.1 Linux生成脚本

  • #!/bin/bash
  • echo -e "\033[30m服务器证书生成\033[0m"
  • #ip或域名
  • ip=127.0.0.1
  • if [ $# -gt 0 ]
  • then
  • ip=$1
  • fi
  • #证书密码
  • password=123456
  • #签发证书时间长度(天)
  • duration=365
  • # 清空缓存
  • echo "清空缓存"
  • rm -f server.keystore client.p12 client.cer
  • #生成服务端server证书
  • echo "生成server端证书"
  • keytool -genkey -alias server -keypass $password -keyalg RSA -keysize 1024 -keystore server.keystore -validity $duration -storepass $password <<!
  • $ip
  • lhDream
  • lhDream
  • lhDream
  • lhDream
  • ch
  • y
  • !
  • #生成用户端clinet证书 (单向验证不需要以下部分,有了也不影响)
  • echo "生成client端证书"
  • keytool -genkey -alias client -keyalg RSA -storetype PKCS12 -keystore client.p12 -keypass $password -storepass $password <<!
  • $ip
  • lhDream
  • lhDream
  • lhDream
  • lhDream
  • ch
  • y
  • !
  • #把客户端证书导出为一个单独的CER文件
  • echo "把客户端证书导出为一个单独的CER文件"
  • keytool -export -alias client -keystore client.p12 -storetype PKCS12 -storepass $password -keypass $password -file client.cer <<!
  • $password
  • !
  • #导入到服务器的证书库,添加为一个信任证书
  • echo "导入到服务器的证书库,添加为一个信任证书"
  • keytool -import -v -file client.cer -keystore server.keystore -storepass $password <<!
  • y
  • !
  • #"查看服务器的证书库"
  • echo "查看服务器的证书库"
  • keytool -list -v -keystore server.keystore <<!
  • $password
  • !
  • keytool -keystore server.keystore -export -alias server -file server.cer <<!
  • $password
  • !

1.2 windows下生成步骤

1.2.1 生成server端证书
  • keytool -genkey -alias server -keypass 123456 -keyalg RSA -keysize 1024 -keystore server.keystore -validity 365 -storepass 123456
  • >127.0.0.1(ip或域名)
  • >lhDream1 单位名称
  • >lhDream2 组织名称
  • >lhDream3 城市或区域名称
  • >hDream4 所在省/市/自治区名称
  • >ch 国家/地区代码
1.2.2 生成client端证书
  • keytool -genkey -alias client -keyalg RSA -storetype PKCS12 -keystore client.p12 -keypass 123456 -storepass 123456
  • >127.0.0.1(ip或域名)
  • >lhDream1 单位名称
  • >lhDream2 组织名称
  • >lhDream3 城市或区域名称
  • >hDream4 所在省/市/自治区名称
  • >ch 国家/地区代码
1.2.3 把客户端证书导出为一个单独的CER文件
  • keytool -export -alias client -keystore client.p12 -storetype PKCS12 -storepass 123456 -keypass 123456 -file client.cer
1.2.4 导入到服务器的证书库,添加为一个信任证书
  • keytool -import -v -file client.cer -keystore server.keystore -storepass 123456
  • >y
1.2.5 查看服务器的证书库(确定是否导入成功)
  • keytool -list -keystore server.keystore
  • >123456 (密码)

2. 配置tomcat

server.xml 配置开启https验证:SSLEnabled=“true” 表示开启https,clientAuth="true"表示开启双向验证

  • <Connector port="8080" protocol="HTTP/1.1" SSLEnabled="true"
  • connectionTimeout="20000"
  • maxThreads="150"
  • scheme="https"
  • secure="true"
  • clientAuth="true"
  • sslProtocol="TLS"
  • keystoreFile="/opt/gbServer/lib/https/server.keystore"
  • keystorePass="123456"
  • truststoreFile="/opt/gbServer/lib/https/server.keystore"
  • truststorePass="123456"/>

web.xml 配置http自动转https

ps : 有时有用有时无用、等找到其他方案再改。

  • <login-config>
  • <!-- Authorization setting for SSL -->
  • <auth-method>CLIENT-CERT</auth-method>
  • <realm-name>Client Cert Users-only Area</realm-name>
  • </login-config>
  • <security-constraint>
  • <!-- Authorization setting for SSL -->
  • <web-resource-collection>
  • <web-resource-name>SSL</web-resource-name>
  • <url-pattern>/*</url-pattern>
  • </web-resource-collection>
  • <user-data-constraint>
  • <transport-guarantee>CONFIDENTIAL</transport-guarantee>
  • </user-data-constraint>
  • </security-constraint>
  • <!--
  • Require HTTPS for everything except /img (favicon) and /css.
  • -->
  • <security-constraint>
  • <web-resource-collection>
  • <web-resource-name>HTTPSOrHTTP</web-resource-name>
  • <url-pattern>*.ico</url-pattern>
  • <url-pattern>/img/*</url-pattern>
  • <url-pattern>/css/*</url-pattern>
  • </web-resource-collection>
  • <user-data-constraint>
  • <transport-guarantee>NONE</transport-guarantee>
  • </user-data-constraint>
  • </security-constraint>

3. client端安装证书

  • 直接运行 clinent.p12全部默认选项安装即可
  • 之后输入 https://127.0.0.1:8080 访问网站会提示选择证书,点击确定即可正常登录

4. 异常解决

4.1 Invalid keystore format

tomcat运行环境 java版本要与 证书生成的java版本一致

解决办法: 直接将脚本放在服务器上执行 或 将本地版本与服务器一致

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门