Set-up HTTPS with Free certificate
– แบบ gen เอง
# a2enmod ssl # make-ssl-cert generate-default-snakeoil -force-overwrite
เติมใน apache conf
SSLEngine on SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key SSLOptions +StdEnvVars BrowserMatch "MSIE [2-6]" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0 # MSIE 7 and newer should be able to use keepalive BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
แบบใช้ let’s encrypt free sir
https://certbot.eff.org/#ubuntutrusty-apache
cd /usr/local/sbin/ wget https://dl.eff.org/certbot-auto chmod a+x certbot-auto ./certbot-auto ตอบไปตามขั้นตอน มันจะแก้ apache config ให้เสร็จ
update ทดลอง /usr/local/sbin/certbot-auto renew -dry-run
update จริง /usr/local/sbin/certbot-auto renew --quiet --no-self-upgrade
ใส่ใน cron
0 0 * * * python -c 'import random; import time; time.sleep(random.random() * 43200)' && PATH=/usr/sbin:$PATH /usr/local/sbin/certbot-auto renew --quiet # --no-self-upgrade
สร้าง dhparm.pem
cd /etc/apache2 ; openssl dhparam -out dhparams.pem 2048
แล้วก็ตัดแปะผลลัพธ์ไปต่อท้าย SSL Certificate file ที่ใช้
เติมใน /etc/apache2/mods-enabled/ssl.conf
# Ott added April 7, 2016 SSLProtocol all -SSLv2 -SSLv3 SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA SSLHonorCipherOrder on #SSLOpenSSLConfCmd Curves secp384r1 #SSLOpenSSLConfCmd DHParameters "/etc/apache2/dhparam.pem"
บางครั้งมีปัญหาเรื่อง tls-sni-01 challenge
เป็นจากสองบรรทัดนี้ ต้องเอาออกถึงจะ renew cert ได้
#ssl_stapling on; #ssl_stapling_verify on;
(วิธี renew แบบใช้ standalone authen - nginx จะ down ไปแป็บนึง ไม่ดีนัก) certbot-auto --authenticator standalone --installer nginx -d http://www-test.abc.com --pre-hook "service nginx stop" --post-hook "service nginx start"
ใช้ Cer ที่ที่ซื้อมา, ถ้าใช้ Apache config ประมาณนี้ (สังเกตว่า SSLPassPhraseDialog อยู่นอก VirtualHost
SSLCertificateFile /etc/apache2/ssl/mycer.cer SSLCertificateKeyFile /etc/apache2/ssl/mycer.key SSLCertificateChainFile /etc/apache2/ssl/mycer.cer </VirtualHost> SSLPassPhraseDialog exec:/etc/apache2/ssl/mycer-passphrase-file.sh
โดยที่ข้างใน /etc/apache2/ssl/mycer-passphrase-file.sh คือ (chmod +x)
#!/bin/sh cat /etc/apache2/ssl/mycer.pass
แต่ถ้า nginx ง่ายกว่า
ssl_certificate /etc/nginx/ssl/mycer.cer; ssl_password_file /etc/nginx/ssl/mycer.passwd; ssl_certificate_key /etc/nginx/ssl/mycer.key;