Docker容器中的应⽤调⽤HTTPS出现500错误的处理⽅式
⽂章⽬录
⼀、场景描述
  在 JAVA 应⽤中通过 HttpClient 调⽤外部 https 协议的接⼝抛出 x509:certificate signed by unknown authority 的错误,导致容器内部应⽤程序的接⼝返回 500 的错误。
docker进入容器
⼆、问题分析
  我们在构建 Docker 镜像时⼀般都采⽤的是 Alpine Linux 系统,默认是不带 ca-certificates 根证书的,导致⽆法识别外部 https 携带的数字证书。为了解决证书验证的问题,我们要在构建 Docker 基础镜像的时候把 ca-certificates 根证书安装上,这样就能识别来⾃外部https 的数字证书了。
三、解决⽅案
在构建基础镜像的时候加上 ca-certificates 根证书
RUN apk update && apk upgrade && apk add ca-certificates && update-ca-certificates &&rm -rf /var/cache/apk/*
如果基础镜像不想重复构建,则可以进⼊依赖了基础镜像后进⾏安装
# 进⼊容器
docker exec -it 容器名称/容器ID sh or bash
# 安装根证书
RUN apk update && apk upgrade && apk add ca-certificates && update-ca-certificates &&rm -rf /var/cache/apk/*
# 退出容器
exit
# 重启容器
docker restart 容器名称/容器ID
P.S
出现如下警告可以忽略
WARNING: does not contain exactly on certificate or CRL:
skipping

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。