Mendapatkan Certificate SSL Let's Encrpyt
Untuk mendapatkan sertifikat SSL LE(Let's Encrpyt) kita bisa menggunakan tools yang bernama ACME client, Acme client sendiri ada beberapa macam, yang direkomendasikan adalah certbot, namun karena pada saat ini cerbot belum support windows, maka kita akan menggunakan
AcmeSharp untuk mendapatkan sertifikat Let's Encrypt, yang menurut saya mudah di operasikan di Windows.
Sebelum kita mendapatkan certificate, Let's Encrypt akan menggunakan salah satu dari dua metode untuk memvalidasi apakah kita benar-benar pemilik domain. metodenya yaitu http challenge, dan dns challenge. pada tutorial ini kita akan menggunakan DNS challenge.
Langkah - langkah
1. Buka power shell dan install ACMESharp dengan perintah berikut
PS> Install-Module ACMESharp
2. Buat vault untuk menyimpan profile, alias, certificate dll
PS> Initialize-ACMEVault
3. Selanjutnya registrasi email anda ke server Let's Encrypt
PS> New-ACMERegistration -Contacts mailto:somebody@example.org -AcceptTos
4. Masukkan nama domain yang ingin di pasang SSL
PS> New-ACMEIdentifier -Dns myserver.example.com -Alias dns1
5. untuk membuktikan anda sebagai pemilik domain tersebut. Let's encrypt akan mengirim kode challenge, ada dua tipe challange yang ditawarkan Let's Encrypt yang pertama HTTP challenge dan DNS challenge. lakukan yang pertama jika anda punya akses langsung ke webserver. sehubungan saya tidak punya akses langsung maka kita akan menggunakan DNS challenge
PS> Complete-ACMEChallenge dns1 -ChallengeType dns-01 -Handler manual == Manual Challenge Handler - DNS == * Handle Time: [1/12/2016 1:41:51 PM] * Challenge Token: [xfc0oQahXVqdaBlcZbk5nL8H-GSDFCoQ8LGzOL07qVI] To complete this Challenge please create a new Resource Record (RR) with the following characteristics: * RR Type: [TXT] * RR Name: [_acme-challenge.example.com] * RR Value: [vNx_fpLgvq0l4rqSATuxhxl9pa155SoeKvNZ98AFB_4] ------------------------------------Note : jika tidak muncul informasi RR NAMA/RR Value. jalankan kode berikut
PS> (Update-ACMEIdentifier dns1 -ChallengeType dns-01).Challenges | Where-Object {$_.Type -eq "http-01"}
6. Step berikutnya, login ke domain provider anda, pada bagian DNS management tambahkan record type TXT dengan name "_acme-challenge" dan value yang sama dengan RR value di step 5 yaitu "vNx_fpLgvq0l4rqSATuxhxl9pa155SoeKvNZ98AFB_4".
7. setelah anda memasukkan TXT record, silahkan ditunggu beberapa saat sampai record nya tersimpan di DNS, untuk mengecek apakah TXT record sudah terdaftar bisa dicek melalui https://mxtoolbox.com/TXTLookup.aspx
8. setelah nilai TXT record tersimpan di record DNS, jalankan submit challenge request
PS> Submit-ACMEChallenge dns1 -ChallengeType dns-01
PS> (Update-ACMEIdentifier dns1 -ChallengeType dns-01).Challenges | Where-Object {$_.Type -eq "dns-01"}jika submit challenge anda berhasil, status response nya akan menjadi valid
PS> (Update-ACMEIdentifier dns1 -ChallengeType dns-01).Challenges | Where-Object {$_.Type -eq "dns-01"} ... Status : valid ...
jika anda mendapatkan status invalid, maka harus mengulang lagi dari step 4.
10. setelah kita mendapatkan status valid, selanjutya kita akan submit certificate kita
PS> New-ACMECertificate dns1 -Generate -Alias cert1 PS> Submit-ACMECertificate cert1
11. kemudian setelah submit berhasil, ambil certificate tersebut dengan cara dibawah ini.
export private key
PS> Get-ACMECertificate cert1 -ExportKeyPEM "path\to\cert1.key.pem"export CSR
PS> Get-ACMECertificate cert1 -ExportCsrPEM "path\to\cert1.csr.pem"export LE certificate
PS> Get-ACMECertificate cert1 -ExportCertificatePEM "path\to\cert1.crt.pem" -ExportCertificateDER "path\to\cert1.crt"Export issuer certificate
PS> Get-ACMECertificate cert1 -ExportIssuerPEM "path\to\cert1-issuer.crt.pem" -ExportIssuerDER "path\to\cert1-issuer.crt"export PKCS 12
PS> Get-ACMECertificate cert1 -ExportPkcs12 "path\to\cert1.pfx" -CertificatePassword 'password'
setelah sertifikat didapatkan, kita bisa gunakan sertifikat tersebut untuk di pasang di web aplikasi/web server kita masing.
pada tutorial selanjutnya saya akan kupas menambahkan sertfikat let's encrypt ini ke dalam aplikasi spring boot
