Convertigo Server ships with defaults that favor development and support: detailed error responses, open API discovery, an administration console reachable from anywhere. This chapter lists what is usually adjusted before a server is opened to end users. It applies to every packaging (war file, Docker image, Kubernetes) and to Convertigo 8.4.3 and later unless stated otherwise.
None of these settings is mandatory: choose the ones that match the way your applications are exposed.
Terminate HTTPS in front of Convertigo
Convertigo is normally deployed behind a component that terminates TLS: a reverse proxy, a load balancer or a Kubernetes ingress. This component is the right place for everything that depends on the public HTTPS endpoint:
- the TLS certificate and the accepted protocol versions;
- the
Strict-Transport-Securityheader, for examplemax-age=31536000; includeSubDomains, once the site is served over HTTPS only; - the redirection from HTTP to HTTPS.
Convertigo does not emit Strict-Transport-Security itself, because it cannot know whether the original request was made over HTTPS.
Since 8.4.3, Convertigo adds X-Content-Type-Options: nosniff and Referrer-Policy: strict-origin-when-cross-origin to its responses, and prevents the administration console from being displayed inside a page of another site. Applications that must be embedded in another site are not affected.
Limit access to the administration console
The administration console and its services are protected by authentication and roles. When the console does not have to be reachable from the Internet, also restrict these paths at the reverse proxy, ingress, firewall or network level, for example to the addresses of your administrators or to a VPN:
/convertigo/admin//convertigo/admin/services//convertigo/login/and/convertigo/logout/
Remember to change the default administration account, and to set an account for the Test Platform if it must not be anonymous: see Installing Convertigo Server.
Declare the public origins
By default the cors.policy property (Main Parameters) is =Origin: Convertigo answers cross-origin requests with the origin sent by the browser. In production, declare the origins that are really allowed to call the server, separated with #:
https://app.example.com#https://admin.example.com
- with the Docker image, use the
PUBLIC_DOMAINSenvironment variable; - with the Helm chart,
publicAddrorpublicUrlfill it for you; - otherwise set
cors.policyin the administration console, or with the-Dconvertigo.engine.cors.policy=...Java system property.
Reduce the details returned by error responses
When a requestable fails, the response can describe the error in detail, which is useful during development. For a production server, set hiding_error_information to true (Main Parameters): the response then only tells that an error occurred, and the details remain available in the Engine logs.
If your support team needs more, keep hiding_error_information to false and choose what is returned with the show_error_* properties:
| Property | Default | Returned when true |
|---|---|---|
show_error_requestable_information |
true |
project, connector/sequence and transaction names |
show_error_context_information |
false |
context variables |
show_error_type |
true |
error type |
show_error_code |
true |
error code |
show_error_message |
true |
error message |
show_error_detail |
true |
error detail |
show_error_exception |
false |
Java exception class |
show_error_stacktrace |
false |
Java stack trace |
When hiding_error_information is true, the XML responses also omit the product comment.
Choose what API discovery exposes
/convertigo/api publishes the OpenAPI / Swagger definition of the projects deployed on the server, so that client developers can discover them.
- If this discovery is not wanted on a public server, restrict
/convertigo/apiat the reverse proxy or ingress level, the same way as the administration console. - Set
hide_product_version_in_api_specstotrue(Main Parameters) to remove the Convertigo product version from the generated definitions. The version of each project API is kept.
Choose which project files are served
Project directories are served over HTTP so that the front-end of an application can be loaded. Since 8.4.4, a .httpignore file at the root of a project lists, with the .gitignore syntax, the files and directories that must not be served: see the DevOps chapter of the Programming Guide.
Setting engine properties at deployment time
Every property above can be set in the administration console, or at startup with a Java system property prefixed by convertigo.engine., which suits containers and automated deployments:
$ docker run -d --name C8O -p 28080:28080 \
-e PUBLIC_DOMAINS="https://app.example.com" \
-e JAVA_OPTS="-Dconvertigo.engine.hiding_error_information=true -Dconvertigo.engine.hide_product_version_in_api_specs=true" \
convertigo
A property set this way takes precedence over the value saved from the administration console. The complete list is in the Appendixes.