Difference between revisions of "Let's Encrypt"

From CMU ITSC Network
Line 7: Line 7:
  
 
=== Let's Encrypt บน apache, Ubuntu ===
 
=== Let's Encrypt บน apache, Ubuntu ===
 +
* เครื่องมือที่ใช้สำหรับการขอใช้งาน Let's Encrypt certificate คือ [https://certbot.eff.org certbot] สามารถเข้าไปดูวิธีการติดตั้ง certbot ได้ที่คู่มือการใช้งานบนเว็บไซต์ certbot กรณี Ubuntu สามารถติดตั้งได้โดยง่าย
 +
<source>
 +
$ sudo add-apt-repository ppa:certbot/certbot
 +
$ sudo apt-get update
 +
$ sudo apt-get install python-certbot-apache
 +
</source>
 +
 +
* ในส่วนของ apache ให้ทำการ config virtual host ในลักษณะที่เป็นไฟล์แยกไว้ใน /etc/apache2/site-enabled/domain.conf เช่น<br>
 +
/etc/apache2/site-enabled/xEmXjMUmVr.cmu.ac.th.conf<br>
 +
<source>
 +
<VirtualHost *:80>
 +
        ServerAdmin supawit.w@cmu.ac.th
 +
        ServerName xEmXjMUmVr.cmu.ac.th
 +
 +
        ErrorLog ${APACHE_LOG_DIR}/xEmXjMUmVr-error.log
 +
 +
        # Possible values include: debug, info, notice, warn, error, crit,
 +
        # alert, emerg.
 +
        LogLevel warn
 +
 +
        CustomLog ${APACHE_LOG_DIR}/xEmXjMUmVr-access.log combined
 +
 +
        DocumentRoot /home/supawit/xEmXjMUmVr/html
 +
        <Directory />
 +
                Options FollowSymLinks
 +
                AllowOverride None
 +
        </Directory>
 +
        <Directory /home/supawit/xEmXjMUmVr/html>
 +
                Options FollowSymLinks MultiViews
 +
                AllowOverride None
 +
                Order allow,deny
 +
                allow from all
 +
        </Directory>
 +
        <IfModule mpm_itk_module>
 +
                AssignUserId supawit supawit
 +
        </IfModule>
 +
</VirtualHost>
 +
</source>
 +
'''ซึ่งเว็บไซต์จะต้องเปิดให้บริการและสามารถใช้งานได้จากอินเทอร์เน็ตได้เรียบร้อยแล้วเพื่อที่ทาง Let's Encrypt จะใช้ยืนยันความเป็นเจ้าของเว็บไซต์ได้'''
 +
* ใช้ certbot ในการขอ certificate โดยเลือก site ตาม interactive shell
 +
<source>
 +
root@license:~# certbot-auto --apache
 +
Saving debug log to /var/log/letsencrypt/letsencrypt.log
 +
 +
Which names would you like to activate HTTPS for?
 +
-------------------------------------------------------------------------------
 +
1: antivirus.cmu.ac.th
 +
2: license.cmu.ac.th
 +
3: xemxjmumvr.cmu.ac.th
 +
-------------------------------------------------------------------------------
 +
Select the appropriate numbers separated by commas and/or spaces, or leave input
 +
blank to select all options shown (Enter 'c' to cancel):3
 +
Obtaining a new certificate
 +
Performing the following challenges:
 +
tls-sni-01 challenge for xemxjmumvr.cmu.ac.th
 +
Waiting for verification...
 +
Cleaning up challenges
 +
Generating key (2048 bits): /etc/letsencrypt/keys/0002_key-certbot.pem
 +
Creating CSR: /etc/letsencrypt/csr/0002_csr-certbot.pem
 +
Created an SSL vhost at /etc/apache2/sites-available/xEmXjMUmVr.cmu.ac.th-le-ssl.conf
 +
Deploying Certificate for xemxjmumvr.cmu.ac.th to VirtualHost /etc/apache2/sites-available/xEmXjMUmVr.cmu.ac.th-le-ssl.conf
 +
Enabling available site: /etc/apache2/sites-available/xEmXjMUmVr.cmu.ac.th-le-ssl.conf
 +
 +
Please choose whether HTTPS access is required or optional.
 +
-------------------------------------------------------------------------------
 +
1: Easy - Allow both HTTP and HTTPS access to these sites
 +
2: Secure - Make all requests redirect to secure HTTPS access
 +
-------------------------------------------------------------------------------
 +
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1
 +
 +
-------------------------------------------------------------------------------
 +
Congratulations! You have successfully enabled https://xemxjmumvr.cmu.ac.th
 +
 +
You should test your configuration at:
 +
https://www.ssllabs.com/ssltest/analyze.html?d=xemxjmumvr.cmu.ac.th
 +
-------------------------------------------------------------------------------
 +
 +
IMPORTANT NOTES:
 +
- Congratulations! Your certificate and chain have been saved at
 +
  /etc/letsencrypt/live/xemxjmumvr.cmu.ac.th/fullchain.pem. Your cert
 +
  will expire on 2017-07-10. To obtain a new or tweaked version of
 +
  this certificate in the future, simply run certbot-auto again with
 +
  the "certonly" option. To non-interactively renew *all* of your
 +
  certificates, run "certbot-auto renew"
 +
- If you like Certbot, please consider supporting our work by:
 +
 +
  Donating to ISRG / Let's Encrypt:  https://letsencrypt.org/donate
 +
  Donating to EFF:                    https://eff.org/donate-le
 +
 +
root@license:~#
 +
</source>
 +
 +
* certbot จะทำการสร้าง site ที่เป็น https ให้โดยอัตโนมัติและ reload service apache ให้<br>
 +
/etc/apache2/sites-enabled/xEmXjMUmVr.cmu.ac.th-le-ssl.conf
 +
<source>
 +
<IfModule mod_ssl.c>
 +
<VirtualHost *:443>
 +
        ServerAdmin supawit.w@cmu.ac.th
 +
        ServerName xEmXjMUmVr.cmu.ac.th
 +
 +
        ErrorLog ${APACHE_LOG_DIR}/xEmXjMUmVr-error.log
 +
 +
        # Possible values include: debug, info, notice, warn, error, crit,
 +
        # alert, emerg.
 +
        LogLevel warn
 +
 +
        CustomLog ${APACHE_LOG_DIR}/xEmXjMUmVr-access.log combined
 +
 +
        DocumentRoot /home/supawit/xEmXjMUmVr/html
 +
        <Directory />
 +
                Options FollowSymLinks
 +
                AllowOverride None
 +
        </Directory>
 +
        <Directory /home/supawit/xEmXjMUmVr/html>
 +
                Options FollowSymLinks MultiViews
 +
                AllowOverride None
 +
                Order allow,deny
 +
                allow from all
 +
        </Directory>
 +
        <IfModule mpm_itk_module>
 +
                AssignUserId supawit supawit
 +
        </IfModule>
 +
SSLCertificateFile /etc/letsencrypt/live/xemxjmumvr.cmu.ac.th/cert.pem
 +
SSLCertificateKeyFile /etc/letsencrypt/live/xemxjmumvr.cmu.ac.th/privkey.pem
 +
Include /etc/letsencrypt/options-ssl-apache.conf
 +
SSLCertificateChainFile /etc/letsencrypt/live/xemxjmumvr.cmu.ac.th/chain.pem
 +
</VirtualHost>
 +
</IfModule>
 +
</source>

Revision as of 08:29, 11 April 2017

การทำ https บน web server โดยใช้บริการฟรี SSL Certificate จาก Let's Encrypt

หลักการและเหตุผล

การให้บริการ web ให้ปลอดภัยต้องมีการเข้ารหัสข้อมูลโดยเฉพาะ web ที่มีการ log in ด้วย username, password ของ CMU IT Account หรือบัญชีใด ๆ ซึ่งเทคนิคที่ใช้กันคือ https หรือ http over SSL
ซึ่งการจะทำได้นั้นจะต้องมี SSL certificate ที่ออกจากผู้รับรองที่น่าเชื่อถือซึ่งมีค่าใช้จ่าย
Let's Encrypt เป็นผู้ออกไปรับรอง SSL certificate ที่ใช้งานได้โดยไม่เสียค่าใช้จ่าย แต่ใบรับรองจะมีอายุเพียง 90 วัน ทำให้ต้องใช้เครื่องมือในการต่ออายุใบรับรองแบบอัตโนมัติ
บทความนี้จะนำวิธีการใช้งาน SSL certificate ของ Let's Encrypt บน web server Apache บน Ubuntu Linux และ IIS บน Windows Server

Let's Encrypt บน apache, Ubuntu

  • เครื่องมือที่ใช้สำหรับการขอใช้งาน Let's Encrypt certificate คือ certbot สามารถเข้าไปดูวิธีการติดตั้ง certbot ได้ที่คู่มือการใช้งานบนเว็บไซต์ certbot กรณี Ubuntu สามารถติดตั้งได้โดยง่าย
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install python-certbot-apache
  • ในส่วนของ apache ให้ทำการ config virtual host ในลักษณะที่เป็นไฟล์แยกไว้ใน /etc/apache2/site-enabled/domain.conf เช่น

/etc/apache2/site-enabled/xEmXjMUmVr.cmu.ac.th.conf

<VirtualHost *:80>
        ServerAdmin supawit.w@cmu.ac.th
        ServerName xEmXjMUmVr.cmu.ac.th

        ErrorLog ${APACHE_LOG_DIR}/xEmXjMUmVr-error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/xEmXjMUmVr-access.log combined

        DocumentRoot /home/supawit/xEmXjMUmVr/html
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /home/supawit/xEmXjMUmVr/html>
                Options FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
        <IfModule mpm_itk_module>
                AssignUserId supawit supawit
        </IfModule>
</VirtualHost>

ซึ่งเว็บไซต์จะต้องเปิดให้บริการและสามารถใช้งานได้จากอินเทอร์เน็ตได้เรียบร้อยแล้วเพื่อที่ทาง Let's Encrypt จะใช้ยืนยันความเป็นเจ้าของเว็บไซต์ได้

  • ใช้ certbot ในการขอ certificate โดยเลือก site ตาม interactive shell
root@license:~# certbot-auto --apache
Saving debug log to /var/log/letsencrypt/letsencrypt.log

Which names would you like to activate HTTPS for?
-------------------------------------------------------------------------------
1: antivirus.cmu.ac.th
2: license.cmu.ac.th
3: xemxjmumvr.cmu.ac.th
-------------------------------------------------------------------------------
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel):3
Obtaining a new certificate
Performing the following challenges:
tls-sni-01 challenge for xemxjmumvr.cmu.ac.th
Waiting for verification...
Cleaning up challenges
Generating key (2048 bits): /etc/letsencrypt/keys/0002_key-certbot.pem
Creating CSR: /etc/letsencrypt/csr/0002_csr-certbot.pem
Created an SSL vhost at /etc/apache2/sites-available/xEmXjMUmVr.cmu.ac.th-le-ssl.conf
Deploying Certificate for xemxjmumvr.cmu.ac.th to VirtualHost /etc/apache2/sites-available/xEmXjMUmVr.cmu.ac.th-le-ssl.conf
Enabling available site: /etc/apache2/sites-available/xEmXjMUmVr.cmu.ac.th-le-ssl.conf

Please choose whether HTTPS access is required or optional.
-------------------------------------------------------------------------------
1: Easy - Allow both HTTP and HTTPS access to these sites
2: Secure - Make all requests redirect to secure HTTPS access
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1

-------------------------------------------------------------------------------
Congratulations! You have successfully enabled https://xemxjmumvr.cmu.ac.th

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=xemxjmumvr.cmu.ac.th
-------------------------------------------------------------------------------

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/xemxjmumvr.cmu.ac.th/fullchain.pem. Your cert
   will expire on 2017-07-10. To obtain a new or tweaked version of
   this certificate in the future, simply run certbot-auto again with
   the "certonly" option. To non-interactively renew *all* of your
   certificates, run "certbot-auto renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

root@license:~#
  • certbot จะทำการสร้าง site ที่เป็น https ให้โดยอัตโนมัติและ reload service apache ให้

/etc/apache2/sites-enabled/xEmXjMUmVr.cmu.ac.th-le-ssl.conf

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerAdmin supawit.w@cmu.ac.th
        ServerName xEmXjMUmVr.cmu.ac.th

        ErrorLog ${APACHE_LOG_DIR}/xEmXjMUmVr-error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/xEmXjMUmVr-access.log combined

        DocumentRoot /home/supawit/xEmXjMUmVr/html
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /home/supawit/xEmXjMUmVr/html>
                Options FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
        <IfModule mpm_itk_module>
                AssignUserId supawit supawit
        </IfModule>
SSLCertificateFile /etc/letsencrypt/live/xemxjmumvr.cmu.ac.th/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/xemxjmumvr.cmu.ac.th/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateChainFile /etc/letsencrypt/live/xemxjmumvr.cmu.ac.th/chain.pem
</VirtualHost>
</IfModule>