บทนำ (Overview)
วิธีการสร้าง Certificate แบบ Sef-signed ให้มีความแข็งแรง บน Port ของ MS SQL server สามารถติดตามบทความรูปแบบ PDF
ขั้นตอน (Steps)
- ทดสอบบน Windows 2008 r2 และ MS SQL Server 2008 R2
- จากโปแกรม Scan ช่องโหว่ พบช่องโหว่ดังต่อไปนี้
- SSL Certificate Signed Using Weak Hashing Algorithm
- SSL Certificate With Wrong Hostname
- SSL Certificate Chain Contain RSA Keys Less Than 2048 bits
- SSL Certificate Signed Using Weak Hashing Algorithm
สามารถสร้าง Self-signed Certificate ได้จากบทความ
- How to Create A SHA-256 Self-Signed Certificate (Signature hash algorithm)
- How to Create A Self-Signed Certificate with RSA Keys 2048 bits
จากตัวอย่างตั้งค่า Certificate ให้ปลอดภัยดังนี้
- ตั้งค่า CN ให้ตรงกับชื่อ Host
- สำหรับการสร้าง Certificate
- สำหรับแก้ช่องโหว่ ให้สามารถ signed ได้ด้วย Sha256 สามารถไปได้ที่ Tab Private Key/Select Hash Algorithm /Hash Algorithm/sha256 (มี hash อย่างอื่นให้เลือกด้วย เช่น MD2, MD4, MD5, หรือ SHA1 )
- สำหรับแก้ช่องโหว่ สร้าง Certificate ให้ Private key มีขนาด size (2048 bits) สามารถแก้ไขได้ดังนี้ Tab Private Key/Key options/Key size/2048 แล้วทำเครื่องหมายถึงที่ Make private key exportable
**Copy Certificate จาก Enrollment ไปที่ Personal และ Trusted Root Certification Authorities**
- เข้าไปที่ Certificate Enrollment Requests และ certificates จะพบ Certificate ใหม่ที่สร้างขึ้นมา
- คลิกขวาที่ Certificats สร้างใหม่จากนั้น Copy ไปวางไว้ที่ Certificates (Local Computer) ไปที่ Personal คลิกขวา Certificates
- และนำไปวางที่ Certificates ของ Trusted Root Certification Authorities ด้วย
**สำหรับ MS SQL server ต้องทำเพิ่มเติมแตกต่าง IIS เล็กน้อย ดังนี้ Set Thumbprint
- Click ขวา cert ที่เราสร้างขึ้น (Trusted Root Certification Authority) จากนั้นไปที่แท็ป Details และ Click เลือกหัวข้อ Thumbprint ให้ Copy ค่า เก็บไว้
- จากนั้นแก้ไขค่าที่ Copy ให้ลบช่องว่างออกไปให้หมด
- คลิก Start, Run, พิมพ์ regedit, และคลิก OK
- ให้ไปที่
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.x\MSSQLServer\SuperSocketNetLib\Certificate
- นำค่าที่เราแก้ไขแล้วไปใส่ใน Certificate
- Restart. เครื่อง
- ทำการเปิด Service MSSQL server **ถ้าไม่สามารถเปิด Service ได้ให้ copy ค่า Thumbprint (ลองตรวจสอบว่าค่าใน Notepad กับใน Thumbprint ตรงกัน) และเอาไปใส่ใน Registry อีกครั้ง แล้วลอง Start MSSQL server ใหม่***
- ทดสอบเชื่อมต่อฐานข้อมูล
- และทดสอบ Scan อีกครั้งจะพบว่า ช่องโหว่หายไปดังนี้
อ้างอิง (References)
- https://social.msdn.microsoft.com/Forums/sqlserver/en-US/7f45f55c-6756-4e50-8f4e-4eca0ae0741a/ssl-certificate-not-visible-from-sql-configuration-manager?forum=sqldatabaseengine
- https://blogs.msdn.microsoft.com/jorgepc/2008/02/19/enabling-certificate-for-ssl-on-a-sql-server-2005-clustered-installation/