解决kkfileview 使用https预览问题记录

**场景:**项目使用了开源的kkfileview进行文件在线预览,部署方式使用的是docker,使用IP进行访问,但是http协议直接访问有漏洞告警,现在需要调整为https,且仍然需要使用IP访问。

kkfileview官网kkFileView - 在线文件预览

问题:使用自签证书将web中间件访问方式调整为https,代理kkfile容器8012端口,后预览图片正常,预览其他类型文件提示如下错误

错误信息:

下载失败:org.springframework.web.client.ResourceAccessException: I/O error on GET request for "https://192.168.1.1:80/api/admin/image/local/c639a28c6e4b4278b8c93ff94352957a.txt": sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; nested exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

解决方法:

1.重新自包含签证书SAN(Subject Alternative Name)的证书

bash 复制代码
openssl genrsa -out server.key 2048

cat >server.cnf<<EOF
[req]  
default_bits = 2048  
prompt = no  
default_md = sha256  
distinguished_name = dn  
req_extensions = req_ext  

[dn]  
C = CN  
ST = Province  
L = City  
O = Organization  
OU = Organizational Unit  
CN = test  

[req_ext]  
subjectAltName = @alt_names  

[alt_names]  
# 如果需要,可以添加更多的DNS或IP地址 
#DNS.1 = baidu.com   
IP.1 = 192.168.1.1
IP.2 = 192.168.1.2
EOF

openssl req -new -sha256 -key server.key -config server.cnf -out server.csr

openssl x509 -req -days 3650 -in server.csr -signkey server.key -extfile server.cnf -extensions req_ext -out server.crt

2.修改Dockerfile把证书加入到kkfile的jdk环境

bash 复制代码
cat >Dockerfile<<EOF
FROM keking/kkfileview:v4.4.0
MAINTAINER hello
ADD server.crt /opt/
RUN keytool -import -alias myServer -file /opt/server.crt -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit -noprompt
ENTRYPOINT ["java","-Dfile.encoding=UTF-8","-Dspring.config.location=/opt/kkFileView-4.4.0-beta/config/application.properties","-jar","/opt/kkFileView-4.4.0-beta/bin/kkFileView-4.4.0-beta.jar"]
EOF

docker build -t keking/kkfileview:v4.4.1 .

3.使用新镜像重新启动kkfileview

bash 复制代码
docker stop kkfile && docker rm kkfile
docker run -d -p 8012:8012 -e KK_BASE_URL="https://192.168.1.1" --name kkfile keking/kkfileview:v4.4.1

4.替换web中间件的自签证书,重新加载web服务,验证预览

相关推荐
小天源10 小时前
让访问数据可解释:IP 地球大屏、地区库更新与运行维护设计
网络·网络协议·tcp/ip
万年咸鱼12 小时前
WebSocket、Socket 与 HTTP 的区别详解
websocket·网络协议·http
9527出列12 小时前
基于oss的断点续传实现
http·性能优化
万年咸鱼12 小时前
HTTPS 是如何保证传输安全的?
网络协议·安全·https
隐擎fox12 小时前
深入 Android 移动端风控与协议层对抗:内核级虚拟环境检测、网络堆栈特征伪装与住宅 IP 协同实战
android·网络·python·网络协议·tcp/ip
Da Da 泓13 小时前
[项目] --- 基于websocket的网页五子棋(可多用户)
网络·websocket·网络协议·多线程·项目
步行cgn14 小时前
HTTP 常用请求方法详解
网络·网络协议·http
2501_9159090616 小时前
抓包工具断点拦截是什么?如何半路拦截修改 HTTP 请求
网络协议·计算机网络·网络安全·adb·https·udp
壹知16 小时前
三台路由器,一条静态路由都没配错,ping 依然不通
网络协议
幸福清风17 小时前
从域名到一行 nginx 配置:一次站点 HTTPS 证书更换与排障复盘
python·nginx·https