AWS เเจ้งเตือนการเปลี่ยนแปลง CA สำหรับ Client ที่ใช้งาน SSL/TLS เชื่อมต่อ RDS ภายในวันที่ 5 มีนาคม พ.ศ. 2563
CA (Certificate Autority) คือองค์กรที่ทำหน้าที่ออกใบรับรองดิจิตอลที่รับรองความเป็นเจ้าของ Public Key และลายเซ็นดิจิตอล ที่ยืนยันตัวโดยการทำ Private key ที่สอดคล้องกับ Public key ที่ถูกรับรอง
AWS ได้ประกาศให้ผู้ใช้งานเเก้ไข CA ที่ใช้งานอยู่เดิมซึ่งจะหมดอายุในวันที่ 5 มีนาคม 2020 โดยผู้ใช้งานจำเป็นต้องอัพเดตทั้งส่วนของเครื่อง Client ที่ใช้งาน และเครื่อง Database Server โดย AWS เเนะนำให้เเก้ไข CA ภายในวันที่ 5 กุมภาพันธ์ 2563 โดยหลังจากวันที่ 5 กุมภาพันธ์เป็นต้นไป AWS จะเริ่มการอัพเดต RDS Instancesโดยอัตโนมัติ ซึ่งการเปลี่ยนแปลงนี้อาจส่งผลต่อ Client ที่ไม่ได้มีการอัพเดต CA
ขั้นตอนการเเก้ไข SSL / TLS Certificate
- การเเก้ไขฝั่ง Client (หากไม่ได้ทำการเชื่อมต่อ RDS แบบ SSL/TLS) ไม่ต้องดำเนินการทำขั้นตอนนี้
- การเเก้ไขฝั่ง Database Server (RDS)
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
1. ขั้นตอนการเเก้ไขฝั่ง Client ผู้ใช้งานจะต้องดาวน์โหลด CA Certificate ใหม่มาเก็บไว้ที่ Trust Store ของเครื่อง Clint (root และ intermediate)
ตัวอย่าง shell scirpts ดาวน์โหลด และนำไปไว้ที่ Trust Store ของเครื่อง Linux OS
mydir=/tmp/certs
truststore=${mydir}/rds-truststore.jks
storepassword=changeit
curl -sS “https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem" > ${mydir}/rds-combined-ca-bundle.pem
awk ‘split_after == 1 {n++;split_after=0} / — — -END CERTIFICATE — — -/ {split_after=1}{print > “rds-ca-” n “.pem”}’ < ${mydir}/rds-combined-ca-bundle.pem
for CERT in rds-ca-*; do
alias=$(openssl x509 -noout -text -in $CERT | perl -ne ‘next unless /Subject:/; s/.*CN=//; print’)
echo “Importing $alias”
keytool -import -file ${CERT} -alias “${alias}” -storepass ${storepassword} -keystore ${truststore} -noprompt
rm $CERT
done
rm ${mydir}/rds-combined-ca-bundle.pem
echo “Trust store content is: “
keytool -list -v -keystore “$truststore” -storepass ${storepassword} | grep Alias | cut -d “ “ -f3- | while read alias
do
expiry=`keytool -list -v -keystore “$truststore” -storepass ${storepassword} -alias “${alias}” | grep Valid | perl -ne ‘if(/until: (.*?)\n/) { print “$1\n”; }’`
echo “ Certificate ${alias} expires in ‘$expiry’”
done
2. การเเก้ไขฝั่ง Database Server ต้องอัพเดต RDS Instance ให้ใช้งาน CA ใหม่
2.1 เข้าไปที่ Service RDS เลือก menu “Certificate update” ซึ่งให้หน้านี้จะแสดง RDS Instances ที่จำเป็นต้อง Update Certificate
- ปุ่ม “Export this list to .csv.” คุณสามารถ Export CSV file เพื่อนำมาตรวจสอบก่อนได้
- หากเลือกเครื่อง RDS Insance และกดปุ่ม “Update now” เครื่อง RDS นั้นจะะถูก Update ทันที ** ข้อควรระวัง หาก RDS Instance ไม่ได้มีการตั้งเป็น Multi-AZ จะเกิด downtime ขึ้น
- หากเลือก “Update at the next maintenance window” เครื่อง RDS ที่เลือกจะตั้ง schedule เพื่อ Update Certificate ตอน next maintenance window ที่ได้ตั้งไว้ในเเต่ละเครื่อง
หลังจากที่ได้ทำการ Update เรียบร้อยแล้วสามารถตรวจสอบได้ที่ RDS ในส่วนของ Configuration
รายละเอียดเพิ่มเติม
- https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html#UsingWithRDS.SSL-certificate-rotation-updating
- https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ModifyInstance.MySQL.html
ติดตามข่าวสาร แชร์ความรู้ และสอบถามได้ที่ AWS User Group Thailand https://www.facebook.com/groups/awsusergroup/