curl: (35) gnutls_handshake() failed: Certificate is bad
2021/05/21 21:21:21 http: TLS handshake error from 10.10.10.10:57962: tls: client didn't provide a certificate
# Replace <CONCOURSE MANIFEST> with the path to manifest file: bosh interpolate <CONCOURSE MANIFEST> --path=/instance_groups/name=web/jobs/name=web/properties/tls/cert ca: | -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- certificate: | -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- private_key: | -----BEGIN RSA PRIVATE KEY----- ... -----END RSA PRIVATE KEY----- Succeeded
bosh interpolate <CONCOURSE MANIFEST> --path=/instance_groups/name=web/jobs/name=web/properties/tls/cert ((atc_tls)) Succeeded
---
instance_groups:
- azs:
- AZ-1
- AZ-2
- AZ-3
instances: 1
jobs:
- name: bpm
release: bpm
- name: web
properties:
add_local_users:
- [REDACT]:[REDACT]
auth_duration: 72h
bpm:
enabled: true
build_log_retention:
default_builds: 200
maximum_builds: 250
build_tracker_interval: 60s
cluster_name: Example Cluster
...
tls:
bind_port: 443
cert:
ca: |
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
certificate: |
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
private_key: |
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
token_signing_key:
...
Scenario 2: The Concourse manifest has the properties.tls.cert field set to something similar to ((atc_tls))
In this scenario, this field of the manifest must be updated to explicitly declare the use of the certificate and private key in order to prevent the CA certificate from being added. Please update this field to look similar to the following:
tls:
bind_port: 443
cert:
certificate: ((atc_tls.certificate))
private_key: ((atc_tls.private_key))
Scenario 3: Concourse is being deployed using BOSH operations files to enable TLS
It is a common practice to deploy Concourse using the operations files from the Concourse BOSH Deployment, which are located in the cluster/operations directory of the downloadable package. Starting with v7.3.0 of the Concourse BOSH Deployment, the tls.yml file was updated such that mTLS would not be mistakenly enabled when trying to enable TLS.
When upgrading Concourse using these operations files, it is important to make sure that the operations files being used are for the appropriate version of Concourse.