The process cannot access the file because it is being used by another process. (Exception from HRESULT: 0x80070020)

Вот такую вот ошибку встретил, когда попытался запустить из-под IIS Manager сайт.

Решение нашлось на support.microsoft.com. Дело оказалось в том, что такая ошибка возникает, когда какая-то программа уже начала использовать порт веб-сайта. В моем случае этой программой оказался skype. Выяснить, что за программа ведет себя нехорошо, довольно просто, для это нужно выполнить команду netstat -aon | find ":80", что даст PID процесса, захватившего порт. Ну а уже по PID можно легко найти программу через Task Manager.

PFX to PEM

Иногда возникает задача сконвертировать файл сертификата PFX в другой формат, PEM. Например, лично у меня  получилось заставить WireShark, мега-сниффер, расшифровывать SSL-трафик только когда я указал ему сертификат в PEM-формате.

Итак, что нужно для конвертации:

  1. Скачать OpenSSL (Win64 OpenSSL v1.0.0e для 64-битных машин), а также Visual C++ 2008 Redistributables (x64), которые требуются openssl.
  2. Получаем сам pfx-файл. Если он у вас уже есть – прекрасно, переходим к следующему пункту. Если нет – запускаем mmc, добавляем оснастку Certificates, выбираем узел с сертификатом, например, Personal, находим нужный сертификат, в контекстном меню выбираем Import и далее по мастеру импорта.
  3. Открываем командную строку, переходим в папку %openssl install dir%\bin и пишем команду:
    openssl pkcs12 -in <path to pfx> -out <path to out pem file> –nodes
    Команда спросит пароль к PFX-файлу, если будет введен верный – создастся PEM-файл.

Cannot import the following key file

Случилось мне как-то открыть на другом компьютере солюшен с подписанными сборками. Всё открылось нормально, только при попытке сбилдить проект студия страшно сругалась следующими словами:

Cannot import the following key file: XXX.pfx. The key file may be password protected. To correct this, try to import the certificate again or manually install the certificate to the Strong Name CSP with the following key container name: VS_KEY_4A112345678E7D1B

Попробовал открыть и сбилдить на другом компьютере – так же картина, только окончание у VS_KEY_ другое. Как оказалось, нужно устанавливать сертификат на каждой машине. Вот команда:

sn -i ХХХ.pfx VS_KEY_4A112345678E7D1B

VS_KEY, естественно, должен быть тем, который был указан в сообщении ошибки.

Windows Phone 7 Unlock Adventures

We believe Windows Phone development should be accessible to anyone. We are providing a Windows Phone developer unlocking service to developers across all skill levels and regions for just $9 USD per phone.

Давно витала в голове моей мысль о том, что неплохо бы написать парочку приложений для своего телефона для собственного пользования, но подписка разработчика в AppHub на год стоит $99, причем для правильной регистрации надо еще заморочиться разного рода документами и налогами. Совершенный демотиватор. Однако, буквально пару недель назад, я узнал, что можно разлочить свой телефон для персональных нужд, причем с благословения самой Microsoft. Стоит услуга $9, никаких действий по бумагомарательству не требует. Продано.

Читать далее

Настройка аутентификации по имени пользователя и паролю (Basic Authentication)

В качестве выхлопа от прошлых моих статей мы научились проводить аутентификацию клиента по сертификату. Сертификаты – это очень хорошо, но иногда может возникать потребность аутентифицироваться по имени и паролю. Давайте рассмотрим, как это можно сделать. Как всегда, буду говорить про настройку BizTalk Server 2010, но, поскольку он использует WCF-адаптеры, фактически это настройка WCF. Читать далее

Замечательная софтинка

Добрый человек сегодня поделился со мной ссылкой на программу под названием F.lux. Что делает эта приблуда — она, на основе заданного местоположения вычисляет и устанавливает необходимую для текущего времени суток температуру цвета монитора. Поначалу непривычно, но потом к удобству привыкаешь.

Только не забудьте выставить в настройках правильные координаты своего местоположения, а то будет монитор у вас выжигать глаза как солнце на Эквадоре.

The SSL settings for the service ‘None’ does not match those of the IIS ‘Ssl, SslNegotiateCert, SslRequireCert, SslMapCert’

Вот такая ошибка может возникнуть, если при использовании SSL не закомментировать строчку в web.config следующего вида:

<endpoint name="HttpsMexEndpoint" address="mex" binding="mexHttpsBinding" bindingConfiguration="" contract="IMetadataExchange" />

Когда ее убираешь из файла, ошибка пропадает. Как же настроить всё по-хорошему? Давайте рассмотрим.

Ошибка такая происходит потому что для HttpsMexEndpoint требуется 

<serviceMetadata httpGetEnabled = “true” />

Поэтому, если очень хочется получить HttpsMexEndpoint, нам нужно внести несколько правок в web.config и в настройки IIS.

Сначала разберемся с IIS: выбираем наш сайт, заходим в его Authentication feature
image
Там выставляем настройки – Anonymous Authentication = enabled. Если этого не сделать, будете получать ошибку Security settings for this service require ‘Anonymous’ Authentication but it is not enabled for the IIS application that hosts this service.

Далее выставим правильные настройки в web.config:

Если используется Basic Authentication (типа у вас SSL+аутентификация по имени пользователя и паролю), то нужно запретить анонимам дергать наш сервис, это делается в секции authorization:

<configuration>
    <system.web>
        <authorization>
            <deny users="?"/>
        </authorization>
    </system.web>
<configuration>

Далее нужно выставить свойства httpGetEnabled в true

<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />

Если сейчас оставить всё как есть, сохранить изменения и попытаться просмотреть сервис в браузере, появляется возможность увидеть ошибку The HttpGetEnabled property of ServiceMetadataBehavior is set to true and the HttpGetUrl property is a relative address, but there is no http base address.  Either supply an http base address or set HttpGetUrl to an absolute address. Чтобы убрать ее, есть два пути, что собственно и написано в сообщении: либо прописать базовый адрес в элементе system.serviceModel\services\service\host\baseAddresses, либо указать аттрибут HttpGetUrl. Первый вариант не годится в случае если сервис развернут в IIS, поскольку элемент baseAddresses полностью игнорируется:

<baseAddresses>

Represents a collection of baseAddress elements, which are base addresses for a service host in a self-hosted environment

Второй способ универсальнее, поэтому я им и пользуюсь, в итоге элемент serviceMetadata выглядит следующим образом:

<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" httpGetUrl="http://localhost/BizTalkWcfService/mex" />

На этом web.config можно сохранить – теперь сервис будет корректно выдавать метаданные.

Настройка SSL для BizTalk – Рецепт

В прошлой статье мы рассмотрели возможность настройки IIS для работы с SSL. Сейчас попробуем настроить работу с BizTalk, поскольку одно дело настроить какую-то там веб-службу, и совсем другое дело – заставить с этим работать BizTalk Server 2010.

Итак, что имеем и что хочется: у нас есть некий веб-сервис, который подключен к BizTalk. Сообщения от веб-сервиса сыпятся на receive location приложения BizTalk, откуда попадают в нужные оркестровки. Работа самого приложения в данном случае не столь важна, я для примера сделал, чтобы мне на входящее сообщение просто возвращалось OK. Допустим, приложение у нас работает, и при отправке запроса через soapUI мы получаем ожидаемый ответ (не сообщение об ошибке! Winking smile). Затем перед нами встала задача настроить SSL, давайте разберем, как это можно сделать.

Читать далее

BizTalk 2010. Часть 2 – Настройка

После установки BizTalk нужно запустить утилиту конфигурирования Microsoft BizTalk Server Configuration. Мастер установки BizTalk Server предложит ее запустить после окончания установки. Либо утилитку можно запустить через меню Start \ All programs \ Microsoft BizTalk Server 2010 \ BizTalk Server Configuration, этот ярлык указывает на файл «%ProgramFiles%\Microsoft BizTalk Server 2010\Configuration.exe«.

Читать далее