Tag: certificate

  • วิธีตั้งค่า HTTPS บน Apache2 รุ่นที่สูงกว่า 2.4.8

    จากบทความ การแก้ไข Certificate สำหรับ Apache Web Server (Ubuntu 14.04 LTS) ตอนนี้ Apache2 รุ่นที่สูงกว่า 2.4.8 ประกาศให้ SSLCertificateChainFile นั้น obsolete หรือ จะไม่ใช้อีกต่อไป

    จากเดิม เราเคยใช้

    SSLCertificateFile /etc/apache2/cer/[cer-file-name].crt
    SSLCertificateKeyFile /etc/apache2/cer/[cer-file-name].key
    SSLCertificateChainFile /etc/apache2/cer/[cer-file-name].ca-bundle

    ต่อไปนี้ แนะนำให้ใช้แค่

    SSLCertificateFile /etc/apache2/cer/[cer-file-name]_combined.crt
    SSLCertificateKeyFile /etc/apache2/cer/[cer-file-name].key

    แล้ว 

    /etc/apache2/cer/[cer-file-name]_combined.crt

    มาจากไหน ??? มันมากจากการเอาไฟล์ [cer-file-name].crt แล้วต่อท้ายด้วยไฟล์ [cer-file-name].ca-bundle ด้วยคำสั่ง

    cat [cer-file-name].crt [cer-file-name].ca-bundle > [cer-file-name]_combined.crt

    เช่น

    cat in_psu.crt intermediate_ca.crt > in_psu_combined.crt

    เป็นต้น เสร็จแล้ว ก็ Restart Apache — จบแค่นี้ ใช้งานได้

    TL;DR

    Q: มีไฟล์ .crt เต็มไปหมด จะรู้ได้ไงว่า อันไหนคือ Certificate ของอะไร อย่างไร

    A: สมมุติ Certificate ของ Server ที่ได้มา ชื่อ server.crt ต้องใช้คำสั่งนี้ ดูรายละเอียด

    openssl x509 -in server.crt -text

    ผลที่ได้ จะประมาณนี้

    สิ่งสำคัญที่ควรดู ในที่นี้คือ Issuer จะเห็นว่า CN หรือ common name คือ AlphaSSL CA – SHA256 – G2  และบรรทัด Subject จะบอกว่า Domain (*.xxxxx.psu.ac.th) ที่ลงทะเบียนไว้ อยู่ภายใต้ “AlphaSSL CA” อีกที

    ซึ่ง ถ้าไปดูใน /etc/ssl/certs ก็จะเห็นว่า ไม่มี CA Certificate ของ “AlphaSSL CA” นี้อยู่ แต่จะมีของ “GlobalSign Root CA” อยู่

    ทำไมเป็นอย่างนั้น ??? เพราะ CA เค้าต้องรักษา Root Certificate ของตนเองไว้ให้ดี จึงออกสิ่งที่เรียกว่า Intermediate CA ขึ้นมาอีกชั้นหนึ่ง แล้วแจกจ่ายให้กับผู้ที่ซื้อ Certificate ของเค้าอีกชั้นหนึ่ง

    คราวนี้ มาลองดูข้อมูลใน intermediate_ca.crt ว่ามีข้อมูลเป็นอย่างไร ด้วยคำสั่ง

    openssl x509 -in intermediate_ca.crt -text

    จะเห็นได้ว่า Issuer เป็น “GlobalSign Root CA” และ Subject เป็น “AlphaSSL CA” 

    จากเดิม Apache2 รุ่น < 2.4.8 ให้ใช้ Directive  “SSLCertificateChainFile” ในการกำหนด Intermediate CA ได้ แต่หลังจากนั้น ก็ให้ Obsolete เพราะ สามารถเอา 2 ไฟล์มาต่อกันได้ตามที่เขียนไว้ข้างต้น

    ในทางปฏิบัติ จริง ๆ แล้ว ก็ยังใช้ได้อยู่ แต่เป็น Obsolete ทางที่ดี ก็ควรจะปรับปรุงตามที่แนะนำไว้จะดีกว่า

    และ ถ้าใช้งานแค่ SSLCertificateFile (แบบที่มีแต่ Server Certificate) และ SSLCertificateKey (Server Private Key) นั้น เมื่อ Restart apache2 แล้ว ทดสอบใช้งานกับ Web Browser ส่วนใหญ่ จะใช้งานได้ ไม่ต้องอ้าง Intermediate CA ก็ได้ *** เพราะใน Web Browser ได้ติดตั้ง Intermediate CA พวกนี้ไว้เป็นส่วนใหญ่แล้ *** แต่ถ้าลองเรียกผ่าน curl หรือบริการอื่น ๆ เช่น จาก Google DialogFlow Fulfillment ก็จะเรียกไม่ผ่าน เพราะในระบบเค้าไม่ได้ใส่ Intermediate CA ไว้นั่นเอง

    การที่ Combined ทั้ง Server Certificate และ Intermediate CA ไว้ในไฟล์เดียวกัน ทำให้มั่นใจได้ว่า สามารถใช้งาน https ได้จากทุก Platform นั่นเอง

    หวังว่าจะเป็นประโยชน์ครับ

  • การแก้ไข Certificate สำหรับ Lighttpd Web Server (Ubuntu 14.04 LTS)

    “อยากแก้ Certificate บน Linux Lighttpd Server ทำอย่างไร”

      • ในกรณีที่มีไฟล์ Certificate อยู่แล้วให้ทำการวางไฟล์ Certificate ใหม่ทับแล้วสั่ง Restart Apache Server เป็นอันเสร็จครับ (สำหรับการเปลี่ยน Certificate มีแค่ขั้นตอนนี้จบเลยครับ)
      • ในกรณีที่ยังไม่ได้ติดตั้ง https รวมถึง Certificate ให้ทำการติดตั้ง https ก่อนดังนี้
        sudo lighttpd-enable-mod ssl
      • จากนั้นให้สั่ง Restart Apache ตามปกติ
        sudo service lighttpd restart
      • ทำการวางไฟล์ Certificate ไว้ในตำแหน่งที่ Lighttpd สามารถเข้าถึงได้ ในกรณีที่ที่นี้ผมจะวางไว้ที่ /etc/cer
      • ในกรณีที่ได้มาเป็นไฟล์ .cer และไฟล์ .key มาต้องการทำไฟล์ .pem สามารถพิมพ์คำสั่งดังนี้
        sudo cat [file_cer_name].key [file_cer_name].crt > [file_cer_name].pem
      • ทำการแก้ไขไฟล์ 10-ssl.conf ดังนี้
        sudo vim /etc/lighttpd/conf-enabled/10-ssl.conf
      • โดยส่วนที่ทำการเปลี่ยนแปลงจะทำการเปลี่ยน 1 บรรทัดดังนี้
        ssl.pemfile = "/etc/cer/[file_cer_name].pem"
      • จากนั้นให้สั่ง Restart Apache ตามปกติ
        sudo service lighttpd restart

    เป็นอันเสร็จครับ ง่ายมากจริง ๆ ครับ

  • การแก้ไข Certificate สำหรับ Apache Web Server (Ubuntu 14.04 LTS)

    “อยากแก้ Certificate บน Linux Apache Server ทำอย่างไร”

      • ในกรณีที่มีไฟล์ Certificate อยู่แล้วให้ทำการวางไฟล์ Certificate ใหม่ทับแล้วสั่ง Restart Apache Server เป็นอันเสร็จครับ (สำหรับการเปลี่ยน Certificate มีแค่ขั้นตอนนี้จบเลยครับ)
      • ในกรณีที่ยังไม่ได้ติดตั้ง https รวมถึง Certificate ให้ทำการติดตั้ง https ก่อนดังนี้
        sudo a2enmod ssl
        sudo a2ensite default-ssl
      • จากนั้นให้สั่ง Restart Apache ตามปกติ
        sudo service apache2 restart
        
      • ทำการวางไฟล์ Certificate ไว้ในตำแหน่งที่ Apache สามารถเข้าถึงได้ ในกรณีที่ที่นี้ผมจะวางไว้ที่ /etc/apache2/cer
      • ทำการแก้ไขไฟล์ default-ssl.conf ดังนี้
        sudo vim /etc/apache2/sites-enabled/default-ssl.conf
      • โดยส่วนที่ทำการเปลี่ยนแปลงจะทำการเปลี่ยน 3 บรรทัดดังนี้
        SSLCertificateFile /etc/apache2/cer/[cer-file-name].crt
        SSLCertificateKeyFile /etc/apache2/cer/[cer-file-name].key
        SSLCertificateChainFile /etc/apache2/cer/[cer-file-name].ca-bundle
      • จากนั้นให้สั่ง Restart Apache ตามปกติ
        sudo service apache2 restart
        

    เป็นอันเสร็จครับ ง่ายมากจริง ๆ ครับ

  • การแก้ไข Certificate สำหรับ Windows Server 2008 / 2008 R2 / 2012 / 2012 R2

    “อยากแก้ Certificate บน Windows Server 2008 ขึ้นไป ทำอย่างไร”

    เนื่องจาก Windows 2008 R2 ขึ้นไป มีการตั้งค่าคล้ายคลึงกันจึงขอยกตัวอย่างที่เป็น Windows Server 2008 R2 เท่านั้นครับ

    • วิธีการเปลี่ยนให้เข้าไปยัง IIS ในเครื่อง Windows Server 2008 R2

    2015-11-10_181324

    • เลือกชื่อเครื่องจากนั้นเลือกหัวข้อ Server Certificates ทางด้านขวาดังนี้

    2015-11-10_181456

    • ในกรณีที่เคยมี Certificate เก่าอยู่แล้ว (ต้องการเปลี่ยน Certificate) ให้ดำเนินการ Remove ออกก่อนดังรูป จากนั้นทำการ Restart เครื่อง (ถ้ายังไม่เคยใส่ให้ข้ามขั้นตอนนี้ไปเลย)

    2015-11-10_181636 2015-11-10_181702

    • ในกรณีที่ยังไม่เคยมี Certificate ให้ทำการ Import ดังรูป

    2015-11-10_181803 2015-11-10_1819352015-11-10_183936

    • จากนั้นทำการเลือก Web Site ที่ต้องการเปลี่ยน Certificate ในกรณีที่ยังไม่มี https ให้กด Add ในกรณีมีอยู่แล้วให้กด Edit จากนั้นเลือก SSL certificate ที่ต้องการใช้งาน จากนั้นกดปุ่ม OK

    2015-11-10_182305

    เป็นอันเสร็จสิ้นขั้นตอนการเปลี่ยน Certificate ให้ล่าสุดและปลอดภัยครับ

  • การแก้ไข Certificate สำหรับ Windows Server 2003 R2

    “อยากแก้ Certificate บน Windows Server 2003 R2 ทำอย่างไร”

    • วิธีการเปลี่ยนให้เข้าไปยัง IIS ในเครื่อง Windows Server 2003 R2

    2015-11-10_171414

    • จากนั้นเลือกเครื่องกด + เข้าไปเรื่อย ๆ ในหัวข้อ Web Sites และเลือก Web Site ที่ใช้งาน คลิกขวาเลือก Properties

    2015-11-10_171812

    • เข้าไปยังหน้าจัดการ Certificate ดังรูป

    2015-11-10_172407

    • จากนั้นกด Next เพื่อทำการ Import Certificate เข้าสู่ IIS

    2015-11-10_172431

    • ในกรณีที่เคยมี Certificate เก่าอยู่แล้วจะต้องทำการ Remove Certificate เก่าออกก่อนดังนี้ (ถ้ายังไม่เคยมีให้ข้ามขั้นตอนนี้ไป)

    2015-11-10_172833 2015-11-10_172918 2015-11-10_172938

    • ในกรณีที่ยังไม่เคยมี Certificate ให้ดำเนินการ Import Certificate จากไฟล์ .pfx ดังนี้

    2015-11-10_172508 2015-11-10_172558 2015-11-10_172619 2015-11-10_172648 2015-11-10_172709 2015-11-10_172730 2015-11-10_172748เป็นอันเสร็จสิ้นวิธีเปลี่ยน Certificate สำหรับ Windows Server 2003 R2 ครับ

  • วิธีการตรวจสอบระดับความปลอดภัยของ Certificate

    “เราสามารถมั่นใจได้อย่างไรว่า Certificate ที่ใช้อยู่มีความปลอดภัยเพียงพอ”

      • ในกรณีนี้เหมาะกับท่านที่มี Certificate ที่ซื้อมาเอง หรือมีการ Trust กันภายในองค์กร ในกรณีที่เป็น Self Sign Certificate แบบออกเอง ใช้เองไม่จำเป็นต้องเปลี่ยนครับ (เพราะไม่น่าเชื่อถืออยู่แล้วครับ) ใครต้องการเปลี่ยนไปใช้ Public Certificate ต้องตรวจสอบก่อนครับว่าเข้าเงื่อนไขของ Certificate นั้นหรือเปล่า เช่น *.psu.ac.th ถ้าเป็น www.cc.psu.ac.th อันนี้ใช้ไม่ได้ครับ
      • ปกติเราสามารถตรวจสอบง่าย ๆ ได้อยู่แล้วผ่าน Browser ที่ใช้อยู่ ยกตัวอย่าง Chrome สามารถอ่านรายละเอียดเพิ่มเติมได้ที่นี่ครับ
        https://support.google.com/chrome/answer/95617?hl=th
      • สำหรับ Certificate ที่แนะนำจะเป็น SHA-2 ขึ้นไป ซึ่งไม่แนะนำ SHA-1 เพราะไม่แข็งแรงพอ และจะสิ้นสุดระหว่างในปี 2016-2017 นี้ อ่านเพิ่มเติมได้ที่
        https://community.qualys.com/blogs/securitylabs/2014/09/09/sha1-deprecation-what-you-need-to-know
      • ในส่วนของ Windows Server สามารถตรวจสอบโดยการเข้า IIS จากนั้นกดดูในส่วนของ Certificate
      • ในส่วนของ Linux ก็สามารถดูได้โดยกดดู Certificate จาก Browser ครับ

    2015-11-10_0617452015-11-10_055328

    2015-11-10_055735

      • Web ไหนยังใช้ SHA-1 รีบเปลี่ยนไปใช้ SHA-2 กันดีกว่าครับ แต่ SHA-2 รองรับ Windows XP SP3 ขึ้นไปเท่านั้นครับ หน่วยงานใดยังใช้ XP อยู่แนะนำให้ Upgrade เป็น SP3 หรือไม่ก็เปลี่ยนไปใช้ Windows 7/8/8.1/10 ก็ได้ครับ
      • สามารถอ่านบทความเกี่ยวกับรวมวิธีลดช่องโหว่ Server เพิ่มเติมได้ที่นี่ครับ
        http://sysadmin.psu.ac.th/2015/11/10/serversecuritypatch
  • ตรวจสอบความปลอดภัย web server https โดย Qualys

    “จะตรวจสอบได้อย่างไรว่า Web Server ที่ให้บริการ https มีความปลอดภัยเพียงพอ”

    บทความนี้จะอธิบายวิธีการใช้งานและการอ่านค่าคร่าว ๆ ของ Web Qualys ดังนี้

    • เข้า Web Site https://www.ssllabs.com/ssltest จะปรากฏหน้าต่างให้ใส่ Domain Name ที่ต้องการตรวจสอบ ถ้าไม่ต้องการให้โชว์ผลขึ้น Score Board ประจานให้ทั่วโลกเห็น(อันนี้ห้ามคนอื่นกดไม่ได้นะครับ) ให้ติก Do not show the results on the boards จากนั้นกด Submit

    2015-11-10_044047

    • จากนั้นระบบจะทำการตรวจสอบประมาณ 1-2 นาที โดย Web Site ที่สามารถตรวจสอบได้ต้องสามารถเข้าถึงจากภายนอกเท่านั้น
    • จากนั้นจะปรากฎหน้าผลลัพธ์ในรูปแบบ Overall Rating ดังนี้

    2015-11-10_045236

    • ในส่วนแรกคือ Summary อธิบายเป็นส่วน ๆ ได้ดังนี้
    1. Overall Rating :  จะเป็นตัวบอกคร่าว ๆ ว่า Web นี้มีความปลอดภัย Grade อะไรซึ่งจากรูปได้ F แสดงว่าไม่ปลอดภัยอย่างมาก
    2. จะอธิบายเพิ่มเติมโดยแยกเป็น 4 ส่วนคือ
      Certificate - ระดับความแข็งแรงของใบประกาศ (ยากในการปลอมหรือในการถอดรหัสข้อมูล)
      Protocol Support - ระดับความปลอดภัยของ Protocol ที่ให้บริการ SSL/TLS
      Key Exchange - ระดับความปลอดภัยของการแลกเปลี่ยน Key
      Cipher Strength - ระดับความแข็งแรงของ Cipher ซึ่งเป็น Algorithm ที่ใช้ในการเข้ารหัส
      
    3. ในส่วนนี้จะอธิบายลึกลงไปว่ามีผลทำให้เกิดช่องโหว่ร้ายแรงอะไรบ้าง โดยจะบอกว่าเกิดจากอะไร เช่น จากรูป Server รองรับ SSL Version 2 ซึ่งยกเลิกการใช้งานไปแล้วเพราะไม่ปลอดภัย, เกิดช่องโหว่ FREAK, POODLE TLS โดยเราสามารถอ่านรายละเอียดเพิ่มเติมโดยการกด More Info
    4. จะอธิบายรายละเอียดเพิ่มเติม แต่ถือว่าเป็นระดับที่ยังไม่ร้ายแรง แต่แนะนำให้แก้ไข เช่น จากรูปแนะนำให้เลิกใช้ SSL Version 3 ส่วน TLS ควรใช้ Version ล่าสุดซึ่งเป็น TLS 1.2
    • โดยเราสามารถเลื่อนมาดูรายละเอียดเพิ่มเติมได้ ซึ่งจะมีบอกในส่วน Handshake Simulation ซึ่งจะตรวจสอบให้คร่าว ๆ ว่า Browser ใดไม่รองรับบ้าง

    หวังว่าจะเป็นเครื่องมือที่ช่วยยกระดับความปลอดภัยของ Web Server ที่รองรับการใช้งานแบบเข้ารหัสได้เป็นอย่างดีครับ สามารถอ่านวิธีแก้ไขช่องโหว่เพิ่มเติมได้ที่นี่ครับ

    http://sysadmin.psu.ac.th/2015/11/10/serversecuritypatch

    Reference : https://www.ssllabs.com, Qualys SSL LABS

  • วิธีการติดตั้ง CA Certificate PSU Passport บน Ubuntu Server

    ทดสอบบน : Ubuntu 14.04

    ขั้นตอนการติดตั้ง Certificate บนเครื่อง Ubuntu Server

    1. เข้า Web Site : https://ca.psu.ac.th ทำการ Login ด้วย Account PSU Passport

    2. ให้เลือกหัวข้อ Download a CA Certificate….. ดังรูป1

    3. ในหน้าต่าง Download a CA Certificate ให้ทำการ Download ไฟล์ดังรูป (เลือกดี ๆ นะครับ เลือก Base 64 ไม่ใช่ DER)2015-01-27_153731

    4. เมื่อโหลดแล้วจะได้ไฟล์ดังรูป3

    5. เมื่อดูข้อความในไฟล์จะได้ประมาณรูปนี้ (ที่เป็นแถบขาว คือ Sensor ครับ :P)2015-01-27_153759

    6. ทำการ copy ข้อความในไฟล์ certificate ไปยัง folder เก็บ certificate ดังนี้

    sudo sh -c 'cat certnew.cer > /etc/ssl/certs/psucer.crt'
    

    7. ทำการแก้ไขไฟล์ /etc/ldap/ldap.conf ดังนี้

    #TLS_CACERT /etc/ssl/certs/ca-certificates.crt
    TLS_CACERT /etc/ssl/certs/psucer.crt
    

    *หมายเหตุ จริง ๆ แล้วมีอีกวิธีคือข้ามการ Check Certificate ไปเลย โดยจะเพิ่มข้อความ TLS_REQCERT never ท้ายไฟล์ /etc/ldap/ldap.conf ก็ได้ดังนี้

    sudo sh -c 'echo "TLS_REQCERT never" >> /etc/ldap/ldap.conf'

    แต่วิธีนี้อาจจะไม่ปลอดภัยครับ เพราะอาจเจอ phising site ที่ปลอม server เข้ามาสวมรอยได้ครับ เพราะไม่ได้มีการ verify certificate ว่า server เป็นตัวจริง

  • วิธีการติดตั้ง CA Certificate PSU Passport บน Windows Server

    ทดสอบบน : Windows Server 2008 R2

    ขั้นตอนการดาวน์โหลด CA Certificate PSU Passport 

    1. เข้า Web Site : https://ca.psu.ac.th ทำการ Login ด้วย Account PSU Passport

    2. ให้เลือกหัวข้อ Download a CA Certificate….. ดังรูป1

    3. ในหน้าต่าง Download a CA Certificate ให้ทำการ Download ไฟล์ดังรูป2

    4. เมื่อโหลดแล้วจะได้ไฟล์ดังรูป3

    ขั้นตอนการติดตั้ง Certificate บนเครื่อง Windows Server สำหรับ PHP5

    1. ในกรณีที่ใช้งานกับ php5 ให้ดาวน์โหลด CA Certificate PSU Passport ใหม่โดยเลือกเป็น Base 64 ดังรูป
    2015-01-27_153731

    2. จากนั้น ให้ rename file cer เป็น .pem ดังรูป (ระวังชื่อไฟล์ให้ดี ๆ ครับ จากรูปชื่อไฟล์ certnew(1).cer เพราะมีไฟล์ certnew.cer อยู่แล้ว ซึ่งเป็นไฟล์แบบ DER ใช้แทนกันไม่ได้)
    2015-01-28_045008

    3. สร้าง Folder c:/openldap/sysconf/ และทำการ copy file .pem และสร้างไฟล์ ldap.conf ดังรูป
    2015-01-28_045234

    4. เพิ่มข้อความในไฟล์ ldap.conf ดังนี้

    TLS_CACERT c:\openldap\sysconf\certnew.pem
    

    5. จากนั้นทำการ Restart เครื่องเป็นอันจบ

    ขั้นตอนการติดตั้ง Certificate บนเครื่อง Windows Server สำหรับ .NET Application

    1. เปิดหน้าต่าง Run พิมพ์ mmc จากนั้นกด OK
    cerpsu01

    2. เลือก Add/Remove Snap-in
    cerpsu02

    3. เลือก Computer Account
    cerpsu03

    4. เลือก Local computer
    cerpsu04

    5. เลือก Trust Root Certification Authorities -> Certificates คลิกขวา เลือก All Tasks -> Import
    cerpsu05

    6. จะปรากฎหน้าต่าง Welcome กด Next
    cerpsu06

    7. จากนั้นจะปรากฎให้ใส่ไฟล์ Cer ให้ Browse ไฟล์ Cer ดังรูป (ชื่อไฟล์ในรูปอาจจะคนละชื่อกับไฟล์ที่โหลดในข้อ 1 ไม่ต้องสงสัยครับ)
    cerpsu07

    8. จากนั้นกด Next
    cerpsu08

    9. สุดท้ายกด Finish
    cerpsu09

    เป็นอันเสร็จครับ ^ ^