gpt4 book ai didi

java.io.IOException : parseAlgParameters failed: PBE AlgorithmParameters not available, 当 docker 容器尝试访问 rabbitmq TLS 端口时导致

转载 作者:行者123 更新时间:2023-12-04 22:40:45 28 4
gpt4 key购买 nike

我正在尝试通过 TLS 端口从运行 maven spring-boot 应用程序客户端的 docker 容器连接到 RabbitMQ 实例。
虽然我已经更新了 java.security 与行:
security.provider.10=org.bouncycaSTLe.jce.provider.BouncyCaSTLeProvider
我还添加了 的 jar充气城堡 在容器内部并通过 maven 安装它,并将依赖项添加到项目的父 pom 中。一个异常不断弹出:

*java.io.IOException: parseAlgParameters failed: PBE AlgorithmParameters not available*

...

*Caused by: java.security.NoSuchAlgorithmException: PBE AlgorithmParameters not available*
在通过容器运行 Rabbitmq 客户端之前,我在 Ubuntu 操作系统上本地运行它,它运行良好。 ( https://www.rabbitmq.com/ssl.html ,示例 2)
Docker 容器是启用主机的容器,.p12 和 rabbitstore 文件在容器内成功交付。容器使用jdk1.8,通过rabbitmq的非TLS端口连接成功。
异常原因似乎出现在这部分代码中:
 *char[] keyPassphrase = "lerum".toCharArray();*

*KeyStore ks = KeyStore.getInstance("PKCS12");*

*ks.load(new FileInputStream("test.p12"), keyPassphrase);*
有谁知道它可以关闭吗?
Dockerfile:
FROM maven:3.6.0-jdk-8 AS build

COPY /test.p12 test.p12

COPY /certification.pem certification.pem

COPY /jdk-8u241-linux-x64.tar.gz .

COPY /Scripts/install-java.sh .

COPY /jdk-8u241-linux-x64.tar.gz .

COPY /bcprov-ext-jdk15to18-167.jar /docker-java-home/jre/lib/ext/

COPY /java.security /docker-java-home/jre/lib/security/

#installing java

RUN yes | /install-java.sh -f /jdk-8u241-linux-x64.tar.gz

#environmental variables

RUN export JAVA_HOME=/docker-java-home/jre/lib/ext:$JAVA_HOME

#Bouncy Castle install

RUN mvn install:install-file -Dfile=bcprov-ext-jdk15to18-167.jar -DgroupId=org.bouncycastle -DartifactId=bcprov-jdk15on -Dversion=1.67 -Dpackaging=jar

RUN printf 'lerum\lerum\nyes' | keytool -import -alias server1 -file certification.pem -keystore rabbitstore

RUN mvn clean install

ENTRYPOINT ["/bin/bash","irrelevat.sh"]

最佳答案

几个月后回到这里报告我当时修复它的方式,简而言之,我改变了导入新安全库的整个概念。删除了 bouncy-caSTLe 导入,因为它毕竟是不必要的。在名为 Certificates 的文件夹中使用 tls-gen 创建证书,然后修改 Dockerfile,在 Dockerfile 的开头添加以下行。

COPY /Certificates /opt/test/Certificates

RUN keytool -import -alias dockervm -file /opt/test/Certificates/server_certificate.pem -keystore /opt/test/keyStore -storepass lerum -noprompt
确保 tls-gen 生成的文件被导入到 docker 实例(Certificates 文件夹)的 Rabbitmq 配置中,在 Rabbitmq 配置文件( https://www.rabbitmq.com/ssl.html#enabling-tls)中也有引用。我禁用了兔子的 tcp 监听器,并且还使用了 TLSv1.3,因为 v1.2 存在问题。这解决了问题并达到了我的目的。

关于java.io.IOException : parseAlgParameters failed: PBE AlgorithmParameters not available, 当 docker 容器尝试访问 rabbitmq TLS 端口时导致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64741385/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com