Как создать самоподписанный сертификат, который будет надежнее SHA-1?

Как создать самоподписанный сертификат, который будет надежнее SHA-1?

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

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

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

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

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

ОБНОВЛЯТЬ

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

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

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

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

Еще одно замечание: если у вас возникли проблемы с доверием к этому сертификату, импортируйте его также в «Доверенный корневой центр сертификации».

решение1

Конечно.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 и импортировать его в раздел «Сертификаты сервера», а затем изменить привязки вашего сайта для использования нового сертификата.

решение2

Я использую заблокированный компьютер 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, Sites -> {site name} -> Bindings... (в разделе "Edit Site"). Затем я нажал на https/443, поскольку он у меня уже был настроен, Edit... и выбрал новый сертификат из списка.

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

решение3

Да, я тоже получил сообщение об ошибке/предупреждение «Указанный сеанс входа не существует».

Я просто нажал «ОК» второй раз, и он принял его.

Связанный контент