Selasa, 30 Mei 2017

Menyimpan Sertifikat Code Signing di YubiKey

Kalau kamu seorang developer Windows, pasti tahu pentingnya menandatangani software secara digital untuk menjaga kepercayaan pengguna. Biasanya, ini dilakukan dengan Windows Authenticode credential (sertifikat + private key).

Kenapa Perlu YubiKey?

Menyimpan credential di disk, bahkan USB flash biasa, berisiko dicuri malware. YubiKey (atau perangkat FIPS 201 PIV lain) menawarkan solusi yang aman karena credential disimpan di perangkat khusus yang dirancang untuk proteksi data sensitif.

Persiapan

  • YubiKey dengan dukungan PIV (bukan FIDO U2F Security Key).
  • Credential code signing dalam bentuk .p12.
  • YubiKey PIV Manager terbaru (pivman.exe).

Menyimpan Credential ke YubiKey

  1. Buka PIV Manager dan colok YubiKey. Set PIN untuk pertama kali.
  2. Pilih "Certificates" → tab "Digital Signature".
  3. Click "Import from file" dan pilih .p12 credential. Masukkan password private key jika diminta.
  4. Setelah berhasil, cabut lalu colok kembali YubiKey. Credential siap digunakan.

Menyimpan Lebih dari Satu Credential

YubiKey punya 4 slot. Slot "Digital Signature" biasanya untuk credential utama. Slot lain bisa dipakai untuk credential tambahan, misal SHA-1 untuk kompatibilitas Windows lama. Contohnya, Rufus menyimpan SHA-256 di slot Digital Signature dan SHA-1 di slot Card Authentication.

Menggunakan Credential dengan SignTool

Gunakan flag /sha1 untuk menunjuk credential berdasarkan fingerprint SHA-1:

SignTool sign /v /sha1 655f6413a8f721e3286ace95025c9e0ea132a984 /fd SHA1 /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp rufus.exe
SignTool sign /as /v /sha1 5759b23dc8f45e9120a7317f306e5b6890b612f0 /fd SHA256 /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp rufus.exe

SignTool akan meminta YubiKey dan PIN saat menandatangani.

Catatan Penting

Jangan biarkan Windows menginstal YubiKey Minidriver otomatis, karena bisa mengganggu proses signing. Jika sudah terinstal, hapus Minidriver dan YubiKey akan berfungsi normal.

Kesimpulan

Setelah credential aman di YubiKey, hapus semua .p12/.pfx dari komputer. Backup credential hanya di media yang aman dan terkunci. Dengan cara ini, kamu bisa menandatangani software dengan aman tanpa risiko credential dicuri.

Senin, 15 Mei 2017

Compile Aplikasi Desktop ARM/ARM64 di Visual Studio 2017

Banyak yang kira Microsoft sudah meninggalkan Windows on ARM/ARM64, tapi ternyata masih memungkinkan bikin aplikasi desktop native untuk platform ini. Hanya saja, ada beberapa hal yang perlu diperhatikan sebelum Visual Studio 2017 mau “ngomong sama ARM/ARM64”.

Caveat #1 – Install Compiler & Library ARM/ARM64

Di setup Visual Studio 2017, compiler ARM tidak ditampilkan di Workloads. Kamu harus buka Individual Components dan pilih sendiri. Jangan lupa, untuk ARM64 harus pakai VS 2017 Update 4 (v15.4) atau lebih baru.

Caveat #2 – Error MSB8022

Setelah pilih target ARM/ARM64 dan klik Build Solution, mungkin muncul:

Toolset.targets(53,5): error MSB8022: Compiling Desktop applications for the ARM platform is not supported.

Ini karena Microsoft sebenarnya nggak mau kita bikin aplikasi Win32 native ARM/ARM64, lebih fokus ke UWP. Tapi ada trik supaya bisa:

  1. Buka semua file .vcxproj di project kamu.
  2. Temukan <PropertyGroup> untuk Release|ARM[64] dan Debug|ARM[64].
  3. Tambahkan properti berikut (contoh untuk ARM64):
    <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
      <ConfigurationType>Application</ConfigurationType>
      <CharacterSet>Unicode</CharacterSet>
      <WholeProgramOptimization>true</WholeProgramOptimization>
      <PlatformToolset>v141</PlatformToolset>
      <WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
    </PropertyGroup>

Caveat #3 – Pastikan SDK & Library Lengkap

Linker mungkin ngeluh soal library yang hilang, terutama kalau pakai default SDK 8.1. Beberapa library penting untuk ARM, seperti setupapi.lib, baru tersedia di Windows SDK terbaru (contoh: 10.0.15063.0). Pastikan pilih SDK lengkap di Individual Components supaya semua library terinstall.

Setelah langkah-langkah di atas, Visual Studio 2017 akan bisa compile aplikasi desktop native ARM/ARM64. Bagi yang penasaran contoh nyata, bisa lihat bagaimana Rufus melakukannya.