에서 우분투 18.04 ,이 오류는 다른 원인이있다 (로부터 JEP 229, 스위치 jks
받는 키 스토어의 기본 형식 pkcs12
형식, 데비안은 새 파일에 대한 기본 사용하여 파일 생성을 cacerts로) 및 해결 방법 :
# Ubuntu 18.04 and various Docker images such as openjdk:9-jdk throw exceptions when
# Java applications use SSL and HTTPS, because Java 9 changed a file format, if you
# create that file from scratch, like Debian / Ubuntu do.
#
# Before applying, run your application with the Java command line parameter
# java -Djavax.net.ssl.trustStorePassword=changeit ...
# to verify that this workaround is relevant to your particular issue.
#
# The parameter by itself can be used as a workaround, as well.
# 0. First make yourself root with 'sudo bash'.
# 1. Save an empty JKS file with the default 'changeit' password for Java cacerts.
# Use 'printf' instead of 'echo' for Dockerfile RUN compatibility.
/usr/bin/printf '\xfe\xed\xfe\xed\x00\x00\x00\x02\x00\x00\x00\x00\xe2\x68\x6e\x45\xfb\x43\xdf\xa4\xd9\x92\xdd\x41\xce\xb6\xb2\x1c\x63\x30\xd7\x92' > /etc/ssl/certs/java/cacerts
# 2. Re-add all the CA certs into the previously empty file.
/var/lib/dpkg/info/ca-certificates-java.postinst configure
Status (2018-08-07) 버그는 Ubuntu Bionic LTS 18.04.1 및 Ubuntu Cosmic 18.10에서 수정되었습니다.
bun 우분투 1770553 : [SRU] backport ca-certificates-java from cosmic (20180413ubuntu1)
bun 우분투 1769013 : ca-certificates-java 20180413 (main)을 데비안 불안정 (main)에서 병합하십시오.
bun Ubuntu 1739631 : JDK 9로 새로 설치하면 생성 된 PKCS12 cacerts 키 저장소 파일을 사용할 수 없습니다
er docker-library 145 : 9-jdk 이미지에 SSL 문제가 있습니다
bian 데비안 894979 : ca-certificates-java : OpenJDK 9에서 작동하지 않습니다. 응용 프로그램이 InvalidAlgorithmParameterException으로 실패합니다 : trustAnchors 매개 변수는 비어 있지 않아야합니다
🗹 JDK-8044445 : JEP 229 : 기본적으로 PKCS12 키 저장소 작성
🖺 JEP 229 : 기본적으로 PKCS12 키 저장소 작성
이 해결 방법 후에도 문제가 계속되면 방금 수정 한 Java 배포를 실제로 실행 중인지 확인할 수 있습니다.
$ which java
/usr/bin/java
다음을 사용하여 Java 대안을 'auto'로 설정할 수 있습니다.
$ sudo update-java-alternatives -a
update-alternatives: error: no alternatives for mozilla-javaplugin.so
실행중인 Java 버전을 다시 확인할 수 있습니다.
$ java --version
openjdk 10.0.1 2018-04-17
OpenJDK Runtime Environment (build 10.0.1+10-Ubuntu-3ubuntu1)
OpenJDK 64-Bit Server VM (build 10.0.1+10-Ubuntu-3ubuntu1, mixed mode)
대체 해결 방법도 있지만, 그 결과 자체적으로 부작용이있어 향후 추가적인 유지 보수가 필요합니다.
차선책은 행을 추가하는 것입니다
javax.net.ssl.trustStorePassword=changeit
파일에
/etc/java-9-openjdk/management/management.properties
/etc/java-11-openjdk/management/management.properties
존재하는 것
세 번째로 가장 문제가 적은 해결 방법은
keystore.type=pkcs12
에
keystore.type=jks
파일에서
/etc/java-9-openjdk/security/java.security
/etc/java-11-openjdk/security/java.security
둘 중 하나가 존재하는 경우 cacerts
파일 을 제거 하고 게시물 맨 위에있는 해결 방법 스크립트의 마지막 행에 설명 된 방식으로 파일을 재생성하십시오.