การติดตั้ง SSL บน apache2

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

1 thought on “การติดตั้ง SSL บน apache2”

  1. ขอบคุณมากครับ ที่ได้ช่วยบันทึกแนวทางทำเว็บไซต์ให้ได้ A+ เพื่อให้ท่านอื่นๆ ได้นำไปใช้ปรับปรุงเว็บไซต์ภายใต้การดูแลกันต่อไป
    เพิ่มความปลอดภัยให้กับไอที ม.อ. กันครับ

Comments are closed.