1、证书准备
1.1 自建证书
win下创建CA证书,请查阅win系统下基于springboot实现https的双向认证的相关内容噢。
Linux下创建CA证书,请查阅Linux系统下基于springboot实现https的双向认证的相关内容噢。
1.2 相关文件
图12、docker部署
2.1 环境准备
服务器信息如下:
操作系统 | ip | 说明 |
---|---|---|
Centos 7 | 192.168.0.202 | 作为服务端 |
浏览器采用chrome。
2.2 操作步骤
2.2.1 Dockerfile文件
1、将【sslTestClient.cer】、【sslTestServer.cer】文件上传至服务器某目录下
图22、创建Dockerfile文件
FROM java:8
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
VOLUME /tmp
COPY ./sslTestClient.cer /tmp/
COPY ./sslTestServer.cer /tmp/
RUN \
cd $JAVA_HOME/jre/lib/security \
&& sh -c '/bin/echo -e "y" | keytool -import -alias sslTestClient -file /tmp/sslTestClient.cer -keystore $JAVA_HOME/jre/lib/security/cacerts --storepass changeit -v'
RUN \
cd $JAVA_HOME/jre/lib/security \
&& sh -c '/bin/echo -e "y" | keytool -import -alias sslTestServer -file /tmp/sslTestServer.cer -keystore $JAVA_HOME/jre/lib/security/cacerts --storepass changeit -v'
ADD STSONG.TTF /usr/share/fonts/STSONG.TTF
ADD test-1.0.0.jar app.jar
RUN bash -c 'touch /app.jar'
EXPOSE 8000
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
部分命令解释:
// 将服务器路径下的【*.cer】文件copy至docker容器内部
COPY ./sslTestClient.cer /tmp/
// 将客户端/服务端公钥导入的服务端/客户端jdk信任库
RUN \
cd $JAVA_HOME/jre/lib/security \
&& sh -c '/bin/echo -e "y" | keytool -import -alias sslTestClient -file /tmp/sslTestClient.cer -keystore $JAVA_HOME/jre/lib/security/cacerts --storepass changeit -v'
// 相当于输入y命令:是否信任此证书,输入y
sh -c '/bin/echo -e "y"
// 相当于输入密码,默认密码:changeit
--storepass changeit
2.2.2 build
docker build -t test/ca:1.0 .
3、测试
3.1 浏览器输入url:
图33.2 Postman测试
3.2.1 未添加证书时请求:
图43.2.2 添加证书后请求:
图5图6
使用postman添加客户端证书后,可正常访问数据:
图7
至此,使用docker部署java程序支持https双向认证实现完毕。
java代码实现https请求,请参考自建CA证书,java实现通过OkHttpClient发送https(验证ca证书)请求
。
网友评论