0

Overview
I built and deployed an dockerized springboot application on 3 server machines A,B and C (read containers) and exposed application on port 8080.

But unable to access via url (Netscaler SSL connectivity to servers at port 8080 is failing.) However if I turn off SSL in Netscaler, I am able to connect

Setup
a) I got 3 SSL certificates for 3 servers. My Frontend docker file is below

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" ]

I built this docker file, deploy and exposed on port 8080.
When I try to access via Netscaler, I am getting error HTTP/1.1 503 Service Unavailable. But if I try to access the application using server A:8080/app, then it works fine.

Now when i went to network team, they did a quick check and told me

"Netscaler is reporting that it can’t contact the appserver* servers on port 8080.When I switch from an SSL monitor to a TCP monitor, it connects. If SSL is enabled, then maybe it is an issue with the configured Ciphers."

I checked the SSL certificates, Ciphers and everything seems to be correct. I am stuck now.

Update 1

I asked network team to turn off SSL in Netscaler and then I can navigate to the application using URL.

So it is confirmed somewhere there is error on SSL handshake. I assume if certificate is corrupted or if I had given wrong password, then I won't get this "certificate is valid message" when I navigate to application using servername:8080/Myapp.

Certificate Valid

Any idea or anyone experienced this issue before?
Thanks in advance.

VVP
  • 766
  • 4
  • 14
  • 39

1 Answers1

0

a wireshark sniff will usually tell whats wrong in the ssl handshake.

There is one thing you should be aware of though: Netscalers cannot talk to servers configured with "deny insecure renego" on the "Back End" side. that is between netscaler and app server. This is just a paper feature on Netscaler.

Netscaler fully supports this on front end (between client and netscaler).

it might be the reason you have problems. if not capture the handshake. the proof is in the pudding. (wireshark capture)

KaiT
  • 156
  • 2
  • A post in regards to what i mentioned above : https://discussions.citrix.com/topic/388325-netscaler-12-rfc-5746-on-backend-bug-limitation/?source=email#comment-1999341 – KaiT Feb 21 '18 at 17:53