Daftar Isi
- Alternatif 1: SSL Terpercaya (Berbayar)
- Alternatif 2: SSL Terpercaya (Gratis)
- Alternatif 3: SSL Buat Sendiri (Gratis)
- |-Membuat Pasangan Private Key-Public Key
- |-Membuat Sertifikat sebagai Pembuat Sertifikat Pribadi (seperti Perusahaan SSL)
- |-Meminta Sertifikat dari Pembuat Sertifikat Pribadi
- |-Skrip Instalasi Sertifikat di Windows
- Instalasi/Konfigurasi
- Error Aktivasi SSL Pada Windows (Kasus: Cannot Load mod_ssl.so)
- Antisipasi Akses SSL Menggunakan IP Publik Maupun Lokal
- |-Alternatif 1: Redirect IP ke Domain
- |-Alternatif 2: Jika IP Lokal Tidak Memungkinkan Di Redirect (menggunakan SNI)
- Adaptasi
- Testing
Antisipasi Akses SSL Menggunakan IP Publik Maupun Lokal
|-Alternatif 1: Redirect IP ke Domain
(sumber: https://www.digitalocean.com/community/questions/redirect-ip-to-domain-name, terakhir diakses 16 Jan 2020)
- Buat berkas konfigurasi untuk redirect (sesuai kebutuhan)
userpc@pc:~/# nano /var/www/virtualhostrule.conf
- Contoh 1
#Berkas ini dipanggil oleh Apache2 di dalam Virtual Host (mirip .htaccess)
#Jangan dihapus
RewriteEngine On
#IP Publik
RewriteCond %{HTTP_HOST} ^123\.456\.789\.1$ [OR]
#Atau IP Lokal
RewriteCond %{HTTP_HOST} ^192\.168\.1\.1$ [OR]
#Atau Domain Lokal
RewriteCond %{HTTP_HOST} ^domain\.lokal$ [OR]
#Atau HTTP (meskipun portnya sudah HTTPS)
RewriteCond %{HTTPS} off
#di redirect
RewriteRule ^(.*)$ https://www.domain.com [L,R=301] - Contoh 2
#Berkas ini dipanggil oleh Apache2 di dalam Virtual Host (mirip .htaccess)
#Jangan dihapus
RewriteEngine On
#folder tertentu dari lokal
RewriteCond %{HTTP_HOST} ^domain\.lokal$
RewriteCond %{REQUEST_URI} foldertertentu
RewriteRule ^(.*)$ https://local-www.domain.com/foldertertentu [L,R=301]
RewriteCond %{HTTP_HOST} ^192\.168\.1\.1$
RewriteCond %{REQUEST_URI} foldertertentu
RewriteRule ^(.*)$ https://local-www.domain.com/foldertertentu [L,R=301]
#IP Lokal
RewriteCond %{HTTP_HOST} ^192\.168\.1\.1$ [OR]
RewriteCond %{HTTP_HOST} ^domain\.lokal$
RewriteRule ^(.*)$ https://local-www.domain.com [L,R=301]
#IP Publik
RewriteCond %{HTTP_HOST} ^123\.456\.789\.1$
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.domain.com [L,R=301]
- Contoh 1
- Tambahkan Include di
/etc/apache2/sites-enabled/000-default.conf
di dalam<VirtualHost *:80>
serta di/etc/apache2/sites-enabled/default-ssl.conf
di dalam<VirtualHost _default:443>
, seperti contoh di bawah ini: - Restart Apache
- Coba akses menggunakan HTTP dengan port HTTPS, misal http://www.domain.com. Apabila muncul pesan kesalahan dengan kode 400 (Bad Request), maka tambahkan di
/etc/apache2/sites-enabled/000-default.conf
baris berikut:#untuk error kode 400 (Bad Request)
ErrorDocument 400 "<meta http-equiv = 'refresh' content = '0; url = https://%{HTTP_HOST}' />"
|-Alternatif 2: Jika IP Lokal Tidak Memungkinkan Di Redirect (menggunakan SNI)
(sumber: https://www.digicert.com/ssl-support/apache-multiple-ssl-certificates-using-sni.htm, terakhir diakses 16 Jan 2020)
- Lakukan: SSL Buat Sendiri, misalnya IP Lokal 192.168.1.1, maka alamat itu dimasukkan ke dalam
v3.ext
sehingga akan seperti ini:authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
IP.1 = 192.168.1.1
#localhost
IP.2 = 127.0.0.1 - Buat folder baru di /etc/ssl, misalnya folder SSLip
userpc@pc:~/# mkdir /etc/ssl/SSLip
salin domain.crt, private.key dan intermediate.ca-bundle ke folder SSLip tersebut - Tambahkan Virtual Host di
/etc/apache2/sites-enabled/default-ssl.conf
, di atas Virtual Host yang sudah ada<VirtualHost 192.168.1.1:443>
ServerName www.domain1.com
#DocumentRoot disamakan dengan yang awal
DocumentRoot /var/www/html/
SSLEngine on
SSLCertificateFile /etc/ssl/SSLip/domain.crt
SSLCertificateKeyFile /etc/ssl/SSLip/private.key
SSLCACertificateFile /etc/ssl/SSLip/intermediate.ca-bundle
</VirtualHost>
#Virtual Host Awal
<VirtualHost _default_:443>
ServerName www.domain2.com
...
Jika server tidak mendukung SNI, maka bisa menggunakan 2 port yang berbeda untuk lokal dan publik, misalnya: port 443 dan 8443, sehingga akan seperti ini:Listen 443
Listen 8443
<VirtualHost 192.168.1.1:443>
...
</VirtualHost>
<VirtualHost 192.168.1.1:8443>
...
</VirtualHost>
Adaptasi
|-Moodle
- Pada config.php, edit $CFG->wwwroot menjadi seperti ini:
//adaptasi dengan http atau https, agar tidak ada mixed http dengan https
$http = 'http' . ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 's' : '') . '://';
//alamat jika tidak dikenal
$defaultaddress = $http.'172.16.100.101';
//alamat saat ini
$currentaddress = $http.$_SERVER["SERVER_NAME"];
//alias dari alamat moodle
$allowedaddresses = array($http.'172.16.100.101', $http.'49.128.176.214', $http.'local.elearning.unisayogya.ac.id', $http.'elearning.unisayogya.ac.id');
//contoh jika ada yang pasti http
//$allowedaddresses = array($http.'172.16.100.101', 'http://49.128.176.214', $http.'local.elearning.unisayogya.ac.id', $http.'elearning.unisayogya.ac.id');
//set $CFG->wwwroot
if (in_array($currentaddress, $allowedaddresses)) $CFG->wwwroot = $currentaddress; else $CFG->wwwroot = $defaultaddress; - Pada
default_ssl.conf
atauhttpd-ssl.conf
:Header always set X-Frame-Options DENY
diganti denganHeader always set X-Frame-Options SAMEORIGIN
|-Code Igniter
Pada config.php, edit $config[‘base-url’] menjadi seperti ini:
$http = 'http' . ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 's' : '') . '://';
$newurl = str_replace("index.php","", $_SERVER['SCRIPT_NAME']);
$config['base_url'] = "$http" . $_SERVER['SERVER_NAME'] . "" . $newurl;
5 replies on “Mengaktifkan SSL (HTTPS) Pada Web Berbasis Apache dan Open SSL”
[…] Pastikan bahwa komunikasi antar sistem terjadi secara aman, misalnya melalui https, misalnya Mengaktifkan SSL (HTTPS) Pada Web Berbasis Apache dan Open SSL […]
[…] Inspirasi: https://pdsi.unisayogya.ac.id/mengaktifkan-ssl-https-pada-web-berbasis-apache-dan-open-ssl/2/#feeder… […]
[…] Process Monitor untuk melihat lebih dalam permasalahannya (https://pdsi.unisayogya.ac.id/mengaktifkan-ssl-https-pada-web-berbasis-apache-dan-open-ssl/3/#errora…). Filter pada […]
[…] sertifikat SSL yang berada di folder /pathSSL. Belum punya? Baca di sini jika belum […]
Wah artikel nya sangat menarik, banyak informasi bermanfaat yang saya ambil dari artikel ini. Saya baru tau kalau apache bisa diberikan SSL. Terimakasih min atas artikel nya