เวลาเราเขียน 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 มาก็ได้
- เพิ่ม cert นั้นเข้า cacerts ของ Java กำหนด -alias ให้ตรงกับใน .jks ของเราด้วยนะ
keytool -import -alias alias -keystore path-to-jre/lib/security/cacerts -file path-to-certificate-file
เช่น
keytool -import -alias xxxxxx -keystore "C:\Program Files\Java\jdk-11.0.11\lib\security\cacerts" -file "D:\certs\mycert.cer"
- มันจะมี default password เป็น changeit ลองใช้โปรแกรม KeyStore Explorer เปิดเข้าไปดูใน cacerts หรือ ไฟล์ cert ของเราได้
Top comments (0)