tomcat 配置https 双向认证

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版本一致
解决办法: 直接将脚本放在服务器上执行将本地版本与服务器一致

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dan淡淡的心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值