【问题标题】:Unable to access web application via URL. SSL connectivity from Netscaler to App servers are failing无法通过 URL 访问 Web 应用程序。从 Netscaler 到应用服务器的 SSL 连接失败
【发布时间】:2018-02-15 05:03:33
【问题描述】:

概述
我在 3 台服务器机器 A、B 和 C(读取容器)上构建并部署了一个 dockerized springboot 应用程序,并在端口 8080 上公开了应用程序。

但无法通过 url 访问(Netscaler SSL 连接到端口 8080 的服务器失败。)但是,如果我在 Netscaler 中关闭 SSL,我可以连接

设置
a) 我获得了 3 个服务器的 3 个 SSL 证书。我的前端 docker 文件在下面

FROM   10.16.193.141:9000/iis_proxy

ADD 'certs\' 'C:\certs\'

RUN powershell -NoProfile -Command \
    $SecurePassword = ConvertTo-SecureString "SomerandomStringPassword" -AsPlainText -Force; \
    Import-PfxCertificate -FilePath 'C:\certs\AppServerrnch01.pfx' -CertStoreLocation Cert:\LocalMachine\My -Password $SecurePassword; \
    Import-PfxCertificate -FilePath 'C:\certs\AppServerrnch02.pfx' -CertStoreLocation Cert:\LocalMachine\My -Password $SecurePassword; \
    Import-PfxCertificate -FilePath 'C:\certs\AppServerrnch03.pfx' -CertStoreLocation Cert:\LocalMachine\My -Password $SecurePassword; \
    Import-Module "WebAdministration"; \
    New-Item IIS:\Sites\MyAPP-bindings @{protocol='https';bindingInformation='*:8080:AppServerrnch01.mydomain.name';SslFlags=1} -PhysicalPath C:\site; \
    New-WebBinding -Name "MyAPP" -Protocol https -HostHeader AppServerrnch02.mydomain.name -Port 8080 -SslFlags 1; \
    New-WebBinding -Name "MyAPP" -Protocol https -HostHeader AppServerrnch03.mydomain.name -Port 8080 -SslFlags 1; \
    New-Item -Path "IIS:\SslBindings\*!8080!AppServerrnch01.mydomain.name" -Thumbprint 1F300EC569B3448EE15A54DBCD54647AF8294682 -SslFlags 1; \
    New-Item -Path "IIS:\SslBindings\*!8080!AppServerrnch02.mydomain.name" -Thumbprint EAC1CD3520F9810DB30CB2E312E197C637D26253 -SslFlags 1; \
    New-Item -Path "IIS:\SslBindings\*!8080!AppServerrnch03.mydomain.name" -Thumbprint 0C7888C0617815997DB6F9DA9E9A03E5921E3BAD -SslFlags 1; \
    New-Item C:\site\MyAPP-type directory
COPY    MyAPP/ 'C:\site\MyAPP'

RUN    powershell -NoProfile -Command \
       Start-Job -Name AddWebConfig -ScriptBlock { \
         Add-WebConfigurationProperty -pspath 'iis:\sites\MyAPP' -filter 'system.webServer/rewrite/rules' -name '.' -value @{name='Proxy';stopProcessing='True'}; \
       }; \
       Wait-Job -Name AddWebConfig; \
       Set-WebConfigurationProperty -pspath 'iis:\sites\MyAPP' -filter 'system.webServer/rewrite/rules/rule/match' -name 'url' -value '^^MyAPP/api/(.*)'; \
       Set-WebConfigurationProperty -pspath 'iis:\sites\MyAPP' -filter 'system.webServer/rewrite/rules/rule/action' -name 'type' -value 'Rewrite'; \
       Set-WebConfigurationProperty -pspath 'iis:\sites\MyAPP' -filter 'system.webServer/rewrite/rules/rule/action' -name 'url' -value 'https://lbit.mydomain.name/{R:1}'

EXPOSE 8080

CMD    [ "powershell" ]

我构建了这个 docker 文件,部署并暴露在 8080 端口上。
当我尝试通过 Netscaler 访问时,我收到错误 HTTP/1.1 503 Service Unavailable。但是,如果我尝试使用服务器 A:8080/app 访问应用程序,则它可以正常工作。

现在当我去网络团队时,他们快速检查并告诉我

“Netscaler 报告它无法联系 appserver* 服务器 在端口 8080 上。当我从 SSL 监视器切换到 TCP 监视器时,它 连接。如果启用了 SSL,那么可能是 配置密码。”

我检查了 SSL 证书、密码,一切似乎都是正确的。 我现在卡住了。

更新 1

我要求网络团队在 Netscaler 中关闭 SSL,然后我可以使用 URL 导航到应用程序。

因此,在某处确认 SSL 握手有错误。我假设如果证书已损坏或我输入了错误的密码,那么当我使用 servername:8080/Myapp 导航到应用程序时,我将不会收到此“证书有效消息”。

有任何想法或任何人以前遇到过这个问题吗?
提前致谢。

【问题讨论】:

    标签: docker ssl spring-boot dockerfile netscaler


    【解决方案1】:

    wireshark 嗅探通常会告诉 ssl 握手中有什么问题。

    您应该注意一件事:Netscaler 无法与在“后端”端配置了“拒绝不安全 renego”的服务器通信。即在 netscaler 和应用服务器之间。这只是 Netscaler 上的一篇论文。

    Netscaler 在前端(客户端和 netscaler 之间)完全支持这一点。

    这可能是您遇到问题的原因。如果不捕获握手。证据就在布丁里。 (wireshark 捕获)

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-05
    • 2016-09-21
    • 1970-01-01
    • 2019-02-14
    • 1970-01-01
    • 2018-07-27
    相关资源
    最近更新 更多