สำหรับ APACHE2
1. สร้าง DH parameters
#sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
2. เปิดใช้ module headers ของ apache2
#sudo a2enmod headers
3. แก้ไขแฟ้ม /etc/apache2/mods-available/ssl.conf ดังนี้
SSLProtocol -ALL +TLSv1.2 +TLSv1.3
//บาง OS เช่น CENTOS ใช้ SSLProtocol ALL -TLSv1 -TLSv1.1 -SSLv3 -SSLv2
SSLOpenSSLConfCmd DHParameters “/etc/ssl/certs/dhparam.pem”
SSLHonorCipherOrder on
SSLCompression off
SSLSessionTickets off
SSLOptions +StrictRequire
//เปลี่ยนตามที่ตัวเองใช้
SSLCertificateKeyFile /etc/apache2/certificate/STAR_oas.psu.ac.th.key
SSLCertificateChainFile /etc/apache2/certificate/STAR_oas.psu.ac.th.ca-bundle
SSLCertificateFile /etc/apache2/certificate/STAR_oas.psu.ac.th.crt
SSLOpenSSLConfCmd ECDHParameters brainpoolP512r1
SSLOpenSSLConfCmd Curves brainpoolP512r1:sect571r1:secp521r1:secp384r1
SSLCipherSuite TLSv1.3 TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:TLS13_AES_128_GCM_SHA256:TLS13_AES_256_GCM_SHA384:TLS13_CHACHA20_POLY1305_SHA256:TLS_ECDHE_RSA_AES_256_GCM_SHA384:TLS_DHE_RSA_AES_256_GCM_SHA384:TLS_ECDHE_RSA_CHACHA20_POLY1305_SHA256:TLS_DHE_RSA_CHACHA20_POLY1305_SHA256:TLS_DHE_RSA_AES_256_CCM_8:TLS_DHE_RSA_AES_256_CCM:TLS_ECDHE_RSA_ARIA_256_GCM_SHA384:TLS_DHE_RSA_ARIA_256_GCM_SHA384:TLS_ECDHE_RSA_AES_128_GCM_SHA256:TLS_DHE_RSA_AES_128_GCM_SHA256:TLS_DHE_RSA_AES_128_CCM_8:TLS_DHE_RSA_AES_128_CCM:TLS_ECDHE_RSA_ARIA_128_GCM_SHA256:TLS_DHE_RSA_ARIA_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305:PSK-CHACHA20-POLY1305:ECDHE-PSK-CHACHA20-POLY1305:DHE-PSK-CHACHA20-POLY1305:RSA-PSK-CHACHA20-POLY1305:DHE-RSA-AES256-GCM-SHA384:DH-RSA-AES256-GCM-SHA384:DHE-DSS-AES256-GCM-SHA384:DH-DSS-AES256-GCM-SHA384:ADH-AES256-GCM-SHA384:TLS_AES_256_GCM_SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDH-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDH-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-CCM8:DHE-RSA-AES256-CCM:PSK-AES256-CCM:DHE-PSK-AES256-CCM:PSK-AES256-CCM8:DHE-PSK-AES256-CCM8:ECDHE-ECDSA-AES256-CCM:ECDHE-ECDSA-AES256-CCM8:
#
############
# – OCSP Stapling, only in httpd 2.3.3 and later
SSLUseStapling on
SSLStaplingResponderTimeout 5
SSLStaplingReturnResponderErrors off
SSLStaplingCache “shmcb:logs/ssl_stapling(32768)”
#
# – HTTP Strict Transport Security Header.
Header always set Strict-Transport-Security “max-age=31536000; includeSubDomainsi; preload”
สำหรับคนที่ใช้ letsencrypt.org ตอนสร้าง cert ให้เพิ่มคำสั่งนี้ครับ –rsa-key-size 4096
#sudo certbot certonly –rsa-key-size 4096 –manual –preferred-challenges dns
เสร็จไปทดสอบที่
https://www.ssllabs.com/ssltest/
ปล.1 ถ้าใช้ Certificate ที่สำนักนวัตกรรมดิจิทัลและระบบอัจฉริยะ จัดชื้อมา จะได้ RSA key ขนาด 2048 bit ทำให้คะแนน Key Exchange ได้ 90 คะแนน
ปล.2 ส่วนของ IIS ค่อยทำครับ เพราะต้องใช้ Windows 2022 ขึ้นไปครับ จึงจะ support TLSv1.3
ที่ผมมีเพียง Windows 2019 จึงได้ คะแนน ส่วนของ Cipher Strength ได้แค่ 90
ปล.3 ถ้าท่านตามนี้จะทำให้ browser version เก่าเข้าใช้งาน web ท่านไม่ได้เพราะได้ตัด Cipher ที่เป็นจุดอ่อนของระบบออกไป ซึ่ง browser เหล่านนั้นล่วนแต่ใช้ Cipher ที่ถุกตัดออก
ปล.4 สำหรับ Windows ใช้คำสั่งนี้สร้าง cert สำหรับ IIS ครับ #sudo openssl pkcs12 -export -out oas.psu.ac.th.pfx -inkey oas.psu.ac.th.key -certfile intermediate_oas.psu.ac.th_ca.crt -in oas.psu.ac.th.crt
ปล.5 เพิ่ม SSLCipherSuite ตาม https://www.tenable.com/plugins/nessus/156899 (2560/11/03)
ขอบคุณมากครับ ที่ได้ช่วยบันทึกแนวทางทำเว็บไซต์ให้ได้ A+ เพื่อให้ท่านอื่นๆ ได้นำไปใช้ปรับปรุงเว็บไซต์ภายใต้การดูแลกันต่อไป
เพิ่มความปลอดภัยให้กับไอที ม.อ. กันครับ