【问题标题】:Connect Azure Pack to Service Bus for Windows Server with Custom DNS使用自定义 DNS 将 Azure Pack 连接到 Windows Server 的服务总线
【发布时间】:2015-02-28 06:51:23
【问题描述】:

我正在尝试将 Azure Pack 配置为使用带有自定义 DNS 的 Windows Server 1.1 的服务总线。全部在 Windows Azure 中的一台虚拟机 (Windows Server 2012 R2) 上运行。

我关注这个帖子:

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

将FramDNS“servicebus”替换为“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
  • 在主机文件中: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

如果我可以使用 SAS 连接到我的 ServiceBusDefaultNamespace:

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 租户门户创建服务总线命名空间时 - 记录异常:

命名空间配置异常。跟踪号码: 。系统标识:。命名空间: 一些命名空间。方法:激活。例外: System.Net.Http.HttpRequestException:发送时出错 请求。 ---> System.Net.WebException:底层连接 已关闭:无法为 SSL/TLS 建立信任关系 安全通道。 ---> System.Security.Authentication.AuthenticationException:远程 根据验证程序,证书无效。

以及命名空间的状态 - Activating。

请帮忙!

【问题讨论】:

    标签: azure service pack bus


    【解决方案1】:

    我找到了解决方案并写了一篇关于使用自定义 DNS、“Black Jack”等为 Windows Server On-Premise 配置服务总线的帖子。 以俄语发布,但包括许多屏幕截图和代码/脚本示例:

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

    说明:

    很难简单回答,不解释完整的配置过程。

    基本上,证书中的问题:

    在带有服务总线的 VM 上:

    1) 使用命令行实用程序ma​​kecert.exe生成访问证书:

    (C:\Program Files (x86)\Microsoft SDKs\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"
    

    在服务器上将其导入到证书的客户端 - 本地计算机(受信任的根 CA)。

    2) 使用 PowerShell 更改 DNS:

        Get-SBFarm
    
        Stop-SBFarm –Verbose
    
        Set-SBFarm -FarmDns 'hello-habr-sb.cloudapp.net'
    
        Update-SBHost –Verbose
    
        Start-SBFarm –Verbose
    

    3) 使用 PowerShell 设置 SAS-Key:

        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\drivers\etc)

        127.0.0.1       hello-habr-sb.cloudapp.net
    

    在带有 Azure 包的 VM 上:

    1) 使用命令行实用程序生成证书ma​​kecert.exe и pvk2pfx.exe:

    (C:\Program Files (x86)\Microsoft SDKs\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) 在 Certificates – Local Computer (Trusted Root CA) 中导入 WAPPortals.cer 在服务器上。

    3) 在证书 - 本地计算机和当前用户(个人)中的服务器和客户端上导入 WAPClient.pfx。

    4) 添加主机链接:

    (C:\Windows\System32\drivers\etc)

        127.0.0.1       hello-habr-wap.cloudapp.net
    

    5) 使用 PowerShell(以管理员身份)更改 Azure Pack 管理站点的 FQDN 站点名称:

    租户站点:

        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 中的绑定;

    • 为 WAP 门户选择 hello-habr-wap.cloudapp.net 证书;

    • 选中 IIS 上需要 SSL;

    终于可以在 3 个虚拟机上运行:

    1. 数据库

      https://hello-habr-db.cloudapp.net:1433 - MSSQL Server
      
    2. Windows 服务器的服务总线

      https://hello-habr-sb.cloudapp.net:10355 - HttpPort (ManagementPort)
      https://hello-habr-sb.cloudapp.net:10354 - TcpPort (RuntimePort)
      
    3. 适用于 Windows Server 的 Azure 包

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

    希望这会有所帮助!如果您有一些错误 - 请阅读我的帖子(披露部分剧透):

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

    1. 使用数据库配置 VM:

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

    1. 使用 Windows Server 的服务总线配置 VM:

    “Настройка виртуальной машины с Service Bus for Windows Server”

    1. 使用 Azure Pack 配置 VM:

    “Настройка виртуальной машины с Azure Pack”

    1. 适用于 Windows Server 的 Service Bus 的简单 .NET (C#) 客户端:

    “Проверка работы 服务总线”

    【讨论】:

    • 请在此处发布代码或技术,因为这被认为不是答案
    • @Drew,感谢您的评论。答案是由 1 年前创建的,但我将尝试简要解释解决方案。希望它对某人有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2018-05-30
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-20
    • 1970-01-01
    • 2022-06-14
    相关资源
    最近更新 更多