Jumat, 28 November 2025

Membuat HTTPS pada localhost


Deskripsi
membuat agar localhost menjadi https

Spesifikasi sistem
Langkah

1.Install OpoenSSL pada “C:\OpenSSL-Win64” berfungsi untuk membuat sertifikat

2.Aktifkan Apache SSL Module
    -buka file “xampp/apache/conf/httpd.conf”
    -cari text “#LoadModule ssl_module modules/mod_ssl.so” hapus “#” agar aktif
    -cari text “#Include conf/extra/httpd-ssl.conf” hapus “#” agar aktif

3.Buat sertifikat SSL untuk localhost
    -buka cmd dengan administrator , dan masuk ke folder “cd C:\OpenSSL-Win64\bin”
    -ketik perintah berikut :
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt
    -kemudian akan muncul parameter untuk isi data , isilah dengan bebas kecuali “Common Name” isi         dengan “localhost
    -setelah selesai akan muncul 2 file , “server.crt” dan “server.key”
    -pindahkan file tersebut diatas ke :
server.key → C:\xampp\apache\conf\ssl.key\server.key
server.crt → C:\xampp\apache\conf\ssl.crt\server.crt
 -pastikan masing2 file berada pada folder yg benar

4.Atur VirtualHost HTTPS
    -buka file “xampp/apache/conf/extra/httpd-ssl.conf”
    -pastikan isinya sbb :
< virtualhost _default_:443="" >
DocumentRoot "C:/xampp/htdocs"
ServerName localhost:443
SSLEngine on
SSLCertificateFile "conf/ssl.crt/server.crt"
SSLCertificateKeyFile "conf/ssl.key/server.key"
</virtualhost >

5.Validasi sertifikat (trusted) 
     -jalankan script “make_https_localhost_valid.bat” berikut : 

@echo off

echo ==============================================

echo   Membuat Sertifikat HTTPS Localhost VALID

echo   (Trusted, Tidak Ada Warning Chrome)

echo ==============================================

echo.


REM --- Konfigurasi folder ---

set OPENSSL=C:\OpenSSL-Win64\bin\openssl.exe

set CERTDIR=%cd%\cert-localhost

set XAMPP_SSL=C:\xampp\apache\conf


REM --- Cek apakah openssl ada ---

if not exist "%OPENSSL%" (

    echo ERROR: OpenSSL tidak ditemukan di:

    echo %OPENSSL%

    echo Pastikan kamu install "Win64 OpenSSL" dari Shining Light.

    pause

    exit /b

)


REM --- Buat folder sertifikat ---

mkdir "%CERTDIR%"

cd "%CERTDIR%"


echo Membuat Root CA...

"%OPENSSL%" genrsa -out rootCA.key 2048


"%OPENSSL%" req -x509 -new -nodes -key rootCA.key -sha256 -days 3650 -out rootCA.pem -subj "/C=ID/ST=Local/L=Local/O=LocalDev/OU=Dev/CN=Localhost-Root-CA"


echo Root CA berhasil dibuat.

echo.


echo Menginstall Root CA ke Trusted Root Store...

certutil -addstore -f "Root" rootCA.pem


echo Root CA terinstall.

echo.


echo Membuat private key untuk localhost...

"%OPENSSL%" genrsa -out localhost.key 2048


echo Membuat CSR untuk localhost...

"%OPENSSL%" req -new -key localhost.key -out localhost.csr -subj "/C=ID/ST=Local/L=Local/O=LocalDev/OU=Dev/CN=localhost"


echo Membuat file ext untuk SAN...

echo authorityKeyIdentifier=keyid,issuer > localhost.ext

echo basicConstraints=CA:FALSE >> localhost.ext

echo keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment >> localhost.ext

echo subjectAltName = @alt_names >> localhost.ext

echo [alt_names] >> localhost.ext

echo DNS.1 = localhost >> localhost.ext

echo DNS.2 = 127.0.0.1 >> localhost.ext


echo Menandatangani sertifikat dengan Root CA (Valid HTTPS)...

"%OPENSSL%" x509 -req -in localhost.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out localhost.crt -days 365 -sha256 -extfile localhost.ext


echo Sertifikat localhost valid dibuat.

echo.


REM --- Copy sertifikat ke XAMPP ---

echo Menyalin sertifikat ke folder XAMPP...

copy localhost.crt "%XAMPP_SSL%\ssl.crt\server.crt" /Y

copy localhost.key "%XAMPP_SSL%\ssl.key\server.key" /Y


echo Selesai!

echo ==============================================

echo  Sertifikat HTTPS localhost VALID sudah dibuat

echo  Root CA telah ditambahkan ke Windows

echo  Chrome sekarang akan menunjukkan gembok hijau

echo ==============================================

echo.

pause


 6.Restart Apache / XAMPP 
     -buka control panel xampp , klik stop kemudian start kembali. 
     -test pada browser “https://localhost” 

Catatan
jika pada browser https tercoret artinya https sudah aktif tapi tidak tervalidasi