Как я могу создать самозаверяющий сертификат, который сильнее, чем 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):
- Решите, в каком каталоге вы хотите сохранить свой сертификат
Создайте текстовый файл в этом каталоге с именем
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
замещать
{your.domain.com}
с адресом, который вы будете использовать для доступа к вашему сайту, например"CN=localhost"
- Откройте командную строку и перейдите в каталог сертификатов.
- Бежать
certreq -new template.txt RequestFileOut
- Вам нужно знать серийный номер, поэтому запустите
certutil -store -user my
чтобы получить дамп, который включает в себя серийный номер - замещать
{SERIALNUMBER}
с серийным номером на свалке и{YOURDER}.crt
с именем выходного файла:certutil -user -store -split my {SERIALNUMBER} {YOURDER}.crt
- замещать
{YOURDER}.crt
с именем входного файла и{YOURPEM}.cer
с именем выходного файла:certutil -encode {YOURDER}.crt {YOURPEM}.cer
- замещать
{your.domain.com}
с вашим фактическим (тестовым) доменным именем и{YOURPKCS}.pfx
с именем выходного файла:certutil -exportpfx -user {your.domain.com} {YOURPKCS}.pfx NoChain
После этого я зашел в IIS Manager, Сайты -> {имя сайта} -> Привязки... (в разделе "Редактировать сайт"). Затем я нажал на https/443, потому что он уже был настроен, Изменить... и выбрал новый сертификат из списка.
Firefox пожаловался, что на моем сайте используется самозаверяющий сертификат, поэтому я просто добавил его в качестве исключения, и вуаля! это сработало!
Да, я получил сообщение об ошибке "/ указанный сеанс входа в систему не существует".
Я просто нажал ОК во второй раз, и он принял это.