Использование SSL с веб-сокетами в IIS 8.x

Меня часто спрашивают, как нужно сконфигурировать IIS для того, чтобы иметь возможность использовать SSL вместе с веб-сокетами. На самом деле всё очень просто, далее я покажу как. Идём и скачиваем тестовый пример кода из галереи MSDN. Открываем его при помощи Visual Studio 2012 или Visual Studio 2013.
 

Устанавливаем локальный IIS в качестве веб-сервера.



Открываем консоль управления IIS.



Создаём самоподписанный сертификат.



Устанавливаем новую привязку для сайта используя созданный нами сертификат.



Запускаем приложение.



Тестируем соединение с сокетом сервера, как видно ниже его нет.



Меняем протокол в веб-приложении с "ws" на "wss".
//The address of our HTTP-handler
var handlerUrl = "wss://localhost/SimpleWebSocketApplication/WebSocketHandler.ashx";
 
function SendData() {
 
    //Initialize WebSocket.
    InitWebSocket();
 
    //Send data if WebSocket is opened.
    if (webSocket.OPEN && webSocket.readyState == 1)
        webSocket.send(nameTextBox.value);
 
    //If WebSocket is closed, show message.
    if (webSocket.readyState == 2 || webSocket.readyState == 3)
        webSocketStatusSpan.innerText = "WebSocket closed, the data can't be sent.";
}
 
function CloseWebSocket() {
    webSocket.close();
}
 

Перезапускаем приложение.



И видим, что всё работает.