LB2
LB2

Reputation: 4860

Apigee TargetServer fails to configure for SSL

I am trying to configure one of the TargetServers to talk HTTPS to the backend service. Per Apigee's official documentation as well as other sources, it should be as easy as adding SSLInfo node to the TargetServer definition, and in that node set "enabled" : true. I am sending a PUT call to accomplish just that, but the response comes back without SSLInfo node. Following up with GET confirms that SSLInfo node is not there.

Request (redacted)

PUT /v1/organizations/---/environments/---/targetservers/Services HTTP/1.1
Host: ---
Content-Type: application/json
Authorization: Basic ---
Cache-Control: no-cache

{
  "name" : "Services",
  "host" : "---",
  "isEnabled" : true,
  "port" : 443,
  "SSLInfo": {
    "enabled": true
  }
}

With Response (redacted), and same if followed up with GET

{
  "host": "qa-services.ignitionone.com",
  "isEnabled": true,
  "name": "Services",
  "port": 443
}

As you can see, the SSLInfo just doesn't stick, and thus fails to enable Edge-to-Target HTTPS communication.

What am I missing?

Upvotes: 1

Views: 395

Answers (1)

LB2
LB2

Reputation: 4860

Ok, the issue turned out to be JSON serializer being very case-sensitive. It is not "SSLInfo" but rather MUST be "sSLInfo". It started working after making the capitalization change.

So full structure that worked:

PUT /v1/organizations/---/environments/---/targetservers/Services HTTP/1.1
Host: ---
Content-Type: application/json
Authorization: Basic ---
Cache-Control: no-cache

{
  "name" : "Services",
  "host" : "---",
  "isEnabled" : true,
  "port" : 443,
  "sSLInfo": {
    "enabled": true
  }
}

Upvotes: 1

Related Questions