เรากำลังพยายามสร้างใบรับรองเซิร์ฟเวอร์สำหรับคลัสเตอร์ของเซิร์ฟเวอร์ Kafka เพื่อสื่อสารผ่าน SSL
ขั้นตอนนี้ใช้ได้ แต่ผลลัพธ์ของใบรับรองจะมีอายุเพียง 30 วันเท่านั้น
เราขอเวลา 365 วัน และหลังจาก "ขั้นตอนที่ 1" (ดูด้านล่าง) เราก็มีคู่กุญแจที่ถูกต้อง ดู (1) ด้านล่าง
อย่างไรก็ตาม หลังจากที่เราอิมพอร์ตใบรับรองที่ลงชื่อแล้วกลับเข้าไปในที่เก็บคีย์ อายุการใช้งานจะลดลงเหลือ 30 วัน ดู (2) ด้านล่าง
ทำไมถึงเป็นเช่นนั้น และเราจะแก้ไขได้อย่างไร?
echo "ขั้นตอนที่ 1: สร้างข้อมูลประจำตัวของเซิร์ฟเวอร์และที่เก็บคีย์"
$ORACLE_JDK_1_8_0_u181_keytool -genkey -keystore keystore.p12 -alias localhost -validity 365 -keyalg RSA -deststoretype pkcs12 -ext SAN="DNS:$SERVER_NAME.corp.com,IP:1.2.3.4"
$ORACLE_JDK_1_8_0_u181_keytool -list -v -keystore keystore.p12 -storepass $KPWD
# (1) แสดงอายุ 365 วัน: ถูกต้อง
echo "ขั้นตอนที่ 2: ส่งออกคีย์ส่วนตัวจากที่เก็บคีย์ไปยังไฟล์แยกต่างหาก"
opensl pkcs12 - ใน keystore.p12 -nodes -nocerts - ออก $SERVER_NAME_key.pem -passin pass:$KPWD -passout pass:$KPWD
echo "ขั้นตอนที่ 3: สร้างคำขอลงนามใบรับรอง (CSR)"
openssl req -new -key $SERVER_NAME_key.pem -out $SERVER_NAME.csr -passin pass:$KPWD -passout pass:$KPWD
echo "ขั้นตอนที่ 6 ลงนามใบรับรองเซิร์ฟเวอร์"
opensl x509 -req -in $SERVER_NAME.csr -CA CAcert.pem -CAkey CAkey.pem -CAcreateserial -out $SERVER_NAME_key_signed.pem -รหัสผ่าน: $CAPD
echo "ขั้นตอนที่ 7: นำเข้าทั้งใบรับรองของ CA และใบรับรองที่ลงนามแล้วไปยังที่เก็บคีย์"
$ORACLE_JDK_1_8_0_u181_keytool -keystore keystore.p12 -alias CARoot -นำเข้าไฟล์ CAcert.pem -storepass $KPWD
$ORACLE_JDK_1_8_0_u181_keytool -keystore keystore.p12 -alias localhost -import -file $SERVER_NAME_key_signed.pem -storepass $KPWD
$ORACLE_JDK_1_8_0_u181_keytool -list -v -keystore keystore.p12 -storepass $KPWD
# (2) แสดงอายุ 30 วัน: ผิด ทำไม?