ข้อผิดพลาด - พารามิเตอร์ trustAnchors ต้องไม่ว่างเปล่า


492

ฉันกำลังพยายามกำหนดค่าอีเมลของฉันบน Jenkins / Hudson และฉันได้รับข้อผิดพลาด:

java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be
    non-empty

ฉันเห็นข้อมูลจำนวนมากทางออนไลน์เกี่ยวกับข้อผิดพลาด แต่ฉันไม่ได้ทำงานเลย ฉันใช้ JDK ของ Sun บน Fedora Linux (ไม่ใช่ OpenJDK)

นี่คือบางสิ่งที่ฉันได้ลอง ฉันลองทำตามคำแนะนำจากโพสต์นี้แต่การคัดลอก cacerts จาก Windows ไปยังกล่อง Fedora ของฉันที่โฮสต์ Jenkins ไม่ทำงาน ฉันลองทำตามคำแนะนำนี้ขณะที่ฉันพยายามกำหนดค่า Gmail เป็นเซิร์ฟเวอร์ SMTP ของฉัน แต่มันก็ใช้ไม่ได้ ฉันพยายามดาวน์โหลดและย้ายไฟล์ cacert เหล่านั้นด้วยตนเองและย้ายไปยังโฟลเดอร์ Java ของฉันโดยใช้คำสั่งต่าง ๆ ในคู่มือนี้

ฉันเปิดให้ข้อเสนอแนะใด ๆ ที่ฉันติดอยู่ในขณะนี้ ฉันได้รับการทำงานจากเซิร์ฟเวอร์ Windows Hudson แต่ฉันกำลังดิ้นรนกับ Linux

คำตอบ:


513

ข้อความที่แปลกประหลาดนี้หมายความว่า truststore ที่คุณระบุคือ:

  • ที่ว่างเปล่า
  • ไม่พบหรือ
  • ไม่สามารถเปิดได้ (เนื่องจากสิทธิ์การเข้าถึงเป็นต้น)

ดูเพิ่มเติม @ AdamPlumb ของคำตอบด้านล่าง

ในการแก้ไขปัญหานี้ (ฉันเขียนเกี่ยวกับที่นี่ ) และเข้าใจว่ามีการใช้ truststore ใดคุณสามารถเพิ่มคุณสมบัติ javax.net.debug = ทั้งหมดแล้วกรองบันทึกเกี่ยวกับ truststore คุณยังสามารถเล่นกับคุณสมบัติ javax.net.ssl.trustStore เพื่อระบุ truststore เฉพาะ ตัวอย่างเช่น :


    java -Djavax.net.debug=all -Djavax.net.ssl.trustStore=/Another/path/to/cacerts -jar test_get_https-0.0.1-SNAPSHOT-jar-with-dependencies.jar https://www.calca.com.py 2>&1| grep -i truststore

1
ขอบคุณ EJP ฉันเห็นโพสต์ของคุณที่นี่แต่ฉันไม่แน่ใจว่าจะตรวจสอบ truststore ได้อย่างไร ฉันยังนำไฟล์ server.xml ของฉันมาด้วย แต่ฉันไม่แน่ใจว่าจะตรวจสอบความน่าเชื่อถือของร้านค้าได้อย่างไร ฉันเพิ่งตรวจสอบ keystoreFile = "conf / .keystore" pref (keystoreFile ไม่ได้อยู่ในไฟล์นั้น)?
David Gill

2
คำตอบคือด้วยวิธีที่ฉันนำเข้ามัน ฉันดูเหมือนจะพลาดขั้นตอนสำคัญไปแล้ว ดู [ข้อผิดพลาด Java InvalidAlgorithmParameterException] [1] [1]: jyotirbhandari.blogspot.com/2011/09/ …
David Gill

2
ยืนยันคำตอบนี้ถูกต้อง ฉันได้รับข้อผิดพลาดภายใต้โพง ฉันมี truststore ของฉัน${CATALINA_HOME}\confแต่CATALINA_HOMEไม่ได้รับการตั้งค่าดังนั้น Tomcat จึงมองหา\confที่เชื่อถือได้
SingleShot

4
@BubblewareTechnology ไม่ข้อผิดพลาดอยู่ในชื่อไฟล์ไม่ใช่วิธีการนำเข้าใบรับรองไปยังไฟล์ บล็อกของคุณไม่ถูกต้อง คุณไม่ควรแนะนำให้แก้ไขไฟล์ JRE $ / cacerts มันจะเปลี่ยนการอัพเกรด Java ครั้งถัดไป คุณต้องมีกระบวนการที่คัดลอกเพิ่มใบรับรองของคุณเองลงในสำเนาและใช้สำเนาเป็น truststore ทำซ้ำทุกการอัปเกรด Java และคุณไม่จำเป็นต้องบอก Java เกี่ยวกับ truststore ของตัวเองเลยเพียงแค่ของคุณเองถ้ามันแตกต่างกัน
มาร์ควิสแห่ง Lorne

3
ฉันจะเพิ่มการบิด: ถึงแม้จะมี truststore อยู่ก็สามารถเข้าถึงได้อยู่ในรูปแบบที่ถูกต้องหากเป็น COMPLETELY ว่างนั่นคือข้อผิดพลาดที่คุณได้รับจากไลบรารีต่าง ๆ (รวมถึง Apache HttpClient)
Alan Franzoni

265

ในUbuntu 18.04ข้อผิดพลาดนี้มีสาเหตุที่แตกต่างกัน (JEP 229 เปลี่ยนจากjksรูปแบบเริ่มต้นที่เก็บคีย์เป็นpkcs12รูปแบบและการสร้างไฟล์ Debian 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

สถานะ (2018-08-07)ข้อผิดพลาดได้รับการแก้ไขใน Ubuntu Bionic LTS 18.04.1 และ Ubuntu Cosmic 18.10


🗹 Ubuntu 1770553: [SRU] backport ca-certificate-java จากจักรวาล (20180413ubuntu1)

🗹 Ubuntu 1769013: โปรดรวม ca-certificate-java 20180413 (หลัก) จาก Debian ไม่เสถียร (หลัก)

🗹 Ubuntu 1739631: ติดตั้งใหม่ด้วย JDK 9 ไม่สามารถใช้ไฟล์ keystore PKCS12 cacerts ที่สร้างขึ้น

🗹 docker -library 145: 9-jdk image มีปัญหา SSL

🗹 Debian 894979: ca-certificate-java: ไม่ทำงานกับ OpenJDK 9 แอปพลิเคชันล้มเหลวด้วย InvalidAlgorithmParameterException: พารามิเตอร์ trustAnchors ต้องไม่ว่างเปล่า

🗹 JDK-8044445: JEP 229: สร้างที่เก็บคีย์ PKCS12 ตามค่าเริ่มต้น

🖺 JEP 229: สร้างที่เก็บคีย์PKCS12 ตามค่าเริ่มต้น


หากปัญหายังคงมีอยู่หลังจากการแก้ไขปัญหานี้คุณอาจต้องการตรวจสอบให้แน่ใจว่าคุณใช้การกระจาย Java จริง ๆ ที่คุณเพิ่งแก้ไข

$ which java
/usr/bin/java

คุณสามารถตั้งค่าทางเลือก Java เป็น 'อัตโนมัติ' ด้วย:

$ 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ไฟล์และสร้างใหม่ในลักษณะที่อธิบายไว้ในแถวสุดท้ายของสคริปต์วิธีแก้ปัญหาที่ด้านบนของโพสต์


50
ผู้ใช้ Ubuntu 18 คนอ่านสิ่งนี้! สิ่งนี้จะช่วยชีวิตคุณได้หลายชั่วโมง! ขอบคุณ!
vak

5
คำตอบนี้ช่วยให้ฉันแก้ไขข้อผิดพลาดเดียวกันกับ maven บน Ubuntu 18.04 ฉันต้องเปลี่ยนเจ้าของไฟล์ / etc / ssl / certs / java / cacerts จากรูทเป็นฉันเพื่อให้สามารถเขียนได้ จากนั้นฉันเปลี่ยนมันกลับ
Yuri Gor

77
ฉันวิ่งsudo rm / etc / ssl / certs / java / cacertsจากนั้นsudo update-ca-certificate -fและสิ่งนี้แก้ไขปัญหาของฉันใน kubuntu 18.04
jsn

2
@ jsn ขอบคุณสำหรับการแก้ปัญหาทำงานบนลินุกซ์มิ้นต์ 19 เช่นกันซึ่งขึ้นอยู่กับ Ubuntu 18.04
Samrat

2
โซลูชันของ @ jsn ยังทำงานกับ Debian Stretch + openjdk8
HRJ

105

วิธีนี้แก้ไขปัญหาสำหรับฉันบน Ubuntu:

sudo /var/lib/dpkg/info/ca-certificates-java.postinst configure

(พบได้ที่นี่: https://bugs.launchpad.net/ubuntu/+source/ca-certificates-java/+bug/1396760 )

ca-certificates-java ไม่ใช่การพึ่งพาใน Oracle JDK / JRE ดังนั้นจะต้องติดตั้งอย่างชัดเจน


2
ขอบคุณนี้แก้ไขปัญหาสำหรับฉันเมื่อฉันพบใน Ubuntu 15.04
Macil

ทำงานกับ Raspbian บน Raspberry Pi
Defozo

1
พบปัญหานี้กับ Debian jesse backport ที่เสถียรด้วย OpenJDK8 และปัญหานี้ได้รับการแก้ไข ใช้สิ่งนี้ขณะสร้างภาพนักเทียบท่า :)
Tuxdude

9
ไม่ทำงานบน Ubuntu MATE 18.04 น่าเศร้า ฉันจะลองติดตั้ง Java อีกครั้ง
Pranav A.

1
@codefx - ฉันทำสิ่งที่คุณแนะนำแล้ว แต่ไม่ได้ผล - บน Ubuntu 18.x ด้วย Java 10 (ค่าเริ่มต้น)
mzedeler

69

บน Ubuntu 18.04 สาเหตุที่แท้จริงคือความขัดแย้งระหว่าง openjdk-11-jdk (ซึ่งเป็นค่าเริ่มต้น) และแพ็คเกจอื่น ๆ ขึ้นอยู่กับมัน มันได้รับการแก้ไขแล้วใน Debian และจะรวมอยู่ใน Ubuntu ในไม่ช้า วิธีแก้ปัญหาที่ง่ายที่สุดคือลดระดับจาวาของคุณเป็นเวอร์ชัน 8 โซลูชันอื่น ๆ ที่ใช้ca-certificates-javaมีความซับซ้อนมากขึ้น

ก่อนอื่นให้ลบแพ็คเกจที่ขัดแย้งกัน:

sudo apt-get remove --purge openjdk* java-common default-jdk
sudo apt-get autoremove --purge

ตรวจสอบว่าคุณได้ลบแพ็คเกจที่เกี่ยวข้องทั้งหมดสำเร็จหรือไม่โดย:

sudo update-alternatives --config java

ระบบจะแจ้งให้คุณไม่มี Java สามารถใช้ได้กับการกำหนดค่ามิฉะนั้นวิธีแก้ปัญหานี้ล้มเหลว

จากนั้นติดตั้งแพคเกจที่จำเป็น:

sudo apt-get install openjdk-8-jdk

คำอธิบายนี้ไม่ถูกต้องตามข้อเท็จจริงและแก้ไขปัญหาในแง่เดียวกับการติดตั้ง Windows ใหม่อาจแก้ไขปัญหาได้ ไม่จำเป็นต้องลบแพ็คเกจ Java ทั้งหมด หากคุณต้องการใช้วิธีนี้คุณจะต้องติดตั้งopenjdk-8-jdkแพ็กเกจลบ/etc/ssl/certs/java/cacertsไฟล์และเรียกใช้sudo update-ca-certificates -fซึ่งเป็นวิธีการปัดเศษของการสลับจากpkcs12ไฟล์ cacerts ที่jksจัดรูปแบบเป็นรูปแบบตามที่อธิบายไว้ที่อื่นในหัวข้อนี้
Mikael Gueck

1
@MikaelGueck ในขณะที่ตรรกะดูเหมือนว่าจะอยู่เคียงข้างคุณฉันอยู่ที่นี่เพื่อให้แน่ใจว่าคุณได้ทำสิ่งที่อธิบายไว้ในความคิดเห็นของคุณและในคำตอบที่โหวตมากที่สุดและใน 18.04 นี่เป็นคำตอบเดียวที่ได้ผล ฉันคิดว่า downvote ของคุณควรกลายเป็น upvote หรืออย่างน้อยก็หายไปเพราะมันไม่สมควรอย่างยิ่ง
Andrea Ligios

@AndreaLigios คุณสามารถอ่านสคริปต์ด้วยตัวเองพวกเขาค่อนข้างสั้น พวกเขามีชุด hardcoded ของเส้นทาง JAVA_HOME จาก 8 ถึง 10 พวกเขาลองหนึ่งครั้งพวกเขาเรียกตัวสร้างไฟล์ Debian CA ซึ่งคุณยังสามารถอ่านผ่านซึ่งใช้รูปแบบไฟล์ที่มีอยู่เพราะรหัสตัวจัดการคีย์ JDK ซึ่ง คุณสามารถอ่านผ่านมีโหมดทางเลือกที่เข้ากันได้ หากคอมพิวเตอร์ของคุณรันซอฟต์แวร์อย่างง่ายนี้แตกต่างกันคุณอาจมีปัญหาอื่น ๆ คุณแก้ไขตัวเลือก java ของคุณและโทรหา JVM อื่น ๆ เพราะการลบออกอาจรีเซ็ตทางเลือกใหม่หรือไม่
Mikael Gueck

1
@MikaelGueck ใช่ในหนึ่งในความพยายามก่อนหน้านี้ฉันได้แก้ไขทางเลือก java ของฉันดังนั้นอาจเป็นไปได้ว่า ฉันเป็นคนแรกที่ชอบขุดลงในซอร์สโค้ดและค้นหาว่าสิ่งต่างๆทำงานอย่างไร แต่วันนี้ไม่ใช่เป้าหมายของฉันมันเป็นเพียงหนึ่งในอุปสรรคที่ไม่คาดคิด 5-6 อย่างที่ฉันมีเพื่อให้บรรลุเป้าหมายที่แท้จริงของฉัน คำตอบนี้ทำให้ฉันสามารถแก้ปัญหาในเวลาน้อยกว่า 2 นาที! ฉันควรใช้เวลาดูสคริปต์มากน้อยแค่ไหนและหาทางออกที่ดีกว่า และสำหรับสิ่งที่จะบันทึกบางเมกะไบต์? นี่เป็นเรื่องที่รุนแรง แต่ใช้งานได้ (และไม่ว่าปัญหาจะเป็นอะไร) ดังนั้นจึงขอขอบคุณ OP สำหรับคนที่ยุ่งเหมือนนรก
Andrea Ligios

1
ฉันกำลังมองหาวิธีการแก้ปัญหาเป็นเวลา 2 วันและคำตอบของคุณแก้ไขปัญหาของฉันขอบคุณ ฉันเพิ่งย้ายไป Kubuntu 18.04 สิ่งนี้ใช้ได้กับมัน
guepardomar

55

EJP ตอบคำถามโดยทั่วไป (และฉันรู้ว่านี่เป็นคำตอบที่ยอมรับได้) แต่ฉันเพิ่งจัดการกับ gotcha case-edge และต้องการทำให้โซลูชันของฉันเป็นอมตะ

ฉันมีInvalidAlgorithmParameterExceptionข้อผิดพลาดบนเซิร์ฟเวอร์Jira ที่โฮสต์ซึ่งฉันตั้งค่าไว้ก่อนหน้านี้สำหรับการเข้าถึง SSL เท่านั้น ปัญหาคือฉันได้ตั้งค่าที่เก็บคีย์ของฉันในรูปแบบ PKCS # 12 แต่ truststore ของฉันอยู่ในรูปแบบ JKS

ในกรณีของฉันฉันได้แก้ไขserver.xmlไฟล์ของฉันเพื่อระบุ keystoreType เป็น PKCS แต่ฉันไม่ได้ระบุ truststoreType ดังนั้นค่าเริ่มต้นที่ keystoreType คือค่าเริ่มต้น ระบุ truststoreType อย่างชัดเจนเมื่อจางกึนซอกแก้ไขให้ฉัน


ฉันช่วยคุณแก้ปัญหาให้กับ gotcha ที่เป็นขอบกรณีของคุณ นั่นคือสิ่งที่มันน่าสนใจ
n611x007

2
นี่เป็นปัญหาของฉันอย่างแน่นอน ฉันใช้ Spring Boot 1.4.2.RELEASE และมีที่เก็บฮาร์ดแวร์และซอฟต์แวร์ที่เชื่อถือได้ ฉันระบุผู้ให้บริการและพิมพ์สำหรับ keystore แต่ไม่ใช่ truststore เป็นผลให้ผู้ให้บริการและประเภทที่ไม่ถูกต้องถูกใช้โดย truststore การระบุสิ่งเหล่านั้น (SUN และ JKS) แก้ไขปัญหาได้
Kenco

12
คุณทำสิ่งนี้ได้อย่างไร (windows ที่นี่)
tatsu

2
พบกับแกรนด์ Android ของฉันวันนี้ฉันเกือบจะเข้าใจสิ่งที่คุณพูด แต่คุณไม่ได้พูดว่าจะแก้ปัญหาได้อย่างไร คำตอบที่ไม่เป็นประโยชน์
Lothar

52

ฉันพบโซลูชันนี้จากบล็อกโพสต์การแก้ไขปัญหา trustAnchors เมื่อเรียกใช้ OpenJDK 7 บน OS X :

แก้ไขปัญหา trustAnchors เมื่อรัน OpenJDK 7 บน OS X หากคุณใช้ OpenJDK 7 บน OS X และได้เห็นข้อยกเว้นนี้:

Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors
    parameter must be non-empty

มีวิธีแก้ไขง่ายๆ เพียงลิงก์ในไฟล์ cacerts เดียวกับที่ JDK 1.6 ของ Apple ใช้:

cd $(/usr/libexec/java_home -v 1.7)/jre/lib/security
ln -fsh /System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security/cacerts

คุณต้องทำสิ่งนี้กับ OpenJDK ทุกเวอร์ชั่นที่คุณติดตั้ง เพียงเปลี่ยน-v 1.7เป็นรุ่นที่คุณต้องการแก้ไข รัน/usr/libexec/java_home -Vเพื่อดู JREs และ JDK ทั้งหมดที่คุณติดตั้ง

บางทีพวก OpenJDK สามารถเพิ่มสิ่งนี้ในสคริปต์การติดตั้ง


1
คำสั่ง "ln" ของฉัน (บน OSX 10.6.8) ไม่มีตัวเลือก "h" มันหมายถึงอะไรที่จะทำ?
Andrew Swan

1
อ่าฉันมีคำสั่ง "ln" สองคำสั่งหนึ่งใน / usr / bin (ค่าเริ่มต้น) และหนึ่งคำสั่งใน / bin; หลังมีตัวเลือก "h" และทำงาน
Andrew Swan

ฉันแก้ไขการติดตั้ง 1.6 ที่เชื่อมโยงไปยัง cacerts จากการติดตั้งระบบ 1.8 ด้วยเทคนิค ln นี้ ขอบคุณ!
A21z

1
สำหรับผู้อ่านในอนาคต: ดูเหมือนว่าคุณยังต้องอีก 3 ไฟล์ที่อยู่ในsecurityโฟลเดอร์ ( blacklisted.certs, local_policy.jarและUS_export_policy.jar) สำหรับ Java จะมีความสุข
awksp

@ Peter Kriens ทำไมลิงค์ถึงcacertsอยู่ภายใต้jreไดเรกทอรี?
BAE

45

ใน Ubuntu 12.10 (Quantal Quetzal) หรือใหม่กว่านั้นใบรับรองจะถูกเก็บไว้ในแพ็คเกจca-certificate-java การใช้-Djavax.net.ssl.trustStore=/etc/ssl/certs/java/cacertsจะมารับโดยไม่คำนึงว่าคุณกำลังใช้ JDK อะไรอยู่


54
ฉันพบว่าฉันจำเป็นต้องเรียกใช้update-ca-certificates -fด้วยตนเองเพื่อเติมไฟล์ cacerts
Portablejim

4
@Portablejim ขอบคุณ ความคิดเห็นของคุณแก้ไขปัญหาแรกที่ฉันสร้าง Apache Spark บน Ubuntu 15.04beta
Paul

1
ขอบคุณ @Portablejim ความคิดเห็นของคุณใช้ได้กับฉันใน Ubuntu 15.04
David Berg

ขอบคุณ นี่เป็นการแก้ไขปัญหาของฉันกับ PhpStrom + แพตช์ JDK ฉันเขียนรหัสนี้ลงในไฟล์ "phpstorm64.vmoptions"
วิจิตร

ไม่ทำงานสำหรับฉันใน Ubuntu 18.04 และ JDK คือ 1.8.0_62
Devendra Singraul

34

ฉันพบปัญหานี้ใน OS X โดยใช้ JDK 1.7 หลังจากอัปเกรดเป็นOS X v10.9 (Mavericks) การแก้ไขที่ทำงานสำหรับฉันเป็นเพียงแค่ติดตั้งรุ่นแอปเปิ้ลชวาใช้ได้ที่http://support.apple.com/kb/DL1572


ฉันพบสิ่งนี้กับ Java 6 ที่ Grails ใช้บน OSX ฉันยังมี Java 7 จาก Oracle ติดตั้งและอัปเกรดเป็น Mavericks ด้วย การติดตั้ง Java 6 ใหม่จากเว็บไซต์ Apple ยังแก้ไขปัญหาให้ฉันด้วย
pm_labs

วิ่งเข้าไปในสิ่งนี้เมื่อติดตั้ง jdk 6 ที่เปิดอยู่บนกล่องเมฆอูบุนตู ดีใจที่ได้เห็นใบหน้าที่คุ้นเคย BTW
Ben Hutchison

30

ฉันวิ่ง

sudo update-ca-certificates -f

เพื่อสร้างไฟล์ใบรับรองแล้ว:

sudo /var/lib/dpkg/info/ca-certificates-java.postinst configure

ฉันกลับมาทำธุรกิจขอบคุณพวก มันน่าเสียดายที่ไม่รวมอยู่ในการติดตั้ง แต่ฉันไปถึงที่นั่นในตอนท้าย


เมื่อฉันวิ่งsudo /var/lib/dpkg/info/ca-certificates-java.postinst configure**ฉันจะได้รับsudo: /var/lib/dpkg/info/ca-certificates-java.postinst: command not found
Magick

เพียงแค่sudo update-ca-certificates -fเป็นพอ jessie เดมีopenjdk-8-jre-headlessจาก Jessie-backports ตราบใดที่ca-certificates-javaมีการติดตั้ง ฉันคิดว่าลำดับของการติดตั้งมีความสำคัญ (JRE หลังจากนั้นca-certificates-javaอาจทำให้เกิดสิ่งนี้เนื่องจากสิ่งหลังไม่มีตัวกระตุ้นใด ๆ สำหรับ Java 8 backported)
mirabilos

2
sudo /var/lib/dpkg/info/ca-certificates-java.postinst configure ไม่มีดาว **
Yu Jiaao

update-ca-certificates -fเป็นสิ่งที่แก้ไขได้ ฉันไม่ต้องการคำสั่งที่ 2
Mark Jeronimus

17

ข้อผิดพลาดบอกว่าระบบไม่สามารถหา truststore ในพา ธ ที่ให้มาพร้อมกับพารามิเตอร์ javax.net.ssl.trustStoreในเส้นทางให้กับพารามิเตอร์

ใน Windows ฉันคัดลอกcacertsไฟล์จากjre/lib/securityลงในไดเรกทอรีการติดตั้ง Eclipse (ที่เดียวกับeclipse.iniไฟล์) และเพิ่มการตั้งค่าต่อไปนี้ในeclipse.ini:

-Djavax.net.ssl.trustStore=cacerts
-Djavax.net.ssl.trustStorePassword=changeit
-Djavax.net.ssl.trustStoreType=JKS

ฉันมีปัญหาบางอย่างเกี่ยวกับเส้นทางไปยัง cacerts (ตัวแปรสภาพแวดล้อม% java_home% ถูกเขียนทับอย่างใด) ดังนั้นฉันจึงใช้วิธีแก้ปัญหาเล็กน้อยนี้

แนวคิดคือการระบุพา ธ ที่ถูกต้องไปยังไฟล์ truststore - เป็นการดีที่จะใช้ความสัมพันธ์ คุณอาจใช้เส้นทางที่แน่นอน

เพื่อให้แน่ใจว่าประเภทร้านค้าเป็น JKS คุณจะต้องรันคำสั่งต่อไปนี้:

keytool -list -keystore cacerts

Keystore type: JKS
Keystore provider: SUN

2
นี่เป็นคำตอบเดียวที่ใช้งานได้จริง ขอบคุณ @razvanone
Akshar Patel

1
ฉันจัดการเพื่อตี "gotcha" ขนาดเล็กหนึ่งรายการ: สามบรรทัดในไฟล์ eclipse.ini ต้องเป็นจริงสามบรรทัดแยกกัน ตอนแรกฉันวางมันทั้งหมดไว้ในหนึ่งบรรทัดและคราสไม่ได้เลือกมัน
SiKing

16

การลบแพ็กเกจ ca-certificate-java และติดตั้งมันใช้งานได้อีกครั้งสำหรับฉัน ( Ubuntu MATE 17.10 (Artful Aardvark))

sudo dpkg --purge --force-depends ca-certificates-java

sudo apt-get install ca-certificates-java

ขอขอบคุณคุณ jdstrand: ความคิดเห็นที่ 1 สำหรับข้อผิดพลาด 983,302 เรื่อง CA-ใบรับรอง Java ล้มเหลวในการติดตั้ง cacerts Java บน oneiric แมวป่า


11

ฉันมีปัญหาด้านความปลอดภัยมากมายหลังจากอัปเกรดเป็นOS X v10.9 (Mavericks):

  • ปัญหา SSL กับ Amazon AWS
  • เพียร์ไม่ได้รับรองความถูกต้องกับ Maven และ Eclipse
  • trustAnchors พารามิเตอร์ต้องไม่ว่างเปล่า

ฉันใช้การอัปเดต Java นี้และแก้ไขปัญหาทั้งหมดของฉัน: http://support.apple.com/kb/DL1572?viewlocale=th


5
ฮึ. Java 6 เป็นเวลาหลายปีที่ผ่านมาการสนับสนุนสาธารณะสิ้นสุดลงและเต็มไปด้วยช่องโหว่ด้านความปลอดภัย Apple เปิดให้ดาวน์โหลดเพื่อให้ซอฟต์แวร์เก่าที่ไม่สามารถรันด้วย Java 7/8 สามารถดำเนินการต่อได้ แต่ไม่ควรใช้สำหรับการเชื่อมต่อ SSL กับบริการบนอินเทอร์เน็ตสาธารณะเช่น 1. AWS, 2. Maven ภาคกลาง 3. อย่างอื่น
Zac Thompson

10

ฉันคาดหวังสิ่งต่าง ๆ เช่นนี้เนื่องจากฉันใช้ JVM สำรองในTalend Open Studioของฉัน(การสนับสนุนในขณะนี้มีอยู่จนกระทั่ง JDK 1.7) ฉันใช้ 8 เพื่อความปลอดภัย ... ต่อไป

  • อัปเดตที่เก็บใบรับรองของคุณ:

    sudo update-ca-certificates -f

แล้วก็

  • เพิ่มค่าใหม่ในพารามิเตอร์การเริ่มต้นของคุณ

    sudo gedit $(path to your architecture specific ini i.e. TOS_DI...ini)
    
    Djavax.net.ssl.trustStore=/etc/ssl/certs/java/cacerts

สำหรับฉันรายการที่สองทำงาน ฉันคิดว่าขึ้นอยู่กับเวอร์ชันของ Talend Open Studio / TEnt + JVM มันมีชื่อพารามิเตอร์ที่แตกต่างกัน แต่มันก็มองหาไฟล์ keystore เดียวกัน


4
คุณได้รับทรัพย์สินjavax.net.ssl.trustAnchorsมาจากไหน ไม่ได้กล่าวถึงในเอกสาร JSSE
มาร์ควิสแห่ง Lorne

10

สำหรับฉันมันเกิดจากการขาดของ CertEntry ที่เชื่อถือได้ใน truststore

เพื่อทดสอบใช้:

keytool -list -keystore keystore.jks

มันทำให้ฉัน:

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry

cert-alias, 31-Jul-2017, PrivateKeyEntry

แม้ว่า PrivateKeyEntry ของฉันจะมี CA อยู่แต่ก็ต้องนำเข้าแยกต่างหาก :

keytool -import -alias root-ca1 -file rootca.crt -keystore keystore.jks

มันนำเข้าใบรับรองจากนั้นให้เปิดใช้งานใหม่keytool -list -keystore keystore.jksตอนนี้ให้:

Your keystore contains 2 entries

cert-alias, 31-Jul-2017, PrivateKeyEntry,
Certificate fingerprint (SHA1):
<fingerprint>
root-ca1, 04-Aug-2017, trustedCertEntry,
Certificate fingerprint (SHA1):
<fingerprint>

ตอนนี้มันมี trustCertEntry และ Tomcat จะเริ่มต้นได้สำเร็จ


NB ตรวจสอบการสอน baeldung พร้อม Makefile ที่มีประโยชน์เป็นทางลัดไปสู่การสร้าง keystore & truststore (โครงการ spring-security-x509) baeldung.com/x-509-authentication-in-spring-security
hello_earth

9

ผู้จำหน่าย OpenJDK บางรายออกมาทำให้เกิดปัญหานี้โดยการcacertsแจกจ่ายไฟล์เปล่ากับไบนารี ข้อผิดพลาดอธิบายไว้ที่นี่: https://github.com/AdoptOpenJDK/openjdk-build/issues/555

คุณสามารถคัดลอกไปadoptOpenJdk8\jre\lib\security\cacertsยังไฟล์จากการติดตั้งเก่าเช่นc:\Program Files\Java\jdk1.8.0_192\jre\lib\security\cacertsเก่าเช่น

รุ่น buggy ของ AdoptOpenJDK คือhttps://github.com/AdoptOpenJDK/openjdk8-releases/releases/download/jdk8u172-b11/OpenJDK8_x64_Win_jdk8u172-b11.zip


ฉันคิดว่านี่เป็นกรณีสำหรับฉันเช่นกัน ใน AdoptOpenJDK 202 ข้อผิดพลาดนี้มีอยู่และใน 222 ใช้งานได้ ดังนั้นปรับปรุง jdk ของคุณถ้าเป็นไปได้
Marty

6

หากคุณพบสิ่งนี้บน Ubuntu ที่มี JDK9 และ Maven คุณสามารถเพิ่มตัวเลือก JVM นี้ - ตรวจสอบก่อนว่าเส้นทางนั้นมีอยู่หรือไม่:

-Djavax.net.ssl.trustStore=/etc/ssl/certs/java/cacerts

หากไฟล์หายไปให้ลองติดตั้ง ca-certificate-java ตามที่มีคนระบุไว้:

sudo apt install ca-certificates-java

หากคุณใช้นักเทียบท่าคุณอาจลองใช้ "maven: 3-jdk-9-slim" แทน "maven: 3-jdk-9"
Konstantin Pavlov

ขอบคุณสิ่งนี้ใช้ได้กับฉันสำหรับ openjdk-8-jdk ใน Ubuntu 18.04
Aftab Naveed

4

ฉันมีข้อความแสดงข้อผิดพลาดนี้บน Java 9.0.1 บน Linux มันเป็นเพราะข้อผิดพลาดที่รู้จักกันของ JDK ที่ไฟล์ cacerts นั้นว่างในแพ็คเกจไบนารี. tar.gz (ดาวน์โหลดจากhttp://jdk.java.net/9/ )

ดูย่อหน้า "ปัญหาที่ทราบ" ของบันทึกย่อประจำรุ่น JDK 9.0.1ว่า "TLS ไม่ทำงานตามค่าเริ่มต้นใน OpenJDK 9"

บน Debian / Ubuntu (และอาจเป็นรุ่นอื่น) วิธีแก้ปัญหาง่ายๆคือการแทนที่ไฟล์ cacerts ด้วยไฟล์จากแพ็คเกจ "ca-certificate-java":

sudo apt install ca-certificates-java
cp /etc/ssl/certs/java/cacerts /path/to/jdk-9.0.1/lib/security/cacerts

บน Red Hat Linux / CentOS คุณสามารถทำสิ่งเดียวกันได้จากแพ็คเกจ "ca-certificate":

sudo yum install ca-certificates
cp /etc/pki/java/cacerts /path/to/jdk-9.0.1/lib/security/cacerts

4

ฉันมีปัญหานี้เมื่อพยายามใช้Maven 3 หลังจากอัปเกรดจากUbuntu 16.04 LTS (Xenial Xerus) เป็นUbuntu 18.04 LTS (Bionic Beaver)

การตรวจสอบ / usr / lib / jvm / java-8-oracle / jre / lib / ความปลอดภัยแสดงให้เห็นว่าไฟล์ cacerts ของฉันเป็นลิงค์สัญลักษณ์ที่ชี้ไปที่ /etc/ssl/certs/java/cacertsของฉันคือการเชื่อมโยงสัญลักษณ์ที่ชี้ไปยัง

cacerts.originalฉันยังมีไฟล์ชื่อพิรุธ

ฉันเปลี่ยนcacerts.originalไปcacertsและที่แก้ไขปัญหา


cacerts.originalไฟล์ที่อยู่ในjksรูปแบบและถูกสร้างขึ้นด้วย Ubuntu 16.04 ของ Java 8 ซึ่งใช้รูปแบบที่เป็นค่าเริ่มต้นของมัน cacertsไฟล์ที่อยู่ในpkcs12รูปแบบที่สร้างขึ้นโดยอูบุนตู 18.04 ของ Java 10 ซึ่งใช้รูปแบบนี้เป็นค่าเริ่มต้นของมัน ตามที่อธิบายไว้ที่อื่นในหัวข้อนี้รูปแบบใหม่กำหนดให้คุณต้องส่งรหัสผ่านไปยังไฟล์ที่เรียกใช้งานได้ แต่ตราบใดที่คุณสร้างjks cacertsไฟล์เปล่าใหม่หรือคัดลอกไฟล์เก่ากระบวนการสร้าง cacerts ถัดไปจะทำให้ไฟล์ที่มีอยู่นั้นว่างเปล่าและเติมด้วยใบรับรอง CA จากระบบไฟล์
Mikael Gueck

3

ฉันยังพบสิ่งนี้ใน OS X หลังจากอัปเดต OS X v10.9 (Mavericks) เมื่อมีการใช้ Java 6 เก่าและพยายามเข้าถึง HTTPS URL การแก้ไขคือสิ่งที่ตรงกันข้ามของ Peter Kriens; ฉันต้องการคัดลอกcacertsจากพื้นที่ 1.7 ไปยังตำแหน่งที่เชื่อมโยงโดยรุ่น 1.6:

(as root)
umask 022
mkdir -p /System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security
cp $(/usr/libexec/java_home -v 1.7)/jre/lib/security/cacerts \
    /System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security

1
คำสั่งที่นี่พยายามคัดลอกไดเรกทอรีไปยังไฟล์ ไม่สมเหตุสมผลเลย
praseodym

ฉันเห็นด้วยกับการประเมินการใช้โซลูชันย้อนกลับ ฉันพบว่า jdk1.6 มี softlink ที่เสียหาย /Library/Java/JavaVirtualMachines/1.6.0_33-b03-424.jdk/Contents/Home/lib/security/cacerts -> /System/Library/Java/Support/CoreDeploy.bundle / เนื้อหา / Home / lib / การรักษาความปลอดภัย / cacerts ดังนั้นฉันจึงได้ทำการเชื่อมโยงซอฟท์ที่ใช้งานไม่ได้แล้วคัดลอกไปที่ cacerts จากการติดตั้ง jdk1.7
James A Wilson

หมายเหตุ: เมื่อคุณทำเสร็จแล้วคุณควรจะสามารถ cat ไฟล์ cacerts ที่คุณคัดลอกเพื่อตรวจสอบสิทธิ์
สีเทา

นอกจากนี้แก้ไข cp เพื่อไปในทิศทางที่ถูกต้องและเพิ่ม umask สำหรับ mkdir และ cp
สีเทา

3

ในกรณีของฉันไฟล์ JKS ที่ใช้ในแอปพลิเคชันไคลเอนต์เสียหาย ฉันสร้างใหม่และนำเข้าใบรับรอง SSL เซิร์ฟเวอร์ปลายทางในนั้น จากนั้นฉันใช้ไฟล์ JKS ใหม่ในแอปพลิเคชันไคลเอนต์เป็นที่เก็บความเชื่อถือเช่น:

System.setProperty("javax.net.ssl.trustStore",path_to_your_cacerts_file);

ที่มา: Java SSL และที่เก็บใบรับรอง

ฉันใช้เครื่องมือ (KeyStore Explorer) เพื่อสร้าง JKS ใหม่ คุณสามารถดาวน์โหลดได้จากลิงค์นี้KeyStore Explorer ที่


keystore-explorerได้ผลกับฉัน คุณเพียงแค่ต้องสร้างที่เก็บคีย์เริ่มต้นและตรวจสอบและบันทึกไฟล์ใบรับรองสำหรับไซต์ / โฮสต์
Shantha Kumara

3

คุณอาจพบข้อผิดพลาดนี้หลังจากอัปเกรดเป็น Spring Boot 1.4.1 (หรือใหม่กว่า) เพราะจะนำTomcat 8.5.5 มาใช้เป็นส่วนหนึ่งของการอ้างอิง

ปัญหาเกิดจากวิธีที่ Tomcat จัดการกับที่เก็บที่เชื่อถือได้ หากคุณระบุตำแหน่งร้านค้าที่เชื่อถือได้เหมือนกับที่เก็บคีย์ของคุณในการกำหนดค่า Spring Boot คุณอาจได้รับtrustAnchors parameter must be non-emptyข้อความเมื่อเริ่มต้นแอปพลิเคชัน

server.ssl.key-store=classpath:server.jks
server.ssl.trust-store=classpath:server.jks

เพียงแค่ลบ server.ssl.trust-storeกำหนดค่าเว้นแต่คุณจะรู้ว่าคุณต้องการมันในกรณีนี้ศึกษาลิงค์ด้านล่าง

ปัญหาต่อไปนี้มีรายละเอียดเพิ่มเติมเกี่ยวกับปัญหา:


3

ฉันพบปัญหานี้กับ sdkmanager ของ SDK สำหรับ Android สำหรับฉันวิธีนี้ใช้งานได้:

  1. ไปที่ /usr/lib/jvm/java-8-oracle/jre/lib/security/
  2. แทนที่cacertด้วยcacert.original

cacertไฟล์เป็นหนึ่งเล็ก ๆ (22B) ฉันได้ติดตั้งoracle-java8-installerจากppa:webupd8team/java(ตามคู่มือนี้: https://docs.nativescript.org/start/ns-setup-linux )


2

สำหรับบันทึกแล้วไม่มีคำตอบที่นี่สำหรับฉัน งานสร้าง Gradle ของฉันเริ่มล้มเหลวอย่างลึกลับด้วยข้อผิดพลาดนี้ไม่สามารถเรียก HEAD จากMaven centralสำหรับไฟล์POMใดไฟล์หนึ่ง

ปรากฎว่าฉันได้ตั้งค่า JAVA_HOME เป็นงานสร้างส่วนตัวของฉันเองของ OpenJDK ซึ่งฉันได้สร้างขึ้นเพื่อแก้ไขข้อบกพร่องของปัญหา javac การตั้งค่ากลับไปเป็น JDK ที่ติดตั้งบนระบบของฉันได้แก้ไข


... ซึ่งเป็นสาเหตุให้ไม่พบ truststore ตามคำตอบอื่น ๆ
มาร์ควิสแห่ง Lorne

1
ใช่ แต่การรู้ว่าไม่พบร้านค้าที่เชื่อถือได้นั้นไม่เป็นประโยชน์หากคุณไม่สามารถรู้ได้ว่าทำไมถึงไม่พบร้านค้าที่เชื่อถือได้ มีหลายวิธีที่เป็นไปได้ที่มันจะผิดพลาดและมันก็น่าผิดหวังเมื่อไม่มีสิ่งใดเกิดขึ้นเป็นวิธีที่ทำให้ระบบของคุณล้มเหลว
user3562927

พวกเขาทั้งหมด 'เกิดขึ้น' เป็นข้อผิดพลาดเดียวกัน: truststore ที่ระบุไม่สามารถเปิดหรือว่างเปล่าได้ มีหลายล้านวิธีที่สถานการณ์นี้อาจเกิดขึ้นและมีพื้นที่ไม่เพียงพอในการระบุจำนวนทั้งหมด
มาร์ควิสแห่ง Lorne

1

On Red Hat Linux /etc/pki/java/cacertsผมได้แก้ไขปัญหานี้โดยการนำเข้าใบรับรองไป


1
System.setProperty("javax.net.ssl.trustStore", "C:\\Users\\user-id\\Desktop\\tomcat\\cacerts");
System.setProperty("javax.net.ssl.trustStorePassword", "passwd");

คุณต้องเพิ่มสองบรรทัดข้างต้นในรหัสของคุณ ไม่สามารถค้นหา truststore ได้


2
หากคุณไม่ทำเช่นนี้จะใช้ JRE truststore และจะสามารถค้นหาได้ ข้อผิดพลาดเกิดจากค่าที่ไม่ถูกต้องในพารามิเตอร์เหล่านี้ไม่ใช่ตัวตน ไฟล์ที่มีชื่อในรหัสของคุณจะใช้กับการติดตั้งของคุณเท่านั้นไม่ใช่โดยทั่วไป
มาร์ควิสแห่ง Lorne

วิธีที่เหมาะสมในการตั้งค่าคุณสมบัติเหล่านั้นคือการส่งผ่านทางบรรทัดคำสั่ง: java -Djavax.net.ssl.trustStore=/tmp/cacerts ...หรือถ้าคุณต้องการตั้งค่าแบบโกลบอลสำหรับโปรแกรมทั้งหมดที่รันด้วย JDK ให้เพิ่มแถวลงในmanagement.propertiesไฟล์ของ JDK
Mikael Gueck

1

ฉันประสบปัญหานี้ในขณะที่ใช้งานชุด Android เฉพาะสำหรับการทดสอบบนUbuntu 14.04 (Trusty Tahr) สองสิ่งที่เหมาะกับฉันตามที่ shaheen แนะนำ:

sudo update-ca-certificates -f

sudo /var/lib/dpkg/info/ca-certificates-java.postinst configure

1

ไม่มีวิธีแก้ไขปัญหาที่ฉันพบในอินเทอร์เน็ตทำงานได้ แต่คำตอบของPeter Kriens ที่แก้ไขแล้วดูเหมือนว่าจะทำงานได้

แรกพบโฟลเดอร์ Java /usr/libexec/java_homeของคุณโดยใช้ สำหรับฉันมันเป็น1.6.0.jdkรุ่น จากนั้นไปที่lib/securityโฟลเดอร์ย่อย (สำหรับฉัน/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/security)

แล้วลบไฟล์ถ้ามีอยู่แล้วและค้นหาหนึ่งในระบบที่มีcacerts sudo find / -name "cacerts"พบหลายรายการสำหรับฉันในเวอร์ชัน Xcode หรือแอปพลิเคชันอื่น ๆ ที่ฉันติดตั้ง แต่ที่/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/security/cacertsฉันเลือกด้วย

ใช้ไฟล์นั้นและสร้างลิงก์สัญลักษณ์ไปที่ (ในขณะที่อยู่ในโฟลเดอร์ Java มาก่อน) sudo ln -fsh "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/security/cacerts"และควรใช้งานได้

ฉันมีทั้ง - Java จากแอปเปิ้ล 2017-001 ดาวน์โหลด ( https://support.apple.com/kb/dl1572 - ฉันคิดว่านั่นคือที่มาของใบรับรองที่ถูกต้อง) และ Oracle ติดตั้งบนMac OS X v10.12 (Sierra) .


1

บน Ubuntu 14.04 กับ openjdk 11 จาก ppa: openjdk-r / ppa สิ่งนี้ใช้ได้สำหรับฉัน:

in java.security เปลี่ยน keystore type เป็น

keystore.type=jks

แล้ว:

sudo dpkg --purge --force-depends ca-certificates-java
sudo apt-get install ca-certificates-java

เมื่อคุณตรวจสอบว่ามันทำงานได้ให้แน่ใจว่าคุณไม่ได้ใช้ daemon ใด ๆ กับ java เก่ายังคงทำงานอยู่ (เช่น --no-daemonตัวเลือกสำหรับการไล่ระดับสี)

ข้อผิดพลาดนี้จะอธิบายทุกอย่างเป็นอย่างดีและจะช่วยให้คุณเข้าใจสิ่งที่เกิดขึ้นhttps://bugs.launchpad.net/ubuntu/+source/ca-certificates-java/+bug/1739631


1

ใน Ubuntu 18.04 ฉันจำเป็นต้องใช้ OpenJDK 1.7 สำหรับการบำรุงรักษาโครงการเก่า ฉันดาวน์โหลดแพ็คเกจไบนารี แต่เมื่อฉันรันสคริปต์ของฉันฉันได้รับข้อผิดพลาดเดียวกัน

ทางออกคือการลบcacertsไฟล์ของ JDK ที่ดาวน์โหลดมาในjre/lib/securityโฟลเดอร์และสร้างเป็น symlink ไปยังcacertsไฟล์ระบบใน/etc/ssl/certs/java/:

sudo ln -s /etc/ssl/certs/java/cacerts /path/to/downloaded/java/jre/lib/security/cacerts


1

โอกาสน้อยที่จะช่วยให้ทุกคน แต่ .... สำหรับทุกคนที่ใช้ Java 8 จาก Docker Image บน Raspberry Pi (โดยใช้ CPU ของ AMD) ฉันได้ Dockerfile ต่อไปนี้มาเพื่อสร้างและรันให้สำเร็จสำหรับฉัน

FROM hypriot/rpi-java
USER root

WORKDIR /usr/build/

RUN /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
RUN update-ca-certificates -f
RUN /var/lib/dpkg/info/ca-certificates-java.postinst configure

EXPOSE 8080

ARG JAR_FILE=target/app-0.0.1-SNAPSHOT.jar

ADD ${JAR_FILE} app.jar

ENTRYPOINT ["java", "-Djavax.net.ssl.trustStorePassword=changeit", "-Djavax.net.ssl.trustStore=/etc/ssl/certs/java/cacerts", "-jar", "app.jar"]
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.