Подключение пакета Azure к служебной шине для Windows Server с настраиваемым DNS

Я пытаюсь настроить Пакет Azure для использования служебной шины для Windows Server 1.1 с настраиваемым DNS. Все работает на одной виртуальной машине (Windows Server 2012 R2) в Windows Azure.

Я следил за этим сообщением:

http://roysvork.wordpress.com/2014/06/14/developing-against-service-bus-for-windows-1-1/

Замените «servicebus» FramDNS на «mymachine.cloudapp.net» и создайте сертификат:

SelfSSL /N:CN=mymachine.cloudapp.net /V:1000 /T

На виртуальной машине Windows Azure:

  • Я установлю publuc DNS: mymachine.cloudapp.net
  • Открытые порты: 10354,10355,10356,10359,10000-10004
  • В файле hosts: 127.0.0.1 mymachine.cloudapp.net
  • Создать сертификат SelfSSL /N:CN=mymachine.cloudapp.net /V:1000 /T

PowerShell:

Stop-SBFarm –Verbose
Set-SBFarm -FarmDns 'mymachine.cloudapp.net' 
Update-SBHost –Verbose
Start-SBFarm –Verbose
New-SBAuthorizationRule -NamespaceName ServiceBusDefaultNamespace -Name MainRule -Rights Manage, Send, Listen

После этого я могу подключиться к своему пространству имен ServiceBusDefaultNamespace с помощью SAS:

const string sharedAccessKeyName = "MainRule";
const string sharedAccessKey = "<key>";

var sasTokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(sharedAccessKeyName, sharedAccessKey);

string token = sasTokenProvider.GetWebTokenAsync("https://mymachine.cloudapp.net:10355/ServiceBusDefaultNamespace","NotUsedWithSAS", false, TimeSpan.FromSeconds(15)).Result;

var existingTokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(token);

var namespaceManger = new NamespaceManager("https://mymachine.cloudapp.net:10355/ServiceBusDefaultNamespace", existingTokenProvider);
var result = namespaceManger.TopicExists("DefaultTopic");

Работает отлично. Но когда я пытаюсь создать пространство имен служебной шины на портале клиента Azure Pack - в журнале исключения:

Исключение предоставления пространства имен. Идентификатор для отслеживания: . SystemId:. Пространство имен: SomeNamespace. Метод: Активация. Исключение: System.Net.Http.HttpRequestException: произошла ошибка при отправке запроса. ---> System.Net.WebException: базовое соединение было закрыто: не удалось установить доверительные отношения для безопасного канала SSL / TLS. ---> System.Security.Authentication.AuthenticationException: удаленный сертификат недействителен в соответствии с процедурой проверки.

И статус пространства имен - Активация.

Пожалуйста помоги!


person Zanael    schedule 01.01.2015    source источник


Ответы (1)


Я нашел решение и написал сообщение о настройке служебной шины для Windows Server On-Premise с настраиваемым DNS, «Black Jack» и т. Д. Сообщение на русском языке, но многие скриншоты и примеры кода / сценария включали:

http://habrahabr.ru/post/254059/

Описание:

Трудно ответить кратко, не объяснив весь процесс настройки.

В основном проблема в сертификатах:

На виртуальной машине с служебной шиной:

1) Создайте сертификат доступа с помощью утилиты командной строки makecert.exe:

(C: \ Program Files (x86) \ Microsoft SDK \ Windows \ v7.1A \ Bin)

    makecert.exe -r -pe -n "CN=hello-habr-sb.cloudapp.net, CN=hello-habr-sb" -e 11/11/2022 -eku 1.3.6.1.5.5.7.3.2 -ss My -sr "LocalMachine" -sky Exchange -a sha256 -sy 24 -len 2048 "hello-habr-sb.cloudapp.net.cer"

Импортируйте его на сервер клиента в сертификаты - локальный компьютер (доверенный корневой центр сертификации).

2) Измените DNS с помощью PowerShell:

    Get-SBFarm

    Stop-SBFarm –Verbose

    Set-SBFarm -FarmDns 'hello-habr-sb.cloudapp.net'

    Update-SBHost –Verbose

    Start-SBFarm –Verbose

3) Установите ключ SAS с помощью PowerShell:

    New-SBAuthorizationRule -NamespaceName ServiceBusDefaultNamespace -Name MainRule -Rights Manage, Send, Listen

Результат выглядит так:

    KeyName             : MainRule
    PrimaryKey          : ylF6GWmH6rlZg1ekQMQrLQnht4kwVFWHAfyB8HkrZvM=
    SecondaryKey        : ZYBpdiCYgZNfwOC37x6DEDLxhv+qan6CJZT0vG3GvTk=
    Rights              : {Manage, Send, Listen}
    CreatedTime         : 3/22/2015 12:53:23 AM
    ModifiedTime        : 3/22/2015 12:53:23 AM
    ConnectionString    : Endpoint=sb://hello-habr-sb.cloudapp.net/ServiceBusDefaultNamespace;
                          StsEndpoint=https://hello-habr-sb.cloudapp.net:10355/ServiceBusDefaultNamespace;
                          RuntimePort=10354;
                          ManagementPort=10355;
                          SharedAccessKeyName=MainRule;
                          SharedAccessKey=ylF6GWmH6rlZg1ekQMQrLQnht4kwVFWHAfyB8HkrZvM=

4) Добавьте ссылку на хосты:

(C: \ Windows \ System32 \ драйверы \ и т. Д.)

    127.0.0.1       hello-habr-sb.cloudapp.net

На виртуальной машине с пакетом Azure:

1) Создайте сертификат с помощью утилит командной строки makecert.exe и pvk2pfx.exe:

(C: \ Program Files (x86) \ Microsoft SDK \ Windows \ v7.1A \ Bin)

Для сервера:

    makecert -r -pe -n "CN=WAP Portals" -ss CA -a sha1 -sky signature -cy authority -sv WAPPortals.pvk WAPPortals.cer

    makecert -pe -n "CN=hello-habr-wap.cloudapp.net" -a sha1 -sky exchange -eku 1.3.6.1.5.5.7.3.1 -ic WAPPortals.cer -iv WAPPortals.pvk -sp "Microsoft RSA SChannel Cryptographic Provider"  -sy 12 -sv WAPLocalServer.pvk WAPLocalServer.cer

    pvk2pfx -pvk WAPLocalServer.pvk -spc WAPLocalServer.cer -pfx WAPLocalServer.pfx

Для клиента:

    makecert -pe -n "CN=WAPMainDeveloper" -a sha1 -sky exchange -eku 1.3.6.1.5.5.7.3.2 -ic WAPPortals.cer -iv WAPPortals.pvk -sv WAPClient.pvk WAPClient.cer

    pvk2pfx -pvk WAPClient.pvk -spc WAPClient.cer -pfx WAPClient.pfx -po HelloHabr2015

2) Импортируйте WAPPortals.cer в Сертификаты - Локальный компьютер (Доверенный корневой ЦС) на сервере.

3) Импортируйте WAPClient.pfx на сервер и клиенты в Сертификаты - Локальный компьютер и Текущий пользователь (Личный).

4) Добавьте ссылку на хосты:

(C: \ Windows \ System32 \ драйверы \ и т. Д.)

    127.0.0.1       hello-habr-wap.cloudapp.net

5) Измените имена сайтов FQDN для сайтов управления Azure Pack с помощью PowerShell (в качестве администратора):

TenantSite:

    Import-Module -Name MgmtSvcConfig

    Set-MgmtSvcFqdn -Namespace "TenantSite" -FullyQualifiedDomainName "hello-habr-wap.cloudapp.net" -Port 30081 -Server "hello-habr-wap\SQLEXPRESS"

    Set-MgmtSvcFqdn -Namespace "AuthSite" -FullyQualifiedDomainName "hello-habr-wap.cloudapp.net" -Port 30071 -Server "hello-habr-wap\SQLEXPRESS"

    Set-MgmtSvcRelyingPartySettings -Target Tenant -MetadataEndpoint "https://hello-habr-wap.cloudapp.net:30071/FederationMetadata/2007-06/FederationMetadata.xml" -ConnectionString "Data Source=hello-habr-wap\SQLEXPRESS;User ID=sa;Password=HelloHabr2015" –DisableCertificateValidation

    Set-MgmtSvcIdentityProviderSettings -Target Membership -MetadataEndpoint "https://hello-habr-wap.cloudapp.net:30081/FederationMetadata/2007-06/FederationMetadata.xml" -ConnectionString "Data Source=hello-habr-wap\SQLEXPRESS;User ID=sa;Password=HelloHabr2015" –DisableCertificateValidation

АдминСайт:

    Import-Module -Name MgmtSvcConfig

    Set-MgmtSvcFqdn -Namespace "AdminSite" -FullyQualifiedDomainName "hello-habr-wap.cloudapp.net" -Port 30091 -Server "hello-habr-wap\SQLEXPRESS"

    Set-MgmtSvcFqdn -Namespace "WindowsAuthSite" -FullyQualifiedDomainName "hello-habr-wap.cloudapp.net" -Port 30072 -Server "hello-habr-wap\SQLEXPRESS"

    Set-MgmtSvcRelyingPartySettings -Target Admin -MetadataEndpoint "https://hello-habr-wap.cloudapp.net:30072/FederationMetadata/2007-06/FederationMetadata.xml" -ConnectionString "Data Source=hello-habr-wap\SQLEXPRESS;User ID=sa;Password=HelloHabr2015" –DisableCertificateValidation

    Set-MgmtSvcIdentityProviderSettings -Target Windows -MetadataEndpoint "https://hello-habr-wap.cloudapp.net:30091/FederationMetadata/2007-06/FederationMetadata.xml" -ConnectionString "Data Source=hello-habr-wap\SQLEXPRESS;User ID=sa;Password=HelloHabr2015" –DisableCertificateValidation

6) Делайте другие вещи:

  • изменить привязки в IIS;

  • выберите сертификат hello-habr-wap.cloudapp.net для порталов WAP;

  • установите флажок Требовать SSL в IIS;

Наконец, все работает на 3 виртуальных машинах:

  1. База данных

    https://hello-habr-db.cloudapp.net:1433 - MSSQL Server
    
  2. Служебная шина для Windows Server

    https://hello-habr-sb.cloudapp.net:10355 - HttpPort (ManagementPort)
    https://hello-habr-sb.cloudapp.net:10354 - TcpPort (RuntimePort)
    
  3. Пакет Azure для Windows Server

    https://hello-habr-wap.cloudapp.net:30081 - TenantSite
    https://hello-habr-wap.cloudapp.net:30091 - AdminSite
    

Надеюсь это поможет! Если есть ошибки - прочтите мой пост (раскрывайте спойлеры разделов):

http://habrahabr.ru/post/254059/

  1. Настройте виртуальную машину с помощью базы данных:

"Настройка виртуальной машины с базой данных"

  1. Настройте виртуальную машину со служебной шиной для Windows Server:

«Настройка виртуальной машины с служебной шиной для Windows Server»

  1. Настройте виртуальную машину с помощью пакета Azure:

"Настройка представленной машины с Azure Pack"

  1. Простой клиент .NET (C #) для служебной шины для Windows Server:

«Проверка работы Service Bus»

person Zanael    schedule 06.01.2016
comment
пожалуйста, разместите здесь код или методику, так как это не считается ответом - person Drew; 07.01.2016
comment
@Drew, спасибо за обзор. Ответ создан 1 год назад, но я постараюсь вкратце объяснить решение. Надеюсь, это кому-то поможет. - person Zanael; 08.01.2016