Menggunakan instalasi yang dilakukan pada tulisan sebelumnya maka selanjutnya adalah untuk instalasi pada LPSE  3.6.

Pada arsitektur aplikasi LPSE (SPSE 3.6), kita bisa melakukan pemilihan apakah implementasi SSL akan dilakukan di tomcat server atau pada Apache2. Dari beberapa permasalahan sejenis pada literatur (bisa dilihat di bawah) ternyata akan lebih mudah apabila dilakukan saja pada Apache2, jadi proses yang terjadi adalah CLIENT > HTTPS > Proxy Apache2 > Aplikasi. Tentu saja ada beberapa implikasi keamanan pada perancangan seperti ini, selain itu aplikasi SPSE ada pada server yang sama.

Namun kendala yang terjadi adalah bahwa aplikasi SPSE ini berjalan di belakang Apache2 (Apache2 berlaku sebagai proxy), sehingga agar Let’s Encrypt bisa melakukan proses verifikasi kepemilikan domain kita harus menyediakan akses dari Internet terhadap file hasil generate Let’s Encrypt yang ada pada folder  .well-known/ (sila lihat tulisan sebelumnya) melalui URL LPSE sehingga Let’s Encrypt dapat mengaksesnya ke web.lpse.go.id/eproc/.well-known/<file-lainnya>.

Banyak cara untuk solusinya, namun saya memilih agar tidak sampai layanan berhenti atau saya harus terlalu banyak melakukan perubahan. Karena itu salah satu pemecahan yang dipilih adalah dengan menambahkan perintah redirect, sehingga saat Let’s Encrypt melakukan proses validasi maka apache2 akan melakukan redirect ke folder .well-known.

... (pada file virtual host SPSE) ...
# Let's encrypt
Redirect /.well-known/ http://web.lpse.go.id/eproc/.well-known/
... (baris config yang lain) ...

Lalu melakukan generate certkey …

# ./letsencrypt-auto certonly --webroot -w /web/root/path/eprocnya -d web.lpse.go.id

Kemudian akan muncul beberapa dialog seperti pengisian email dan user agreement. Apabila berhasil akan muncul folder untuk certificate key yang bisa digunakan di Apache2 server SPSE, biasanya ada di folder /etc/letsencrypt/live/web.lpse.go.id/.

Langkah selanjutnya adalah menambahkan setting virtual host agar melayani HTTPS pada file config virtual host web SPSE yang sudah ada, kurang lebih seperti ini…

<VirtualHost *:443>
SSLEngine On
LogLevel warn
SSLCertificateKeyFile /etc/letsencrypt/live/web.lpse.go.id/privkey.pem
SSLCertificateFile /etc/letsencrypt/live/web.lpse.go.id/cert.pem
SSLCertificateChainFile /etc/letsencrypt/live/web.lpse.go.id/chain.pem
CustomLog /var/log/apache2/ssl_access_kalteng.log
RedirectMatch ^/$ /eproc/
RedirectMatch ^/latihan$ /latihan/
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript application/x-httpd-php
SetInputFilter DEFLATE
SetOutputFilter DEFLATE
</VirtualHost>

Kemudian pastikan bahwa module ssl sudah on dan restart service apache2.

# a2enmod ssl
# service apache2 restart

Silahkan lakukan test untuk ini dengan mengakses https://web.lpse.go.id dan pastikan firewall tidak melakukan blocking ke port HTTPS di 443.

Sumber:

  1. http://www.apachetutor.org/admin/reverseproxies
  2. https://maximilian-boehm.com/hp2121/Create-a-Java-Keystore-JKS-from-Let-s-Encrypt-Certificates.htm
  3. https://www.digitalocean.com/community/tutorials/how-to-secure-haproxy-with-let-s-encrypt-on-ubuntu-14-04
  4. http://serverfault.com/questions/505316/ssl-setup-with-apache-in-front-of-tomcat
  5. https://confluence.atlassian.com/jira/integrating-jira-with-apache-using-ssl-203395380.html
  6. https://community.letsencrypt.org/t/how-to-use-the-certificate-for-tomcat/3677/2
  7. http://serverfault.com/questions/505316/ssl-setup-with-apache-in-front-of-tomcat
  8. http://serverfault.com/questions/486042/use-apache-as-a-https-to-http-proxy