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

8

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

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

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

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

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

ОБНОВИТЬ

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

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

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

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

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

CrnaStena
источник

Ответы:

8

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

vcsjones
источник
Я создал его, но где я могу найти cert.cer и out.pfx?
Питер
1
@peter - это рабочий каталог консоли. Вы увидите что-то вроде C:\Path\ToADirectory>в командной строке. Это ваш рабочий каталог.
vcsjones
Когда я попытался импортировать out.pfx в iis, он спросил пароль. Я набрал пароль, который я установил при создании сертификата, используя ваш комментарий. Но это не удалось, знаете ли вы причину?
Питер
vcsjones я установил сертификат в систему, а затем я установил binind в IIS, когда я просматривал в Firefox, он не открывается, но в IE я продолжал выводить сообщение об ошибке и мог видеть веб-сайт, но это показывать значок, как сертификат не из доверенного центр сертификации
питер
1
Следует отметить, что makecert устарела. Для Windows 8.1 / Windows Server 2012 R2 и выше вы можете вместо этого использовать команду Powershell, описанную здесь: stackoverflow.com/a/19446469/914490
Майк
6

Я использую заблокированный компьютер 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 пожаловался, что на моем сайте используется самозаверяющий сертификат, поэтому я просто добавил его в качестве исключения и вуаля! это сработало!

CJ Деннис
источник
Это наиболее работающий пример без какой-либо установки, что иногда невозможно на сервере prod.
HungryMind
Я не смог заставить это работать на моем компьютере с Windows 7, но он отлично работал на сервере 2012. Как примечание {yourpem} .cer и {yourpkcs.pfx} генерируются двумя командами, в которых они перечислены. Вы ' Возможно, вы захотите использовать то же имя, что и {yourder} .crt. Так что для простоты, {yourcert} .crt, {yourcert} .cer, {yourcert} .pfx
DaBlue
0

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

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

anthonymaw
источник