Cara: Membuat Sertifikat Sementara untuk Digunakan Selama Pengembangan

Saat mengembangkan layanan atau klien yang aman menggunakan Windows Communication Foundation (WCF), seringkali perlu untuk menyediakan sertifikat X.509 untuk digunakan sebagai kredensial. Sertifikat biasanya merupakan bagian dari rantai sertifikat dengan otoritas akar yang ditemukan di penyimpanan Otoritas Sertifikasi Akar Tepercaya komputer. Memiliki rantai sertifikat memungkinkan Anda untuk mencakup sekumpulan sertifikat di mana biasanya otoritas akar berasal dari organisasi atau unit bisnis Anda. Untuk mengemulasi ini pada waktu pengembangan, Anda dapat membuat dua sertifikat untuk memenuhi persyaratan keamanan. Yang pertama adalah sertifikat yang ditandatangani sendiri yang ditempatkan di penyimpanan Otoritas Sertifikasi Akar Tepercaya, dan sertifikat kedua dibuat dari serifikat pertama dan ditempatkan di penyimpanan Pribadi lokasi Komputer Lokal, atau penyimpanan Pribadi dari lokasi Pengguna Saat Ini. Topik ini menjelaskan langkah-langkah untuk membuat kedua sertifikat ini menggunakan cmdlet PowerShell New-SelfSignedCertificate).

Penting

Sertifikat yang dihasilkan cmdlet New-SelfSignedCertificate disediakan hanya untuk tujuan pengujian. Saat menyebarkan layanan atau klien, pastikan untuk menggunakan sertifikat yang sesuai yang disediakan oleh otoritas sertifikat. Ini bisa berasal dari server sertifikat Windows Server di organisasi Anda atau pihak ketiga.

Secara default, cmdlet New-SelfSignedCertificate membuat sertifikat yang ditandatangani sendiri dan sertifikat ini tidak aman. Menempatkan sertifikat yang ditandatangani sendiri di penyimpanan Otoritas Sertifikasi Akar Tepercaya memungkinkan Anda membuat lingkungan pengembangan yang lebih mensimulasikan lingkungan penyebaran Anda.

Untuk informasi selengkapnya tentang membuat dan menggunakan sertifikat, lihat Bekerja dengan Sertifikat. Untuk informasi selengkapnya tentang menggunakan sertifikat sebagai kredensial, lihat Mengamankan Layanan dan Klien. Untuk tutorial tentang menggunakan teknologi Kode autentikasi Microsoft, lihat Gambaran Umum dan Tutorial Kode autentikasi.

Untuk membuat sertifikat otoritas akar yang ditandatangani sendiri dan mengekspor kunci privat

Perintah berikut membuat sertifikat yang ditandatangani sendiri dengan nama subjek "RootCA" di penyimpanan Pribadi Pengguna Saat Ini.

$rootCert = New-SelfSignedCertificate -CertStoreLocation Cert:\CurrentUser\My -DnsName "RootCA" -TextExtension @("2.5.29.19={text}CA=true") -KeyUsage CertSign,CrlSign,DigitalSignature

Kami perlu mengekspor sertifikat ke file PFX sehingga dapat diimpor ke tempat yang diperlukan di langkah selanjutnya. Saat mengekspor sertifikat dengan kunci privat, kata sandi diperlukan untuk melindunginya. Kami menyimpan kata sandi dalam SecureString dan menggunakan cmdlet Export-PfxCertificate untuk mengekspor sertifikat dengan kunci privat yang terkait ke file PFX. Kami juga hanya menyimpan sertifikat publik ke dalam file CRT menggunakan cmdlet Export-Certificate.

[System.Security.SecureString]$rootCertPassword = ConvertTo-SecureString -String "password" -Force -AsPlainText
[String]$rootCertPath = Join-Path -Path 'cert:\CurrentUser\My\' -ChildPath "$($rootCert.Thumbprint)"
Export-PfxCertificate -Cert $rootCertPath -FilePath 'RootCA.pfx' -Password $rootCertPassword
Export-Certificate -Cert $rootCertPath -FilePath 'RootCA.crt'

Untuk membuat sertifikat baru yang ditandatangani oleh sertifikat otoritas akar

Perintah berikut membuat sertifikat yang ditandatangani oleh RootCA dengan nama subjek "SignedByRootCA" menggunakan kunci privat penerbit.

$testCert = New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -DnsName "SignedByRootCA" -KeyExportPolicy Exportable -KeyLength 2048 -KeyUsage DigitalSignature,KeyEncipherment -Signer $rootCert

Demikian pula, kami menyimpan sertifikat yang ditandatangani dengan kunci privat ke dalam file PFX dan hanya kunci umum ke dalam file CRT.

[String]$testCertPath = Join-Path -Path 'cert:\LocalMachine\My\' -ChildPath "$($testCert.Thumbprint)"
Export-PfxCertificate -Cert $testCertPath -FilePath testcert.pfx -Password $rootCertPassword
Export-Certificate -Cert $testCertPath -FilePath testcert.crt

Menginstal Sertifikat di Penyimpanan Otoritas Sertifikasi Akar Tepercaya

Setelah sertifikat yang ditandatangani sendiri dibuat, Anda dapat menginstalnya di penyimpanan Otoritas Sertifikasi Akar Tepercaya. Sertifikat apa pun yang ditandatangani dengan sertifikat pada saat ini dipercaya oleh komputer. Untuk alasan ini, hapus sertifikat dari penyimpanan segera setelah Anda tidak lagi membutuhkannya. Ketika Anda menghapus sertifikat otoritas akar ini, semua sertifikat lain yang ditandatangani olehnya menjadi tidak sah. Sertifikat otoritas akar hanyalah mekanisme di mana sekelompok sertifikat dapat dicakup sesuai kebutuhan. Misalnya, dalam aplikasi peer-to-peer, biasanya tidak perlu otoritas akar karena Anda hanya memercayai identitas individu dengan sertifikat yang disediakan.

Untuk menginstal sertifikat yang ditandatangani sendiri di Otoritas Sertifikasi Akar Tepercaya

  1. Buka snap-in sertifikat. Untuk informasi selengkapnya, lihat Cara: Melihat Sertifikat dengan Snap-in MMC.

  2. Buka folder untuk menyimpan sertifikat, baik Komputer Lokal atau Pengguna Saat Ini.

  3. Buka folder Otoritas Sertifikasi Akar Tepercaya.

  4. Klik kanan folder Sertifikat dan klik Semua Tugas, lalu klik Impor.

  5. Ikuti instruksi wizard di layar untuk mengimpor RootCA.pfx ke penyimpanan.

Menggunakan sertifikat Dengan WCF

Setelah menyiapkan sertifikat sementara, Anda dapat menggunakannya untuk mengembangkan solusi WCF yang menentukan sertifikat sebagai jenis kredensial klien. Misalnya, konfigurasi XML berikut menentukan keamanan pesan dan sertifikat sebagai jenis kredensial klien.

Untuk menentukan sertifikat sebagai jenis kredensial klien

  1. Dalam file konfigurasi untuk layanan, gunakan XML berikut untuk mengatur mode keamanan ke pesan, dan jenis kredensial klien ke sertifikat.

    <bindings>
      <wsHttpBinding>
        <binding name="CertificateForClient">
          <security>
            <message clientCredentialType="Certificate" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
    
  2. Dalam file konfigurasi untuk klien, gunakan XML berikut untuk menentukan bahwa sertifikat ditemukan di penyimpanan pengguna, dan dapat ditemukan dengan mencari bidang SubjectName untuk nilai "CohoWinery."

    <behaviors>
      <endpointBehaviors>
        <behavior name="CertForClient">
          <clientCredentials>
            <clientCertificate findValue="CohoWinery" x509FindType="FindBySubjectName" />
          </clientCredentials>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    

Untuk informasi selengkapnya tentang menggunakan sertifikat di WCF, lihat Bekerja dengan Sertifikat.

.NET Framework Security

Pastikan untuk menghapus sertifikat otoritas akar sementara dari Otoritas Sertifikasi Akar Tepercaya dan folder Pribadi dengan mengeklik kanan sertifikat, kemudian mengeklik Hapus.

Lihat juga