Как я могу создать самозаверяющий сертификат, который сильнее, чем SHA-1?

Для среды разработки я могу создать самозаверяющий сертификат в IIS7.5. Но этот сертификат - SHA-1, и недавно браузеры жалуются на это. Когда я открываю FireBug, я вижу следующие предупреждения:

"Этот сайт использует сертификат SHA-1; рекомендуется использовать сертификаты с алгоритмами подписи, которые используют хэш-функции сильнее, чем SHA-1".

Итак, мои вопросы:

1) Есть ли способ создать самоподписанный сертификат, более сильный, чем SHA-1?

2) Если нет, есть ли способ заставить браузер перестать показывать эти предупреждения?

ОБНОВИТЬ

Я закончил тем, что использовал ответ @vcsjones, но это дошло только до сих пор. Там у нас есть пара вопросов, которые мне пришлось решить, прежде чем заставить это работать.

1) Почему-то не смог импортировать сертификат с паролем. Так что я закончил тем, что создал его без него.

2) Когда я импортировал сертификат.pfx через IIS, я продолжал получать сообщение "Указанный сеанс входа в систему не существует", когда я пытался применить новый сертификат в редактировании привязок. Поэтому я провел небольшое исследование и нашел этот SO-ответ полезным, в частности ответ Майка Л.

Еще я хотел бы добавить, что при импорте сертификата не забудьте выбрать сертификат.pfx. Выбор мастера по умолчанию - *.cer, который вы можете импортировать (я допустил ошибку), но тогда я не смог увидеть сертификат в сертификатах сервера IIS. Когда я посмотрел поближе, на иконке не было маленького ключа. Теперь я исследовал, что мне удалось починить его через статью KB-889651. Поэтому убедитесь, что вы импортируете.pfx, и он будет работать без ремонта.

Еще одно замечание: если у вас возникли проблемы с доверием к этому сертификату, импортируйте его также в "Trusted Root Certificate Authority".

3 ответа

Решение

Конечно. makecert Утилита, которая является частью Windows SDK, может сделать это:

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

-a Параметр устанавливает алгоритм хеширования. Это выплевывает файл PVK и DER .cer. Конечно, вы также можете изменить общее имя на любое другое, я просто использовал localhost в качестве примера. Вы можете объединить их в PFX (что IIS предпочитает использовать при импорте сертификата), используя pvk2pfx (также часть SDK):

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

Это просто занимает два файла makecert генерирует и объединяет их в файл PKCS12 .pfx.

Получив файл PFX, вы откроете IIS и импортируете его в разделе "Сертификаты сервера", а затем измените привязки своего сайта для использования нового сертификата.

Я использую заблокированный компьютер Windows 7 Enterprise на работе, и поэтому я не могу установить Windows SDK, чтобы получить доступ к makecert, Вот как я создал свой самоподписанный сертификат sha256 (взято с https://core.telegram.org/bots/self-signed):

  1. Решите, в каком каталоге вы хотите сохранить свой сертификат
  2. Создайте текстовый файл в этом каталоге с именем template.txt со следующим содержанием:

    [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. замещать {your.domain.com} с адресом, который вы будете использовать для доступа к вашему сайту, например "CN=localhost"

  4. Откройте командную строку и перейдите в каталог сертификатов.
  5. Бежать certreq -new template.txt RequestFileOut
  6. Вам нужно знать серийный номер, поэтому запустите certutil -store -user my чтобы получить дамп, который включает в себя серийный номер
  7. замещать {SERIALNUMBER} с серийным номером на свалке и {YOURDER}.crt с именем выходного файла: certutil -user -store -split my {SERIALNUMBER} {YOURDER}.crt
  8. замещать {YOURDER}.crt с именем входного файла и {YOURPEM}.cer с именем выходного файла: certutil -encode {YOURDER}.crt {YOURPEM}.cer
  9. замещать {your.domain.com} с вашим фактическим (тестовым) доменным именем и {YOURPKCS}.pfx с именем выходного файла: certutil -exportpfx -user {your.domain.com} {YOURPKCS}.pfx NoChain

После этого я зашел в IIS Manager, Сайты -> {имя сайта} -> Привязки... (в разделе "Редактировать сайт"). Затем я нажал на https/443, потому что он уже был настроен, Изменить... и выбрал новый сертификат из списка.

Firefox пожаловался, что на моем сайте используется самозаверяющий сертификат, поэтому я просто добавил его в качестве исключения, и вуаля! это сработало!

Да, я получил сообщение об ошибке "/ указанный сеанс входа в систему не существует".

Я просто нажал ОК во второй раз, и он принял это.

Другие вопросы по тегам