Bagaimana saya bisa membuat sertifikat yang ditandatangani sendiri yang lebih kuat dari SHA-1?

8

Untuk lingkungan pengembangan, saya dapat membuat sertifikat buatan sendiri di IIS7.5. Tapi sertifikat itu SHA-1 dan baru-baru ini browser mengeluhkannya. Ketika saya membuka FireBug saya melihat peringatan berikut:

"Situs ini menggunakan Sertifikat SHA-1; disarankan Anda menggunakan sertifikat dengan algoritme tanda tangan yang menggunakan fungsi hash lebih kuat daripada SHA-1."

Jadi pertanyaan saya adalah:

1) Apakah ada cara untuk membuat sertifikat yang ditandatangani sendiri yang lebih kuat dari SHA-1?

2) Jika tidak, apakah ada cara untuk memberi tahu browser agar berhenti menampilkan peringatan ini?

MEMPERBARUI

Saya akhirnya menggunakan jawaban @vcsjones, tapi itu hanya sampai sejauh ini. Di sana kami beberapa masalah yang harus saya pecahkan sebelum membuatnya bekerja.

1) Untuk beberapa alasan saya tidak dapat mengimpor sertifikat dengan kata sandi. Jadi saya akhirnya membuatnya tanpa itu.

2) Ketika saya mengimpor sertifikat .pfx melalui IIS, saya terus mendapatkan "Sesi masuk yang ditentukan tidak ada" ketika saya mencoba menerapkan sertifikat baru di Edit Bindings. Jadi saya melakukan sedikit riset dan menemukan jawaban SO ini berguna, khususnya jawaban Mike L.

Hal lain yang ingin saya tambahkan adalah ketika Anda mengimpor sertifikat, harap ingat untuk memilih sertifikat .pfx. Pilihan default wizard Impor adalah * .cer yang dapat Anda impor (kesalahan yang saya buat), tetapi kemudian saya tidak dapat melihat sertifikat di Sertifikat Server IIS. Ketika saya melihat lebih dekat itu hilang kunci kecil di ikon. Sekarang, saya melakukan riset bahwa saya bisa memperbaikinya melalui artikel KB-889651 . Jadi pastikan Anda mengimpor .pfx dan itu akan berfungsi tanpa memperbaiki.

Catatan lain, jika Anda memiliki masalah kepercayaan dengan sertifikat ini, impor juga ke "Otoritas Sertifikat Akar Tepercaya".

CrnaStena
sumber

Jawaban:

8

Tentu. The makecertutilitas yang merupakan bagian dari Windows SDK dapat melakukan itu:

makecert -len 2048 -r -a sha256 -sv private.pvk -n CN=localhost cert.cer

The -aparameter set algoritma hash. Ini memuntahkan file PVK dan DER .cer. Anda tentu saja dapat juga mengubah nama umum menjadi apa pun yang Anda inginkan, saya hanya menggunakan localhost sebagai contoh. Anda dapat menggabungkan ini ke dalam PFX (apa yang lebih disukai IIS untuk digunakan ketika mengimpor sertifikat) menggunakan pvk2pfx(juga bagian dari SDK):

pvk2pfx -spc cert.cer -pvk private.pvk -pfx out.pfx

Ini hanya mengambil dua file yang makecertdihasilkan dan menggabungkannya menjadi file .pfx PKCS12.

Dengan file PFX yang dihasilkan, Anda akan membuka IIS dan mengimpornya di bawah Sertifikat Server, kemudian mengubah binding situs Anda untuk menggunakan sertifikat baru.

vcsjones
sumber
saya membuatnya, tetapi di mana saya menemukan cert.cer dan out.pfx?
Peter
1
@ Peter itu apa pun direktori kerja konsol. Anda akan melihat sesuatu seperti C:\Path\ToADirectory>di command prompt. Itu adalah direktori kerja Anda.
vcsjones
ketika saya mencoba untuk mengimpor out.pfx di iis itu meminta kata sandi. Saya mengetikkan kata sandi yang saya tetapkan saat membuat sertifikasi dengan menggunakan komentar Anda. Tetapi gagal, apakah Anda tahu alasannya?
Peter
vcsjones saya menginstal sertifikat dalam sistem dan kemudian saya mengatur binind di IIS, ketika saya browsing di firefox itu tidak membuka, tetapi di IE saya melanjutkan pesan kesalahan dan dapat melihat situs web, tetapi ditampilkan kembali ikon seperti sertifikat bukan dari dipercaya otoritas sertifikat
peter
1
Satu hal yang perlu diperhatikan adalah bahwa makecert sekarang sudah tidak digunakan lagi. Untuk Windows 8.1 / Windows Server 2012 R2 dan lebih tinggi, Anda bisa menggunakan perintah Powershell yang dijelaskan di sini: stackoverflow.com/a/19446469/914490
Mike
6

Saya menggunakan komputer Windows 7 Enterprise yang terkunci di tempat kerja dan karenanya saya tidak dapat menginstal Windows SDK untuk mendapatkan akses makecert. Inilah cara saya membuat sertifikat yang ditandatangani sendiri oleh sha256 saya (diambil dari https://core.telegram.org/bots/self-signed ):

  1. Putuskan direktori tempat Anda ingin menyimpan sertifikat Anda
  2. Buat file teks dalam direktori yang disebut template.txtdengan konten berikut:

    [NewRequest]
    
    ; At least one value must be set in this section
    Subject = "CN={your.domain.com}"
    KeyLength = 2048
    KeyAlgorithm = RSA
    HashAlgorithm = sha256
    ;MachineKeySet = true
    RequestType = Cert
    UseExistingKeySet=false ;generates a new private key (for export)
    Exportable = true ;makes the private key exportable with the PFX
    
  3. Ganti {your.domain.com}dengan alamat yang akan Anda gunakan untuk mengakses situs Anda, mis"CN=localhost"

  4. Buka prompt perintah dan ubah ke direktori sertifikat Anda
  5. Lari certreq -new template.txt RequestFileOut
  6. Anda harus mengetahui nomor seri, jadi jalankan certutil -store -user myuntuk mendapatkan dump yang mencakup nomor seri
  7. Ganti {SERIALNUMBER}dengan nomor seri di dump dan {YOURDER}.crtdengan nama file output:certutil -user -store -split my {SERIALNUMBER} {YOURDER}.crt
  8. Ganti {YOURDER}.crtdengan nama file input dan {YOURPEM}.cerdengan nama file output:certutil -encode {YOURDER}.crt {YOURPEM}.cer
  9. Ganti {your.domain.com}dengan nama domain (tes) Anda yang sebenarnya dan {YOURPKCS}.pfxdengan nama file output:certutil -exportpfx -user {your.domain.com} {YOURPKCS}.pfx NoChain

Setelah itu saya pergi ke IIS Manager, Sites -> {nama situs} -> Bindings ... (di bawah "Edit Situs"). Saya kemudian mengklik https / 443 karena saya sudah mengaturnya, Edit ... dan memilih sertifikat baru dari daftar.

Firefox mengeluh bahwa situs saya menggunakan sertifikat yang ditandatangani sendiri sehingga saya hanya menambahkannya sebagai pengecualian, dan ya ampun! itu berhasil!

CJ Dennis
sumber
Ini adalah contoh yang paling berfungsi tanpa instalasi, yang kadang-kadang tidak mungkin pada server prod.
hungryMind
Saya tidak bisa menjalankan ini pada kotak windows 7 saya, tetapi ini bekerja dengan baik di server 2012. Sebagai catatan samping {yourpem} .cer dan {yourpkcs.pfx} dihasilkan oleh dua perintah yang tercantum di dalamnya. Anda saya mungkin ingin menggunakan nama yang sama dengan {yourder} .crt. Jadi untuk kesederhanaan, {yourcert} .crt, {yourcert} .cer, {yourcert}
.pfx
0

Ya saya mendapatkan bahwa pesan kesalahan / peringatan "sesi masuk tertentu tidak ada".

Saya baru saja mengklik OK untuk kedua kalinya dan menerimanya.

anthonymaw
sumber