diff options
| -rw-r--r-- | ansible/playbook.yml | 1 | ||||
| -rw-r--r-- | ansible/roles/pydis-mtls/README.md | 17 | ||||
| -rw-r--r-- | ansible/roles/pydis-mtls/defaults/main.yml | 29 | ||||
| -rw-r--r-- | ansible/roles/pydis-mtls/tasks/main.yml | 17 | 
4 files changed, 64 insertions, 0 deletions
| diff --git a/ansible/playbook.yml b/ansible/playbook.yml index 0cb4cf6..f04fefe 100644 --- a/ansible/playbook.yml +++ b/ansible/playbook.yml @@ -1,6 +1,7 @@  - name: Deploy common services    hosts: all    roles: +    - pydis-mtls      - certbot      - common      - pydis-users diff --git a/ansible/roles/pydis-mtls/README.md b/ansible/roles/pydis-mtls/README.md new file mode 100644 index 0000000..c72a340 --- /dev/null +++ b/ansible/roles/pydis-mtls/README.md @@ -0,0 +1,17 @@ +# Role "pydis-mtls" + +This role adds a copy of the Python Discord Root CA used for mutual TLS +authentication to a specified location on all hosts. + +Services that need mutual TLS support should validate any incoming request +against this client certificate, the default provided with this role will always +be a subdomain of `tls.pydis.wtf` and the CN can be used for further +authorization validation. + +## Variables + +`pydis_mtls_certificate`: The CA Certificate contents to be copied to the host. +The default should be fine here and is the current production CA. + +`pydis_mtls_location`: The location to copy the CA file to, defaults to +`/opt/pydis/ca.pem`. diff --git a/ansible/roles/pydis-mtls/defaults/main.yml b/ansible/roles/pydis-mtls/defaults/main.yml new file mode 100644 index 0000000..721a747 --- /dev/null +++ b/ansible/roles/pydis-mtls/defaults/main.yml @@ -0,0 +1,29 @@ +--- +pydis_mtls_certificate: | +  -----BEGIN CERTIFICATE----- +  MIIEPzCCAyegAwIBAgIUEJZIbODQ36KwtyMHrT/shF8Mci4wDQYJKoZIhvcNAQEL +  BQAwgYcxCzAJBgNVBAYTAkdCMQ8wDQYDVQQIEwZMb25kb24xDzANBgNVBAcTBkxv +  bmRvbjEeMBwGA1UEChMVUHl0aG9uIERpc2NvcmQgRGV2T3BzMR4wHAYDVQQLExVQ +  eXRob24gRGlzY29yZCBEZXZPcHMxFjAUBgNVBAMTDXRscy5weWRpcy53dGYwHhcN +  MjQwNTI2MjIzMTE5WhcNMjkwNTI1MjIzMTQ5WjCBhzELMAkGA1UEBhMCR0IxDzAN +  BgNVBAgTBkxvbmRvbjEPMA0GA1UEBxMGTG9uZG9uMR4wHAYDVQQKExVQeXRob24g +  RGlzY29yZCBEZXZPcHMxHjAcBgNVBAsTFVB5dGhvbiBEaXNjb3JkIERldk9wczEW +  MBQGA1UEAxMNdGxzLnB5ZGlzLnd0ZjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +  AQoCggEBAN6kkXZQ+4pmgvexhKo9aavohMTiFQkgc0lcU6hjDxhoAHZkBTfIejBJ +  yM0oRLsaHnyZwaCzK6qdoNqmKu/N3D9Y/JVlyyyVDnQ8Q78vCG6vLnMiLtmrI7J7 +  eZ+o5es80W0NowVNP1VSIA4G9gI6OtmUnepu5+1y9i5g0Uf9wncw8DmjXoxgkYcO +  PYzGJpiSMcPugUvKIHVvZlDIUg4avlJi3c/ZheAB7V8nDIltlysakRC/dt6SOsRp +  EHw/0dnU9jAGdvFqB1vGwL27CXTzhCz0kfnHRTVTp3LsuCl7KcNwDpqkg2rjt/Xa +  NJKhBYMAypVPQIPgnvIiSotHfBkRVGcCAwEAAaOBoDCBnTAOBgNVHQ8BAf8EBAMC +  AQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUq4RhzM8gg8XsoI62V/scgOC2 +  HHwwHwYDVR0jBBgwFoAUq4RhzM8gg8XsoI62V/scgOC2HHwwGAYDVR0RBBEwD4IN +  dGxzLnB5ZGlzLnd0ZjAgBgNVHR4BAf8EFjAUoBIwEIIOLnRscy5weWRpcy53dGYw +  DQYJKoZIhvcNAQELBQADggEBADDmik7m5+zCB5a3aEMNsudm8fq8sJOj/bGzL3bB +  bEdq5ABw9ET0oecR37ow+QpO9haU+keUXdcUhkfo02jsIu78RXg+6+lQPPXQlRuJ +  VpdhmBgYp8bosLOsuXJ714HS9dt42SRE2PmlX1si/genJfeAqn8iYjPqjO1wlLwD +  QJrybnq0j4glaKDRb5Ve8iITrv3RXGLhJOs97KfDQ10QD3L82C5Q2T5KTZ75n9J3 +  p5jBHYLqwd80EoI5Z/w0bL887mKP9tI1N2QG30lHj7Bxw9J2/uwayQ8S9SVOIB4t +  QxbEW5JQzaUahX8Kaw9s3BZSezLFC0BvOOLnbYCsXIuB84g= +  -----END CERTIFICATE----- + +pydis_mtls_location: /opt/pydis/ca.pem diff --git a/ansible/roles/pydis-mtls/tasks/main.yml b/ansible/roles/pydis-mtls/tasks/main.yml new file mode 100644 index 0000000..70ea7b2 --- /dev/null +++ b/ansible/roles/pydis-mtls/tasks/main.yml @@ -0,0 +1,17 @@ +- name: Ensure directory to store mTLS CA in is created +  file: +    path: '{{ pydis_mtls_location | dirname }}' +    state: directory +    mode: '0755' +  tags: +    - role::pydis-mtls + +- name: Copy mTLS Certificate Authority to host +  copy: +    content: '{{ pydis_mtls_certificate }}' +    dest: '{{ pydis_mtls_location }}' +    owner: root +    group: root +    mode: '0744' +  tags: +    - role::pydis-mtls | 
