赞
踩
背景:基线扫描时,docker镜像中的tomcat在检查是否支持HTTPS等加密协议这一项上未通过。
思路:先通过JDK自带的keytool工具生成证书,再从tomcat的server.xml配置文件中增加配置。
我不确定不同版本的JDK生成的证书是否可以通用,所以我使用镜像自带的jdk生成证书,
因为我使用的是docker镜像运行项目,所以我先进入容器内部,使用jdk生成证书,让后导出证书,放到dockerfile文件中,每次打包都打进镜像。
解决方案:
1、进入容器内部:
docker exec -it nginx_latest bash #nginx_latest是容器名;
2、生成证书:
/usr/local/openjdk-11/bin/keytool -genkey –alias tomcat –keyalg RSA -keystore /path/to/my/keystore
/usr/local/openjdk-11是你的jdk路径,/path/to/my/keystore是生成的证书路径,
注意:
(1)、生成证书的命令从网页上复制后执行可能会有报错, 最好是对比着手敲一遍,不知道是不是编码格式的问题。
(2)、keystore是一个文件不是一个目录,会在/path/to/my目录下生成一个keystore证书文件。
(3)执行这个指令后,会让输两次密码,然后输姓,输工作单位,所在地市,地市编码,最后确认。每次都会给提示让输入什么,每次输入完回车就可以。
3、从容器中导出证书:
docker cp 容器id或名称:容器内地址 容器外地址 如:docker cp mysql:/path/to/my/keystore /root
4、打镜像:
把keystore文件和dockerfile文件放再一起,然后在dockerfile文件上加上
COPY keystore /usr/local/tomcat/keystore
5、配置server.xml:
<Connector classname="org.apache.catalina.http.HttpConnector"
port="8443" protocol="HTTP/1.1" minProcessors="5"
SSLEnabled="true"
maxprocessors="100"
enableLookups="true" acceptCount="10" debug="0"
scheme="https"
Factory_classname="org.apache.catalina.SSLServerSocketFactory"
secure="true"
clientAuth="false"
keystoreFile="/usr/local/tomcat/keystore"
keystorePass="pwssword"
sslProtocol="TLS"/>
keystoreFile="/usr/local/tomcat/keystore" 这个是存放的地址;keystorePass="pwssword" 这个是密码。
然后再运行镜像就可以了。
如果不是docker运行的项目,只需要执行第2步和第5步就可以;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。