Для среды разработки я могу создать самоподписанный сертификат в 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):
- Решите, в каком каталоге вы хотите сохранить свой сертификат.
Создайте в этом каталоге текстовый файл
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, Sites -> {site name} -> Bindings... (в разделе "Edit Site"). Затем я нажал на https/443, поскольку он у меня уже был настроен, Edit... и выбрал новый сертификат из списка.
Firefox пожаловался, что мой сайт использует самоподписанный сертификат, поэтому я просто добавил его в исключение, и вуаля! все заработало!
решение3
Да, я тоже получил сообщение об ошибке/предупреждение «Указанный сеанс входа не существует».
Я просто нажал «ОК» второй раз, и он принял его.