Tutorial ini akan memandu Anda melalui konfigurasi pertama situs web SSL dengan sertifikasi Let's Encrypt. Let's Encrypt adalah otoritas SSL baru yang menyediakan sertifikat SSL gratis. Kami akan menggunakan dua tutorial yang ada ("Cara menyiapkan situs web SSL yang kompatibel dengan sertifikat Let's Encrypt" dan "Server Sempurna - Ubuntu 15.10 (Wily Werewolf) dengan Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot dan ISPConfig 3").
Penyiapan yang dijelaskan di sini kompatibel dengan server LAMP Ubuntu apa pun, jadi Anda juga dapat menggunakan yang ini sebagai penyiapan dasar.
Tutorial ini akan menunjukkan cara setup Let's Encrypt pada Server tanpa ISPConfig 3 karena akan ada implementasi langsung dari layanan Let's Encrypt di rilis ISPConfig 3 berikutnya (versi 3.1) segera. Jadi jika Anda berencana untuk menggunakan ISPConfig, tunggu rilis 3.1 dan juga tutorial baru.
Membuat situs web
Langkah 1 adalah membuat konfigurasi dan direktori situs web dan mengaktifkan SSL (Apache mod_ssl) untuk itu. Terserah Anda jika Anda menggunakan konfigurasi default untuk satu situs di server atau Anda berencana menggunakan beberapa vhost untuk menghosting lebih dari satu domain. Untuk penggunaan yang lebih andal dan skalabel, saya akan membuat konfigurasi vhost untuk domain "lab" saya ISP1.cloudapp.net dari Azure.
Semua vhosts disimpan di direktori /etc/Apache2/sites-available secara default di Ubuntu dan Debian. Jalankan perintah berikut untuk mengambil daftar file konfigurasi vhost yang ada.
ls -l /etc/apache2/sites-available/
Output saya terlihat seperti ini:
[email protected]:/home/falco# ls -l /etc/apache2/sites-available/
-rw-r--r-- 1 root root 1332 May 20 2015 000-default.conf
-rw-r--r-- 1 root root 6437 May 20 2015 default-ssl.conf
Kita sekarang dapat menggunakan file konfigurasi "default" untuk mengkloning dan mengeditnya atau kita dapat menggunakan konfigurasi kita sendiri. Saya lebih suka menggunakan konfigurasi saya sendiri karena saya melakukannya selama bertahun-tahun, jadi mari buat vhost baru dengan membuat file:
vi /etc/apache2/sites-available/isp1.cloudapp.net.conf
Dalam tempel file ini, konten berikut:
<VirtualHost *:80>
ServerName isp1.cloudapp.net
ServerAlias www.isp1.cloudapp.net
DocumentRoot /home/web/isp1.cloudapp.net/public_html
ErrorLog /home/web/isp1.cloudapp.net/log/habdak.eu_error_log
CustomLog /home/web/isp1.cloudapp.net/log/habdak.eu_access_log combinedScriptAlias /cgi-bin/ /home/web/isp1.cloudapp.net/cgi-bin/
DirectoryIndex index.html index.htm index.php index.php4 index.php5
<Directory /home/web/isp1.cloudapp.net/public_html>
Options -Indexes +IncludesNOEXEC +SymLinksIfOwnerMatch +ExecCGI
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
Require all granted
AddType application/x-httpd-php .php
AddType application/json .json
</Directory>
<Directory /home/web/isp1.cloudapp.net/cgi-bin>
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
Require all granted
</Directory>
RemoveHandler .php
RemoveHandler .php5
php_admin_value engine Off
IPCCommTimeout 301
FcgidMaxRequestLen 1073741824
php_value memory_limit 128M
php_value suhosin.session.encrypt Off
</VirtualHost>
<VirtualHost *:443>
ServerName isp1.cloudapp.net
ServerAlias www.isp1.cloudapp.net
DocumentRoot /home/web/isp1.cloudapp.net/public_html
ErrorLog /home/web/isp1.cloudapp.net/log/habdak.eu_error_log
CustomLog /home/web/isp1.cloudapp.net/log/habdak.eu_access_log combined
ScriptAlias /cgi-bin/ /home/web/isp1.cloudapp.net/cgi-bin/
DirectoryIndex index.html index.htm index.php index.php4 index.php5
<Directory /home/web/isp1.cloudapp.net/public_html >
Options -Indexes +IncludesNOEXEC +SymLinksIfOwnerMatch +ExecCGI
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
Require all granted
AddType application/x-httpd-php .php
AddType application/json .json
</Directory>
<Directory /home/web/isp1.cloudapp.net/cgi-bin >
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
Require all granted
</Directory>
RemoveHandler .php
RemoveHandler .php5
php_admin_value engine Off
IPCCommTimeout 301
FcgidMaxRequestLen 1073741824
php_value memory_limit 128M
php_value suhosin.session.encrypt Off
SSLEngine on
SSLCertificateFile /home/web/isp1.cloudapp.net /ssl.cert
SSLCertificateKeyFile /home/web/isp1.cloudapp.net /ssl.key
SSLCACertificateFile /home/web/isp1.cloudapp.net /ssl.ca
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:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-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:!KRB5-DES-CBC3-SHA
SSLProtocol All -SSLv2 -SSLv3
SSLCompression off
SSLHonorCipherOrder On
</VirtualHost>
Ganti nama domain dengan domain Anda di mana pun itu terjadi dan simpan file tersebut. Untuk mengaktifkan konfigurasi, jalankan:
a2ensite isp1.cloudapp.net.conf
Sekarang buat kembali folder untuk situs web:
mkdir /home/web
mkdir /home/web/isp1.cloudapp.net
mkdir /home/web/isp1.cloudapp.net/public_html
mkdir /home/web/isp1.cloudapp.net/cgi-bin
mkdir /home/web/isp1.cloudapp.net/logs
Mulai ulang apache untuk menerapkan konfigurasi baru:
sudo service apache2 restart
Sekarang kita harus membuat file sertifikat.
Instal Let's Encrypt dan buat Sertifikat SSL pertama Anda
Saya lebih suka menggunakan login root untuk administrasi daripada menjalankan sudo sebelum setiap perintah, jadi mari kita su ke pengguna root:
sudo su
Arahkan ke direktori home root Anda:
cd ~root
Instal git untuk mengambil file repositori Let's Encrypt git:
apt-get install git
Sekarang kloning repositori git Let's Encrypt:
git clone https://github.com/letsencrypt/letsencrypt.git letsencrypt
Arahkan ke folder letsencrypt baru Anda:
cd letsencrypt
Dan minta sertifikat SSL Anda:
./letsencrypt-auto certonly --webroot -w /home/web/isp1.cloudapp.net/public_html -d isp1.cloudapp.net
Jika Anda meminta sertifikat untuk domain master (1 domain level alias cloudapp.net) gunakan parameter -d dua kali. Dengan dan tanpa awalan www seperti ini:
./letsencrypt-auto certonly --webroot -w /home/web/cloudapp.net/public_html -d cloudapp.net -d www.cloudapp.net
Jika Anda tidak melakukannya, sertifikat tidak akan valid bagi pengunjung yang membuka situs Anda dengan awalan www.
Anda juga dapat menambahkan subdomain lain ke satu sertifikat. Misalnya, jika subdomain admin.cloudapp.net Anda cocok dengan situs yang sama (folder yang sama di server), Anda juga harus menambahkannya ke sertifikat ini. Sayangnya, Anda tidak dapat menggunakan karakter pengganti seperti (*.cloudapp.net) dengan enkripsi mari.
Let's Encrypt akan secara otomatis memperbarui semua dependensi dan memandu Anda melalui penyiapannya. Yang perlu Anda lakukan adalah menunggu jendela prompt yang menanyakan alamat email Anda. Alamat ini hanya digunakan untuk memulihkan data yang hilang.
Kunci baru Anda sekarang disimpan di /etc/letsencrypt/ secara default. Kami akan menautkannya ke direktori situs web kami sehingga kami dapat mengelola kuncinya nanti.
ln -s /etc/letsencrypt/archive/isp1.cloudapp.net/cert1.pem /home/web/isp1.cloudapp.net/ssl.cert
ln -s /etc/letsencrypt/archive/isp1.cloudapp.net/chain1.pem /home/web/isp1.cloudapp.net/ssl.ca
ln -s /etc/letsencrypt/archive/isp1.cloudapp.net/privkey1.pem /home/web/isp1.cloudapp.net/ssl.key
Sekarang Anda seharusnya dapat mengakses situs web Anda dengan SSL. Let's Encrypt akan secara otomatis memberi tahu Anda tentang sertifikat yang kedaluwarsa tepat waktu dengan mengirimkan email kepada Anda ke alamat yang telah Anda berikan dalam penginstalan Let's Encrypt.