DEV Community

Potchara Pruksasri
Potchara Pruksasri

Posted on

Java: เพิ่ม Root Cert เพื่อเรียก API SSL ที่มี Cert ของตัวเอง

เวลาเราเขียน Java รันบน Application Server เช่น Tomcat หรือ Glassfish ถ้าเราเรียกหรือทำงานเกี่ยวกับพวก SSL Cert ที่เราสร้างเอง (จาก EJBCA) มันจะ Error ประมาณว่า มันทำ SSL Handcheck กันไม่สำเร็จ

เพราะว่าใน Java มันก็ต้องมีการใส่ Root CA เพื่อให้ Trust SSL Cert นั้นด้วย เราสามารถแก้ได้ดังนี้

  • เช็คให้ชัวร์ว่า Application Server ของเรารันด้วย Java ในเครื่องเวอร์ชันไหน (ในเครื่องอาจมี Java หลายเวอร์ชัน)
  • เข้าไปที่ folder security ของ Java Home เช่น ถ้า Java 11 ใน Windows ก็เข้าที่ C:\Program Files\Java\jdk-11.0.11\lib\security มันจะมีไฟล์ชื่อ cacerts อยู่
  • เอา cert ของเรา (ของเราได้จาก EJBCA เป็น .jks) มา export เป็น .cert โดยใช้โปรแกรม KeyStore Explorer หรือถ้าได้ Cert ของ Root ที่เป็น .DER มาก็ได้

Image description

  • เพิ่ม cert นั้นเข้า cacerts ของ Java กำหนด -alias ให้ตรงกับใน .jks ของเราด้วยนะ
keytool -import -alias alias -keystore path-to-jre/lib/security/cacerts -file path-to-certificate-file
Enter fullscreen mode Exit fullscreen mode

เช่น

keytool -import -alias xxxxxx -keystore "C:\Program Files\Java\jdk-11.0.11\lib\security\cacerts" -file "D:\certs\mycert.cer"
Enter fullscreen mode Exit fullscreen mode
  • มันจะมี default password เป็น changeit ลองใช้โปรแกรม KeyStore Explorer เปิดเข้าไปดูใน cacerts หรือ ไฟล์ cert ของเราได้

Top comments (0)