Kanin Chotvorrarak
AWS User Group (Thailand)
3 min readJan 8, 2020

--

AWS เเจ้งเตือนการเปลี่ยนแปลง CA สำหรับ Client ที่ใช้งาน SSL/TLS เชื่อมต่อ RDS ภายในวันที่ 5 มีนาคม พ.ศ. 2563

ข้อความขึ้นเตือนเมื่อเข้าหน้า RDS

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

  1. การเเก้ไขฝั่ง Client (หากไม่ได้ทำการเชื่อมต่อ RDS แบบ SSL/TLS) ไม่ต้องดำเนินการทำขั้นตอนนี้
  2. การเเก้ไขฝั่ง 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

Certificate Authority จะเปลี่ยนเป็น rds-ca-2019

รายละเอียดเพิ่มเติม

ติดตามข่าวสาร แชร์ความรู้ และสอบถามได้ที่ AWS User Group Thailand https://www.facebook.com/groups/awsusergroup/

--

--