สำหรับ 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)