Set-up HTTPS with Free certificate

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;

Leave a comment