自建CA证书,使用docker部署java程序支持https双向认证

1、证书准备

1.1 自建证书

win下创建CA证书,请查阅win系统下基于springboot实现https的双向认证的相关内容噢。
Linux下创建CA证书,请查阅Linux系统下基于springboot实现https的双向认证的相关内容噢。

1.2 相关文件

图1

2、docker部署

2.1 环境准备

服务器信息如下:
操作系统 ip 说明
Centos 7 192.168.0.202 作为服务端

浏览器采用chrome。

2.2 操作步骤

2.2.1 Dockerfile文件
1、将【sslTestClient.cer】、【sslTestServer.cer】文件上传至服务器某目录下
图2
2、创建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:

图3

3.2 Postman测试

3.2.1 未添加证书时请求:
图4
3.2.2 添加证书后请求:
图5

图6

使用postman添加客户端证书后,可正常访问数据:


图7

至此,使用docker部署java程序支持https双向认证实现完毕。
java代码实现https请求,请参考自建CA证书,java实现通过OkHttpClient发送https(验证ca证书)请求

你可能感兴趣的:(自建CA证书,使用docker部署java程序支持https双向认证)