четверг, 21 августа 2014 г.

WCF certificate

Создание сертификат для WCF

Берем makecert.exe с “C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\Bin
Можно взять с любого сервера где есть  Visual Studio

Копируем утилиту например в каталог c:\Cert
В командной строке переходим в данный каталог и генерируем сертификат:
c:\Cert>makecert.exe -sr LocalMachine -ss My -a sha1 -n CN=localhost -sky exchange -pe
localhost - можно заменить на имя сервера

Должны получить
Succeeded

Проверяем, что сертификат находить в локальном хранилище сертификатов:
mmc.exe
добавляем оснастку сертификаты локального компьютера и смотрим, что сертификат есть.

В IIS он также должен появиться в Server Certificates.

В WCF в web.config пишем
<serviceCertificate findValue="localhost" 
storeLocation="LocalMachine" 
storeName="My" 
x509FindType="FindBySubjectName" />

Если сертификат называли по другому, то вместо localhost пишите свое имя.

Перезапуск IIS.

Проверяете wcf в браузере. Скорее всего выдаст ошибку

"Cannot find the X.509 certificate using the following search criteria: StoreName 'My', StoreLocation 'LocalMachine', FindType 'FindBySubjectName', FindValue 'localhost'."

"The certificate 'CN=localhost' must have a private key that is capable of key exchange.The process must have access rights for"

Это из-за того, что IIS не может получить доступ к данному сертификату.

Идем в каталог
C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys
 там будут файлы примерно такого названия
517f26abe54309705395e1f31ea3fa0e_0676bb44-ecb5-428b-a3ce-6e65fcfe3ffe

И на нужный ключ (по дате создания можно определить либо на весь каталог) добавляем права для чтения пользователю IIS_IUSRS.

Перезапуск IIS (iisreset)

Проверяете wcf в браузере.



Комментариев нет: