总览
我在3台服务器A,B和C(读取容器)上构建并部署了dockerized springboot应用程序,并在端口8080上部署了暴露的应用程序。

但是无法通过url访问(在端口8080上与服务器的Netscaler SSL连接失败。)但是,如果我在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 - 无法通过URL访问Web应用程序。从Netscaler到App服务器的SSL连接失败-LMLPHP

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

最佳答案

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

但是,您应该注意一件事:Netscalers无法与在“后端”侧配置为“拒绝不安全的重新绑定”的服务器进行通信。在netscaler和应用服务器之间。这只是Netscaler的书面功能。

Netscaler在前端(客户端和netscaler之间)完全支持此功能。

这可能是您遇到问题的原因。如果没有捕捉到握手。证明在布丁里。 (wireshark捕获)

10-04 17:15