From 629a427041657d4998d372259b94b7cb51bb9086 Mon Sep 17 00:00:00 2001 From: newland86 <newland86@gmail.com> Date: Mon, 5 Mar 2018 09:15:19 +0100 Subject: [PATCH 01/13] Added proxy certificates 0-1-2.pem --- t/README.md | 0 t/certs/0.pem | 53 ++++++++++++++++++ t/certs/1.pem | 86 ++++++++++++++++++++++++++++++ t/certs/2.pem | 86 ++++++++++++++++++++++++++++++ t/nginx_voms_example.cert.pem | 85 +++++++++++++++++++++++++++++ t/nginx_voms_example.key.pem | 27 ++++++++++ t/trust-anchors/igi-test-ca.pem | 21 ++++++++ t/voms_example.cert.pem | 85 +++++++++++++++++++++++++++++ t/voms_example.key.pem | 27 ++++++++++ t/vomsdir/test.vo/voms.example.lsc | 2 + 10 files changed, 472 insertions(+) create mode 100644 t/README.md create mode 100644 t/certs/0.pem create mode 100644 t/certs/1.pem create mode 100644 t/certs/2.pem create mode 100644 t/nginx_voms_example.cert.pem create mode 100644 t/nginx_voms_example.key.pem create mode 100644 t/trust-anchors/igi-test-ca.pem create mode 100644 t/voms_example.cert.pem create mode 100644 t/voms_example.key.pem create mode 100644 t/vomsdir/test.vo/voms.example.lsc diff --git a/t/README.md b/t/README.md new file mode 100644 index 0000000..e69de29 diff --git a/t/certs/0.pem b/t/certs/0.pem new file mode 100644 index 0000000..e8f954b --- /dev/null +++ b/t/certs/0.pem @@ -0,0 +1,53 @@ +-----BEGIN CERTIFICATE----- +MIICkjCCAXygAwIBAgIEaPuJvzALBgkqhkiG9w0BAQUwKzELMAkGA1UEBhMCSVQx +DDAKBgNVBAoTA0lHSTEOMAwGA1UEAxMFdGVzdDAwHhcNMTgwMzAyMTczNTU0WhcN +MjIwOTI0MTUzOTM0WjBAMQswCQYDVQQGEwJJVDEMMAoGA1UEChMDSUdJMQ4wDAYD +VQQDEwV0ZXN0MDETMBEGA1UEAxMKMTc2MTMxNTI2MzCBnzANBgkqhkiG9w0BAQEF +AAOBjQAwgYkCgYEAgCtdYKINH/sClmYwxea8ydJbBTR7j8XdJmuZgA5c8YDLmN2E +Fo50XHtQXbpmNGvuOXC6n4hY193oEcXL7N+CTjlHEmx5imaNzFvcfEdjxx0Cytqi +xOt1tbhOvZUSMYqcIdJfPX21n7D1tObI3/+cZ16RHNWZF/wigdLoSr6qbZ0CAwEA +AaMxMC8wDgYDVR0PAQH/BAQDAgXgMB0GCCsGAQUFBwEOAQH/BA4wDDAKBggrBgEF +BQcVATALBgkqhkiG9w0BAQUDggEBACm+nPPqabJDsKb0BnihdPbIOls5Kla84nSo +p5WlRGrGtnBmWkL7WeZc2CYXzrrd4EhAQtjwnw1eYZ3+uTBNXbsQNSTiGqhfXcdH +p5O4AOUMdMda19kos67AIFCn5skWrKzn04TW8HEOYo6doJAkkAc7pFrQeXVU4IUM +ZlS6gNuXqLISelHZV2WGeueZ9oe8SL08ZKZCNI09BScUaqiIuuVdZhH48uNBQKXs +/KWjT8IBj4bTum+/nrSLGPRppSMC1bDfmn0C/ffk7g1Fo+ndyU9lB4ZF6eykGYe3 +V1LswGAb9BQvbm2qYdmS4F/i2qLxkRyaA1IB8aaCv4tWqKtMH00= +-----END CERTIFICATE----- +-----BEGIN RSA PRIVATE KEY----- +MIICWwIBAAKBgQCAK11gog0f+wKWZjDF5rzJ0lsFNHuPxd0ma5mADlzxgMuY3YQW +jnRce1BdumY0a+45cLqfiFjX3egRxcvs34JOOUcSbHmKZo3MW9x8R2PHHQLK2qLE +63W1uE69lRIxipwh0l89fbWfsPW05sjf/5xnXpEc1ZkX/CKB0uhKvqptnQIDAQAB +AoGAIEVK5IrIzTWRKDcgrqNzA0nQmxXkyoViMktDQefb5P6txJZ5rIg/qg1uZbsK +AsbuG05T3tkgrXF0/gyUVNbN4vKE1Po1HyCIz8ZO5ZoA+AB3W5swdkf/sP9/y5jG +qrh58CM+IqpyVIf0ZYSv3j/WEGgocBuzBlgzsu81ruR4ym0CQQDIAzAu1KigbKNs +kJvgjWGJK5fAF+eJgQ4waH1wnzlExgM8lBpQhNXiYnvcrTUBbBtc4onXbD1iiHkD +M52BJNhjAkEApAvuiv8TjIK9T5EyCf3Zbk5g8I9XUTNk2Qq9Dc9NfXnE9OwjNss/ +hjvDCX89OA1DFRuud2a0qgvMSrVXnW+B/wJAJQzSJBqoke8N5tJyzYnjA3Hbzm2f +Kk2Jv1Xbxrz38tFrUBFvPnMc2666mwpKw1SvTOl59znJtTLql7k79+xHWQJAKcrA +YrjJCirkf7jFvrXlBq0BFUfvPsiREJojv7joTOcQvjTKY9Mzw8bF0U2REw6N4HrE +37ZSoF+RFBdO0tTtkQJAFs+jv0al71WnqEwoF0R8iSACcgTU5pG2c5upMUFbq+3V +Sc2mleRKf33pghtj1f/HP9+CXhUVG1rtLkcR6qW5Cg== +-----END RSA PRIVATE KEY----- +-----BEGIN CERTIFICATE----- +MIIDnjCCAoagAwIBAgIBCTANBgkqhkiG9w0BAQUFADAtMQswCQYDVQQGEwJJVDEM +MAoGA1UECgwDSUdJMRAwDgYDVQQDDAdUZXN0IENBMB4XDTEyMDkyNjE1MzkzNFoX +DTIyMDkyNDE1MzkzNFowKzELMAkGA1UEBhMCSVQxDDAKBgNVBAoTA0lHSTEOMAwG +A1UEAxMFdGVzdDAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDKxtrw +hoZ27SxxISjlRqWmBWB6U+N/xW2kS1uUfrQRav6auVtmtEW45J44VTi3WW6Y113R +BwmS6oW+3lzyBBZVPqnhV9/VkTxLp83gGVVvHATgGgkjeTxIsOE+TkPKAoZJ/QFc +CfPh3WdZ3ANI14WYkAM9VXsSbh2okCsWGa4o6pzt3Pt1zKkyO4PW0cBkletDImJK +2vufuDVNm7Iz/y3/8pY8p3MoiwbF/PdSba7XQAxBWUJMoaleh8xy8HSROn7tF2al +xoDLH4QWhp6UDn2rvOWseBqUMPXFjsUi1/rkw1oHAjMroTk5lL15GI0LGd5dTVop +kKXFbTTYxSkPz1MLAgMBAAGjgcowgccwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQU +fLdB5+jO9LyWN2/VCNYgMa0jvHEwDgYDVR0PAQH/BAQDAgXgMD4GA1UdJQQ3MDUG +CCsGAQUFBwMBBggrBgEFBQcDAgYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBBggrBgEF +BQcDBDAfBgNVHSMEGDAWgBSRdzZ7LrRp8yfqt/YIi0ojohFJxjAnBgNVHREEIDAe +gRxhbmRyZWEuY2VjY2FudGlAY25hZi5pbmZuLml0MA0GCSqGSIb3DQEBBQUAA4IB +AQANYtWXetheSeVpCfnId9TkKyKTAp8RahNZl4XFrWWn2S9We7ACK/G7u1DebJYx +d8POo8ClscoXyTO2BzHHZLxauEKIzUv7g2GehI+SckfZdjFyRXjD0+wMGwzX7MDu +SL3CG2aWsYpkBnj6BMlr0P3kZEMqV5t2+2Tj0+aXppBPVwzJwRhnrSJiO5WIZAZf +49YhMn61sQIrepvhrKEUR4XVorH2Bj8ek1/iLlgcmFMBOds+PrehSRR8Gn0IjlEg +C68EY6KPE+FKySuS7Ur7lTAjNdddfdAgKV6hJyST6/dx8ymIkb8nxCPnxCcT2I2N +vDxcPMc/wmnMa+smNal0sJ6m +-----END CERTIFICATE----- diff --git a/t/certs/1.pem b/t/certs/1.pem new file mode 100644 index 0000000..6ba17f2 --- /dev/null +++ b/t/certs/1.pem @@ -0,0 +1,86 @@ +-----BEGIN CERTIFICATE----- +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 +ZTAXFVmk +-----END CERTIFICATE----- +-----BEGIN RSA PRIVATE KEY----- +MIICXQIBAAKBgQCILRV6Kz/KYhWMixptl7fQghmCCDX8U5Ew7LV/Mjz14+ugzJ+U +G0KQ/nnPjskjM3rw+IZIuEAAinyOkihEQJWwp86I9ioAL/xaLdI3dVHQEPn2JMI+ +gzRANPDa98ICIN9+uGQiJu94MqAN4SDfdZAaYqdLr/VqMY/PWk0b+z/eSwIDAQAB +AoGAJM8i9hIIvTkEIChdrXAMVMVGBdsYVKt2HKZvbQF0bvb780w8enlf5feTj6JG +BkjdG5PiIHgFfN/ySUuCrOhUTbNhAx5a9YExqtJoiNaVBcIvlwVEK6Md8iYc9Opv +RB7MOwVmzoQQzTbsKQMDj2Bn1IZmLXKlaW+OW/n/I5KnoYkCQQDsLIGpEdnDlK3e +FaRaBSL8dlE6PA3HKokTeEoy9/yWGcvvtBAfsL8GhFAXEzrCNbuy0dGUymksCSp5 +NTRSe6pfAkEAk5uTf+6TlZaCNutG3H9ScLTvBef3qcrVx9CzsPH8NK6x6GGhpPzl +FBmLtsRxeOGTIFbnEcbfImbuSQ1rcPBrlQJBALiJbia1E/qGSfSl5G2SZevuZzmh +gwKEcecMrq10p6CBN6Bsicy5RgnJiOr+04K8iZUH7ULdhaAq6U0cDW4FwvECQDXm +Om8dtCCMbBIXybFcgMMNHrbeZI5ItdWX/PWg90JZhDdh5z+y5Qd46I6dnv3QCQRn +F0tjfjk2ss5UKyZ7dB0CQQDAGspYNiI7YQoJm7hIAwh332SGuVVqb6IL9rMfsVR6 +ffsKgAQtwl5JYGEKEXtO/yylfaiYqOMHNRJPsiI7IHLq +-----END RSA PRIVATE KEY----- +-----BEGIN CERTIFICATE----- +MIIDnjCCAoagAwIBAgIBCTANBgkqhkiG9w0BAQUFADAtMQswCQYDVQQGEwJJVDEM +MAoGA1UECgwDSUdJMRAwDgYDVQQDDAdUZXN0IENBMB4XDTEyMDkyNjE1MzkzNFoX +DTIyMDkyNDE1MzkzNFowKzELMAkGA1UEBhMCSVQxDDAKBgNVBAoTA0lHSTEOMAwG +A1UEAxMFdGVzdDAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDKxtrw +hoZ27SxxISjlRqWmBWB6U+N/xW2kS1uUfrQRav6auVtmtEW45J44VTi3WW6Y113R +BwmS6oW+3lzyBBZVPqnhV9/VkTxLp83gGVVvHATgGgkjeTxIsOE+TkPKAoZJ/QFc +CfPh3WdZ3ANI14WYkAM9VXsSbh2okCsWGa4o6pzt3Pt1zKkyO4PW0cBkletDImJK +2vufuDVNm7Iz/y3/8pY8p3MoiwbF/PdSba7XQAxBWUJMoaleh8xy8HSROn7tF2al +xoDLH4QWhp6UDn2rvOWseBqUMPXFjsUi1/rkw1oHAjMroTk5lL15GI0LGd5dTVop +kKXFbTTYxSkPz1MLAgMBAAGjgcowgccwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQU +fLdB5+jO9LyWN2/VCNYgMa0jvHEwDgYDVR0PAQH/BAQDAgXgMD4GA1UdJQQ3MDUG +CCsGAQUFBwMBBggrBgEFBQcDAgYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBBggrBgEF +BQcDBDAfBgNVHSMEGDAWgBSRdzZ7LrRp8yfqt/YIi0ojohFJxjAnBgNVHREEIDAe +gRxhbmRyZWEuY2VjY2FudGlAY25hZi5pbmZuLml0MA0GCSqGSIb3DQEBBQUAA4IB +AQANYtWXetheSeVpCfnId9TkKyKTAp8RahNZl4XFrWWn2S9We7ACK/G7u1DebJYx +d8POo8ClscoXyTO2BzHHZLxauEKIzUv7g2GehI+SckfZdjFyRXjD0+wMGwzX7MDu +SL3CG2aWsYpkBnj6BMlr0P3kZEMqV5t2+2Tj0+aXppBPVwzJwRhnrSJiO5WIZAZf +49YhMn61sQIrepvhrKEUR4XVorH2Bj8ek1/iLlgcmFMBOds+PrehSRR8Gn0IjlEg +C68EY6KPE+FKySuS7Ur7lTAjNdddfdAgKV6hJyST6/dx8ymIkb8nxCPnxCcT2I2N +vDxcPMc/wmnMa+smNal0sJ6m +-----END CERTIFICATE----- diff --git a/t/certs/2.pem b/t/certs/2.pem new file mode 100644 index 0000000..737da77 --- /dev/null +++ b/t/certs/2.pem @@ -0,0 +1,86 @@ +-----BEGIN CERTIFICATE----- +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 +ggMdmoIl +-----END CERTIFICATE----- +-----BEGIN RSA PRIVATE KEY----- +MIICXQIBAAKBgQCffYJKroHe6Ss1in6zkuhSncjbiP3ghIjMwv6m1/bOcuyqzJpX +ZWoLEWvucG5haLZ05Ho1u19xzSlkqsSyc5YLwVhsHbUYF0/3IHBBtCdCShWAs9Bk +3q5/h3wBlciCY/sLanfiUIliUnsx0LovLMDTw5hN+Ez5iK9f5tAkpXX9owIDAQAB +AoGAbxTOQ0+JeoSxqIe+OTnvf2MPuv+Nuur0EJEbJX8zEZTviwIX2Rj0I6NNpfM+ +na99rKpZB8Vp82vuEYPynUtty77UJ7o0iziWQoyb0OsY/U8C0DL0jInicEa7exGP +jWch1d9mFz5A4+mo8QFApo88Cx7ENHvWftro4CWPYkvEEikCQQD/28TpNbAAnJB7 +99S5QaXqAxaPdQIwff5T2OncIsmzL/DHbkp21tPccZ+LVtZp3/2vNF11HT8FYEbW +bcsSZa2/AkEAn5QX82MXrcqEt0pdoU04UdNeSAXY8zaiRinPWlVAOjYl2kDcgInV +DVx0psaoUYbvg+hxzKKunuHChytTYcBxHQJBAPq2hJatWCDRSjdf22AJNyY/Dm1W +j+WqoHvTEx32LMVcVclmhqs6yXG7GUZ1ujcXGUQEwQuQs/91nxRhk9scLYsCQQCT +MSSOaR6UPTMBZeTLPdDvGMnkIRCl9gTkNvh92BiwGPX9RMqe/YO5GUi39JGY8Z/H +ygX9vSjYgGDQERSOG9W5AkAOhzoSyonBVeIvc7ky4F0KQSQupvyAQpTIZ/wkjbGo +W5z9Y3TbN0zJA7Qnx6oEV5ZHshplSdZXYJNvVe5qGvG1 +-----END RSA PRIVATE KEY----- +-----BEGIN CERTIFICATE----- +MIIDnjCCAoagAwIBAgIBCTANBgkqhkiG9w0BAQUFADAtMQswCQYDVQQGEwJJVDEM +MAoGA1UECgwDSUdJMRAwDgYDVQQDDAdUZXN0IENBMB4XDTEyMDkyNjE1MzkzNFoX +DTIyMDkyNDE1MzkzNFowKzELMAkGA1UEBhMCSVQxDDAKBgNVBAoTA0lHSTEOMAwG +A1UEAxMFdGVzdDAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDKxtrw +hoZ27SxxISjlRqWmBWB6U+N/xW2kS1uUfrQRav6auVtmtEW45J44VTi3WW6Y113R +BwmS6oW+3lzyBBZVPqnhV9/VkTxLp83gGVVvHATgGgkjeTxIsOE+TkPKAoZJ/QFc +CfPh3WdZ3ANI14WYkAM9VXsSbh2okCsWGa4o6pzt3Pt1zKkyO4PW0cBkletDImJK +2vufuDVNm7Iz/y3/8pY8p3MoiwbF/PdSba7XQAxBWUJMoaleh8xy8HSROn7tF2al +xoDLH4QWhp6UDn2rvOWseBqUMPXFjsUi1/rkw1oHAjMroTk5lL15GI0LGd5dTVop +kKXFbTTYxSkPz1MLAgMBAAGjgcowgccwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQU +fLdB5+jO9LyWN2/VCNYgMa0jvHEwDgYDVR0PAQH/BAQDAgXgMD4GA1UdJQQ3MDUG +CCsGAQUFBwMBBggrBgEFBQcDAgYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBBggrBgEF +BQcDBDAfBgNVHSMEGDAWgBSRdzZ7LrRp8yfqt/YIi0ojohFJxjAnBgNVHREEIDAe +gRxhbmRyZWEuY2VjY2FudGlAY25hZi5pbmZuLml0MA0GCSqGSIb3DQEBBQUAA4IB +AQANYtWXetheSeVpCfnId9TkKyKTAp8RahNZl4XFrWWn2S9We7ACK/G7u1DebJYx +d8POo8ClscoXyTO2BzHHZLxauEKIzUv7g2GehI+SckfZdjFyRXjD0+wMGwzX7MDu +SL3CG2aWsYpkBnj6BMlr0P3kZEMqV5t2+2Tj0+aXppBPVwzJwRhnrSJiO5WIZAZf +49YhMn61sQIrepvhrKEUR4XVorH2Bj8ek1/iLlgcmFMBOds+PrehSRR8Gn0IjlEg +C68EY6KPE+FKySuS7Ur7lTAjNdddfdAgKV6hJyST6/dx8ymIkb8nxCPnxCcT2I2N +vDxcPMc/wmnMa+smNal0sJ6m +-----END CERTIFICATE----- diff --git a/t/nginx_voms_example.cert.pem b/t/nginx_voms_example.cert.pem new file mode 100644 index 0000000..156e8ec --- /dev/null +++ b/t/nginx_voms_example.cert.pem @@ -0,0 +1,85 @@ +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 788 (0x314) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=IT, O=IGI, CN=Test CA + Validity + Not Before: Mar 2 16:20:13 2018 GMT + Not After : Feb 28 16:20:13 2028 GMT + Subject: C=IT, O=IGI, CN=nginx-voms.example + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public Key: (2048 bit) + Modulus (2048 bit): + 00:b0:40:e2:d8:57:f2:36:5b:8d:a4:0a:b0:8a:c2: + 15:44:3d:3a:a3:c5:3a:a6:86:76:7a:ce:2c:93:5c: + 7a:b2:ac:42:2d:e7:4f:20:fe:65:fa:ec:c7:84:3d: + 78:2b:31:58:11:c6:04:3f:5e:f2:9b:c8:c1:0a:9c: + 30:14:74:64:ae:23:0c:8a:4d:c6:ab:2a:9a:24:b5: + 8b:89:c6:5d:0c:72:e2:12:ec:06:e6:7f:54:80:8b: + 2a:a1:2a:0e:2e:96:ee:0d:af:6e:fd:57:f2:48:34: + a7:6b:8f:c0:c9:39:4c:83:24:96:75:94:be:b7:1c: + 6c:bb:e8:c8:00:43:46:ef:8d:d7:1c:e6:79:d7:a8: + 20:4f:66:65:6c:c5:4e:51:c7:b3:dc:39:43:84:65: + 18:14:57:a4:37:55:8c:5f:5b:63:b6:20:7e:bb:b6: + c3:99:4f:41:fa:87:3a:73:ed:34:91:c5:a8:3b:50: + 15:2d:de:8e:76:ab:87:06:cc:5b:0c:44:8d:30:24: + 6f:2d:6e:a7:b0:97:7c:5d:50:52:6b:66:3b:8f:f8: + 2e:41:c4:71:ad:52:14:07:c2:35:57:4e:64:d6:d2: + 9f:46:d3:d4:28:c1:15:3b:bb:ff:b1:73:9d:d0:1b: + 7e:81:9c:50:48:55:c1:58:63:a8:25:12:4e:1c:aa: + 90:a1 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:FALSE + X509v3 Subject Key Identifier: + 2F:BA:E2:77:B3:3E:47:82:3B:5C:8C:A1:13:7A:4D:59:50:4D:8C:FD + X509v3 Key Usage: critical + Digital Signature, Non Repudiation, Key Encipherment + X509v3 Extended Key Usage: + TLS Web Server Authentication, TLS Web Client Authentication, Microsoft Server Gated Crypto, Netscape Server Gated Crypto, E-mail Protection + X509v3 Authority Key Identifier: + keyid:91:77:36:7B:2E:B4:69:F3:27:EA:B7:F6:08:8B:4A:23:A2:11:49:C6 + + X509v3 Subject Alternative Name: + DNS:nginx-voms.example + Signature Algorithm: sha256WithRSAEncryption + 4f:13:10:00:61:f5:76:3b:2d:43:ab:89:55:4c:a5:b3:16:84: + dd:bf:18:6d:f3:4a:b3:65:32:0a:fa:14:aa:5e:61:45:05:fa: + f8:35:1e:ad:b9:ff:3e:70:be:94:99:3c:04:28:59:4d:12:88: + 5f:e4:2a:e5:bc:eb:c7:59:49:59:b8:f7:79:a3:2f:ec:99:af: + eb:f9:05:5e:68:14:fb:bb:35:a3:3e:d7:1b:55:c2:91:a5:cc: + b5:88:15:0c:36:aa:25:e8:76:bc:e5:b0:b7:a8:b4:af:7b:c9: + 8a:52:ae:34:07:4e:18:5a:e2:83:21:bf:10:fe:8c:91:1f:88: + b0:0e:60:ea:8a:40:df:2e:d5:0e:70:2b:07:95:d5:00:02:3b: + be:b6:22:ff:a2:30:5e:52:83:7b:b9:44:ce:56:be:de:d0:55: + 35:35:e7:3f:45:1a:ad:93:42:65:84:2d:d4:86:b6:5c:7e:06: + e8:76:87:2e:2e:e3:fa:d6:65:1e:00:7a:a4:71:be:c8:4a:2f: + 8a:06:bf:15:02:68:53:99:44:ce:45:8e:d0:e9:5d:76:3f:93: + e9:57:91:2c:af:56:ce:a4:20:88:5d:fc:49:44:cc:78:d6:4e: + 0e:e3:8e:1b:f7:81:9e:eb:15:26:ba:97:f6:c3:ca:6f:3f:5f: + 3d:23:a0:fd +-----BEGIN CERTIFICATE----- +MIIDojCCAoqgAwIBAgICAxQwDQYJKoZIhvcNAQELBQAwLTELMAkGA1UEBhMCSVQx +DDAKBgNVBAoMA0lHSTEQMA4GA1UEAwwHVGVzdCBDQTAeFw0xODAzMDIxNjIwMTNa +Fw0yODAyMjgxNjIwMTNaMDgxCzAJBgNVBAYTAklUMQwwCgYDVQQKDANJR0kxGzAZ +BgNVBAMMEm5naW54LXZvbXMuZXhhbXBsZTCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBALBA4thX8jZbjaQKsIrCFUQ9OqPFOqaGdnrOLJNcerKsQi3nTyD+ +Zfrsx4Q9eCsxWBHGBD9e8pvIwQqcMBR0ZK4jDIpNxqsqmiS1i4nGXQxy4hLsBuZ/ +VICLKqEqDi6W7g2vbv1X8kg0p2uPwMk5TIMklnWUvrccbLvoyABDRu+N1xzmedeo +IE9mZWzFTlHHs9w5Q4RlGBRXpDdVjF9bY7Ygfru2w5lPQfqHOnPtNJHFqDtQFS3e +jnarhwbMWwxEjTAkby1up7CXfF1QUmtmO4/4LkHEca1SFAfCNVdOZNbSn0bT1CjB +FTu7/7FzndAbfoGcUEhVwVhjqCUSThyqkKECAwEAAaOBwDCBvTAMBgNVHRMBAf8E +AjAAMB0GA1UdDgQWBBQvuuJ3sz5HgjtcjKETek1ZUE2M/TAOBgNVHQ8BAf8EBAMC +BeAwPgYDVR0lBDcwNQYIKwYBBQUHAwEGCCsGAQUFBwMCBgorBgEEAYI3CgMDBglg +hkgBhvhCBAEGCCsGAQUFBwMEMB8GA1UdIwQYMBaAFJF3NnsutGnzJ+q39giLSiOi +EUnGMB0GA1UdEQQWMBSCEm5naW54LXZvbXMuZXhhbXBsZTANBgkqhkiG9w0BAQsF +AAOCAQEATxMQAGH1djstQ6uJVUylsxaE3b8YbfNKs2UyCvoUql5hRQX6+DUerbn/ +PnC+lJk8BChZTRKIX+Qq5bzrx1lJWbj3eaMv7Jmv6/kFXmgU+7s1oz7XG1XCkaXM +tYgVDDaqJeh2vOWwt6i0r3vJilKuNAdOGFrigyG/EP6MkR+IsA5g6opA3y7VDnAr +B5XVAAI7vrYi/6IwXlKDe7lEzla+3tBVNTXnP0UarZNCZYQt1Ia2XH4G6HaHLi7j ++tZlHgB6pHG+yEoviga/FQJoU5lEzkWO0Olddj+T6VeRLK9WzqQgiF38SUTMeNZO +DuOOG/eBnusVJrqX9sPKbz9fPSOg/Q== +-----END CERTIFICATE----- diff --git a/t/nginx_voms_example.key.pem b/t/nginx_voms_example.key.pem new file mode 100644 index 0000000..c46267b --- /dev/null +++ b/t/nginx_voms_example.key.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEAsEDi2FfyNluNpAqwisIVRD06o8U6poZ2es4sk1x6sqxCLedP +IP5l+uzHhD14KzFYEcYEP17ym8jBCpwwFHRkriMMik3GqyqaJLWLicZdDHLiEuwG +5n9UgIsqoSoOLpbuDa9u/VfySDSna4/AyTlMgySWdZS+txxsu+jIAENG743XHOZ5 +16ggT2ZlbMVOUcez3DlDhGUYFFekN1WMX1tjtiB+u7bDmU9B+oc6c+00kcWoO1AV +Ld6OdquHBsxbDESNMCRvLW6nsJd8XVBSa2Y7j/guQcRxrVIUB8I1V05k1tKfRtPU +KMEVO7v/sXOd0Bt+gZxQSFXBWGOoJRJOHKqQoQIDAQABAoIBAQCt47Zqn4n2GymJ +GIrIu2bj5ky+Ws3ckXi+/D56PJlJQi4gv78P3C2c/JJzY3n1kz9CecyjAPf2vn/G +CgZdh9/09dtfcBB7uxJM+Vfr2+rdZ1KoPHkqW6FxGNw8GRPY30uJ8PVdubDtkBVF +R5R6cq+MC0LuSoxGeCLG2YjIyZdoqzLKGyHy6Sv1Cdd1ctXa4DHKBA6XUwKTN6tB +GFdrNiz5ucGB9AzOcpXSRD/F8Vy7beb8Gb+4skEXp2hAVzVFOd9xbrsZZRpPmQky +4UN3E8Fy+1hbqlXBnCJF8pRywVLEtuCOF8BJlFCqgnV79JxKsxf/iIV+gXJje2i8 +MRbKbZjJAoGBANeMHUiJeF2y40lD+9VHHPj5Y69aN6osUQs++IXE+9bT513TGvLx +6WtwRE45tWFg2VT45NoVJ1a5HW6aj0LbSqHsgO80A4yumdPd8W4Fa1LhqNSwKqKx +38RsZL8AS1FghEt/HayxaboqGDl/q4qP0b3lzgIM98LGpIgDbPwoePQfAoGBANFU +6e2FquwmxX9ZsOd5tYU6mLrdhvEBbXlVF3V/JpdYMwS4OEyV8pkIdaw+lapcF7/G +l9Atksb44xYCNf45e/SUR+dLpvCDjKgkO9vmfnNM/sv057KyfjaLU5ogag0cfKFQ +qYvYRzd4ujUj4EoM7DMNsF6IPrhqNbqwIChDseM/AoGBALZkOeNHcDLZTLqSbGbs +5fdIELIxBSlalrmNb37CUNhYN0+NcyBg08O2HBaVfoYIDd95PS3M+JzJx73vy4on +Rd/+4JuIx/gjRseg5srSix53FQXkjC9flJoBnr6A4TrbERdRWSrodS6ysAz3m5CE +YlbuPoQ9tOl8bX0qaO520OLBAoGAPYwO35ROhfJ8XQ488kIZudtZro+VrmSyEFuR +cy14ZkU7cubLPtFTq+UN3B/ml1lObkdwuXe80R26fu0VfPLf3DCA16OpqMu03ncQ +1n31reb0f3k5apQKgfUDFqzzIXm/txplT0W+4rNvZFJxDrSv+e7LbW/3qPcpZwOD +4PLOabcCgYASw9uVfE9JhOoawDtROQkiOtg8gx5CffvdSqztRnIbR/LN9Ne+CMsl +UJuPaEj/O7y00ZyfHNmOfKMjFNwEGyk+LdLUkKEw0feNZQzHvfTmuBCqwWQYM8dL +mA0WApTCO1rMTg/KouRSy9QFCpUx0oMJN7mgKo0BaH+H2RhIlssOAg== +-----END RSA PRIVATE KEY----- diff --git a/t/trust-anchors/igi-test-ca.pem b/t/trust-anchors/igi-test-ca.pem new file mode 100644 index 0000000..19906b3 --- /dev/null +++ b/t/trust-anchors/igi-test-ca.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDgDCCAmigAwIBAgIJAMzDwAv7o5VUMA0GCSqGSIb3DQEBBQUAMC0xCzAJBgNV +BAYTAklUMQwwCgYDVQQKDANJR0kxEDAOBgNVBAMMB1Rlc3QgQ0EwHhcNMTIwOTI2 +MTUwMDU0WhcNMjIwOTI0MTUwMDU0WjAtMQswCQYDVQQGEwJJVDEMMAoGA1UECgwD +SUdJMRAwDgYDVQQDDAdUZXN0IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEA9u4Fgtj7YpMRql3NAasEUmP6Byv/CH+dPZNzSxfNCMOPqARLBWS/2Ora +m5cRpoBByT0LpjDCFBJhLrBKvCvmWOTfS1jYsQwSpC/5scButthlcNOhLKQSZblS +8Pa7HoFS4zQFwCwWOYbOLF+FblYRgSY30WMi361giydeV8iei8KNH2FIoDyo9kjV +gYQKp76LFv7urGhc5sHA+HWq7+AfyivtZC+a55Rw6EHXOQ+vih5TPXa1t5RL7IkY +4U7Ld5ExptBIDx0UkSihYexAY4RGXVUaq535dGtJQ8/NYMrJ5NMGt2X0bRszArnE +EKc/qdAcgcalgoiaZtVkq45eXADXzwIDAQABo4GiMIGfMB0GA1UdDgQWBBSRdzZ7 +LrRp8yfqt/YIi0ojohFJxjBdBgNVHSMEVjBUgBSRdzZ7LrRp8yfqt/YIi0ojohFJ +xqExpC8wLTELMAkGA1UEBhMCSVQxDDAKBgNVBAoMA0lHSTEQMA4GA1UEAwwHVGVz +dCBDQYIJAMzDwAv7o5VUMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG +MA0GCSqGSIb3DQEBBQUAA4IBAQB379cvZmfCLvGdoGbW+6ppDNy3pT9hqYmZAlfV +FGZSEaTKjGCbPuErUNC6+7zhij5CmMtMRhccI3JswjPHPQGm12jiEC492J6Avj/x +PL8vcBRofe4whXefDVgUw8G1nkQYr2BF0jzeiN72ToISGMbt/q94QV70lYCo/Tog +UQQ6F+XhztffxQyRgsUXhR4qq1D4h7UifqfQGBzknS23RMLQUdKXG4MhTLMVmxJC +uY9Oi0It3hk9Qtn0nlZ7rvo5weJGxuRBbZ85Nvw2tIhH7G2osc6zqmHTmUAR4FXb +l8/ElwGVrURMMuJLDbISVXjBNFuVOS2BdlyEe4x5kfQAWITZ +-----END CERTIFICATE----- diff --git a/t/voms_example.cert.pem b/t/voms_example.cert.pem new file mode 100644 index 0000000..a23de3f --- /dev/null +++ b/t/voms_example.cert.pem @@ -0,0 +1,85 @@ +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 787 (0x313) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=IT, O=IGI, CN=Test CA + Validity + Not Before: Dec 6 09:46:37 2017 GMT + Not After : Dec 4 09:46:37 2027 GMT + Subject: C=IT, O=IGI, CN=voms.example + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public Key: (2048 bit) + Modulus (2048 bit): + 00:bc:7f:c8:da:1e:0d:93:50:b4:98:22:1a:2f:ad: + 23:f4:92:2b:72:91:12:9b:ef:e1:a3:a2:a6:03:04: + bd:c7:c2:7f:78:51:78:fd:94:06:d3:aa:e8:dd:56: + 8f:1d:d5:1d:a5:49:3f:4c:b2:4c:d1:3e:69:2c:60: + c0:8f:5f:0f:7c:6d:a4:cb:58:0c:6e:de:33:6a:6c: + 32:11:bb:d3:e1:4d:03:13:b5:1f:99:35:1d:1f:af: + b4:7b:da:b6:1b:5a:76:76:54:04:f3:e8:d7:60:6b: + c6:55:d9:d4:12:eb:7b:f2:3d:df:ec:9e:da:d4:df: + 10:af:ee:dc:9d:96:c7:14:8c:60:16:d8:92:ca:29: + 8c:df:f7:4f:8f:8b:a7:80:01:e7:f7:7a:4f:3c:32: + 42:af:ce:2e:f8:1a:7b:bc:b5:eb:20:a7:d5:28:c1: + a4:d3:54:d3:dc:c0:dc:96:7b:c4:09:c5:9f:2f:c8: + db:73:61:01:e4:2e:97:b9:05:64:1a:dc:76:09:09: + eb:af:be:6c:47:b9:5b:41:86:c1:51:c0:fe:65:23: + 2b:94:ac:b0:81:46:99:9a:c2:9e:6f:0b:62:03:34: + d3:5b:b5:db:e7:ac:38:0e:31:63:ed:81:1f:6e:bc: + 41:65:89:b1:8d:2f:5f:fa:8a:da:88:ac:f8:cb:3f: + eb:2b + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:FALSE + X509v3 Subject Key Identifier: + 33:8C:09:D4:49:94:01:CE:D1:FB:0B:9D:19:5E:AD:C4:D7:F5:90:C4 + X509v3 Key Usage: critical + Digital Signature, Non Repudiation, Key Encipherment + X509v3 Extended Key Usage: + TLS Web Server Authentication, TLS Web Client Authentication, Microsoft Server Gated Crypto, Netscape Server Gated Crypto, E-mail Protection + X509v3 Authority Key Identifier: + keyid:91:77:36:7B:2E:B4:69:F3:27:EA:B7:F6:08:8B:4A:23:A2:11:49:C6 + + X509v3 Subject Alternative Name: + DNS:voms.example + Signature Algorithm: sha256WithRSAEncryption + e0:c5:08:e4:92:9b:26:09:04:64:b9:9e:c9:27:82:2c:90:4c: + 4b:f1:3c:1a:4d:cd:f6:5a:fe:8a:58:6b:36:42:3b:7b:d0:e0: + 66:2a:ee:2d:ad:d0:2a:59:52:c8:44:85:b6:90:af:12:49:cc: + de:a4:65:aa:e9:6e:83:e1:cf:20:d3:98:8f:3e:a8:a1:82:f8: + f5:6e:97:73:78:be:46:a7:5a:a7:10:30:b7:01:13:cf:b4:03: + c6:74:f7:e4:b8:51:21:33:79:4a:88:d6:01:cb:c1:22:37:6e: + 9f:1d:2c:3e:eb:d0:09:51:3b:0a:5f:b5:19:b6:1a:35:63:95: + 94:f5:99:a1:bc:18:bc:84:aa:9b:70:3a:b2:2d:c2:ed:50:19: + 20:16:94:21:ea:49:e1:d8:61:10:9d:f5:29:65:11:a2:15:2b: + 8a:f7:14:5a:49:b8:2d:5c:0f:fc:77:20:e7:03:3a:15:b8:21: + 31:d8:33:fc:8f:70:1c:a6:90:80:84:b3:af:1f:2d:28:9e:c6: + e2:8a:43:ec:26:32:bf:d7:6a:aa:42:5a:2c:50:29:33:5d:b7: + e8:58:22:b6:c7:7b:bf:a4:ac:55:32:2d:51:58:1a:ee:9e:80: + d2:4d:24:4b:6a:e3:97:2e:a7:5c:e3:50:84:33:b5:ec:a4:20: + 6e:70:1d:e9 +-----BEGIN CERTIFICATE----- +MIIDljCCAn6gAwIBAgICAxMwDQYJKoZIhvcNAQELBQAwLTELMAkGA1UEBhMCSVQx +DDAKBgNVBAoMA0lHSTEQMA4GA1UEAwwHVGVzdCBDQTAeFw0xNzEyMDYwOTQ2Mzda +Fw0yNzEyMDQwOTQ2MzdaMDIxCzAJBgNVBAYTAklUMQwwCgYDVQQKDANJR0kxFTAT +BgNVBAMMDHZvbXMuZXhhbXBsZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBALx/yNoeDZNQtJgiGi+tI/SSK3KREpvv4aOipgMEvcfCf3hReP2UBtOq6N1W +jx3VHaVJP0yyTNE+aSxgwI9fD3xtpMtYDG7eM2psMhG70+FNAxO1H5k1HR+vtHva +thtadnZUBPPo12BrxlXZ1BLre/I93+ye2tTfEK/u3J2WxxSMYBbYksopjN/3T4+L +p4AB5/d6TzwyQq/OLvgae7y16yCn1SjBpNNU09zA3JZ7xAnFny/I23NhAeQul7kF +ZBrcdgkJ66++bEe5W0GGwVHA/mUjK5SssIFGmZrCnm8LYgM001u12+esOA4xY+2B +H268QWWJsY0vX/qK2ois+Ms/6ysCAwEAAaOBujCBtzAMBgNVHRMBAf8EAjAAMB0G +A1UdDgQWBBQzjAnUSZQBztH7C50ZXq3E1/WQxDAOBgNVHQ8BAf8EBAMCBeAwPgYD +VR0lBDcwNQYIKwYBBQUHAwEGCCsGAQUFBwMCBgorBgEEAYI3CgMDBglghkgBhvhC +BAEGCCsGAQUFBwMEMB8GA1UdIwQYMBaAFJF3NnsutGnzJ+q39giLSiOiEUnGMBcG +A1UdEQQQMA6CDHZvbXMuZXhhbXBsZTANBgkqhkiG9w0BAQsFAAOCAQEA4MUI5JKb +JgkEZLmeySeCLJBMS/E8Gk3N9lr+ilhrNkI7e9DgZiruLa3QKllSyESFtpCvEknM +3qRlqulug+HPINOYjz6ooYL49W6Xc3i+RqdapxAwtwETz7QDxnT35LhRITN5SojW +AcvBIjdunx0sPuvQCVE7Cl+1GbYaNWOVlPWZobwYvISqm3A6si3C7VAZIBaUIepJ +4dhhEJ31KWURohUrivcUWkm4LVwP/Hcg5wM6FbghMdgz/I9wHKaQgISzrx8tKJ7G +4opD7CYyv9dqqkJaLFApM1236Fgitsd7v6SsVTItUVga7p6A0k0kS2rjly6nXONQ +hDO17KQgbnAd6Q== +-----END CERTIFICATE----- diff --git a/t/voms_example.key.pem b/t/voms_example.key.pem new file mode 100644 index 0000000..807ebac --- /dev/null +++ b/t/voms_example.key.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAvH/I2h4Nk1C0mCIaL60j9JIrcpESm+/ho6KmAwS9x8J/eFF4 +/ZQG06ro3VaPHdUdpUk/TLJM0T5pLGDAj18PfG2ky1gMbt4zamwyEbvT4U0DE7Uf +mTUdH6+0e9q2G1p2dlQE8+jXYGvGVdnUEut78j3f7J7a1N8Qr+7cnZbHFIxgFtiS +yimM3/dPj4ungAHn93pPPDJCr84u+Bp7vLXrIKfVKMGk01TT3MDclnvECcWfL8jb +c2EB5C6XuQVkGtx2CQnrr75sR7lbQYbBUcD+ZSMrlKywgUaZmsKebwtiAzTTW7Xb +56w4DjFj7YEfbrxBZYmxjS9f+oraiKz4yz/rKwIDAQABAoIBACXvPXeP1sGP21hG +fKidmn/Mrsu2oF0bcHhi8i/nU14RKWAIXWYC1UDhw01P7ytcyUOLMx73PvhZLAdP +TVFNGyu6URDPHmltdEF1lrn059YOjpD3wW0uwDaxQIwwXrewg+iaTgjcEgQIjHiY +htJr65y7kQXojjeK0KvnUSSxxEzA/uWeyQi/+ZFzPRfrj5o0uwo+qnwwiYn8FSVl +9S/MPiAXZcvQTojEu5kbH/0iRUwhDzcmtj8O1M3idhMl1G/WtdU2zHsR6p78HuZK +uZu9JRnSh1K8wiDdT+8TIitvBuv87fVFJg54pbO+Sa6tsfm4q9Vf21DyY7ZVRoie +Y6IPz8ECgYEA3c8NuLLKCFvU55lZkNWl0ixicD3w4o1k2at9FKYsboPJ9BUIYpVO +vqSflUKATENNfkoWmT4iTbNq8VJxnLNn1y33uB9ztQIn99Do0YeERSW0JExb363r +dJNlirxovoXvUT6kGHqFWIJyxXkh6wEZ4gqne94ujtqj9KHWczbpw4sCgYEA2Y5G +1L49361df9VDblhxS60hNmtNC9h3XTqKwfOXLCHG61JMxNUChhKikUuDsvfmXwta +dX51WJSL56pDHlk0prLrMWli4zLhiPiXknUIFiUt07lbzfDZ0aehr9xOFM4oBnyV +oR3eBhE/YJ1W3Xt2DGUySE09eukHoEeZURrq6uECgYAqKDhLam/Ltuh4PEUxqemi +UJ1FCADIjmckl9tmGU9IkfPIWFcHpakZwuAx1jncRM5tulchORX7/qXMyAaf6dlK +pIn4jMHJHWfLSgF2EXOqUMg0Pe8YTE38EieyfqzJyVr67hTyMhc2A1UdAzDXIZZx +x+SdPlVLAXM4A6pmq4EykQKBgQCLq+9HiDe7Edd0SZu4DSn3ltg60tqtHzVK8lnB +OT01xR2rWLQWrlancvFR7LRJwyPwox5ZTm3SB9RmUAY1Rropx7Z9i5ZEHRd003yk +N2SQqx/nzRnmdpmxIzkH6Z1reAt0VqnNvZocNRiGU51AJpJcVN/aUVSGQ3N08GK7 +Elf9oQKBgGKL4eCjoLp9Kuvp+UXeKeeTSR2rTSOh36ZjtxDLOhdAj5mXSFj2nvLx +j2YNCkuU0Y25Vbpt/go7DFRnbZmKucpyUJNC49m3YD4zq0CVMX4BOUkkg3rJjMhP +Ce3aEfVwC9rF9sFHp5pHTBm6HCBCZikVtpYjn05rUtLYiYcSia88 +-----END RSA PRIVATE KEY----- diff --git a/t/vomsdir/test.vo/voms.example.lsc b/t/vomsdir/test.vo/voms.example.lsc new file mode 100644 index 0000000..0121b81 --- /dev/null +++ b/t/vomsdir/test.vo/voms.example.lsc @@ -0,0 +1,2 @@ +/C=IT/O=IGI/CN=voms.example +/C=IT/O=IGI/CN=Test CA -- GitLab From e85baad514e1c9f397ccc9d86c85047f3a21370f Mon Sep 17 00:00:00 2001 From: nterranova <nicholas.terranova@cnaf.infn.it> Date: Mon, 5 Mar 2018 14:30:29 +0100 Subject: [PATCH 02/13] Expired proxy test --- t/README.md | 5 ++ t/certs/0.cert.pem | 38 ++++++++++++ t/certs/0.key.pem | 15 +++++ t/certs/1.cert.pem | 71 ++++++++++++++++++++++ t/certs/1.key.pem | 15 +++++ t/certs/2.cert.pem | 71 ++++++++++++++++++++++ t/certs/2.key.pem | 15 +++++ t/{ => certs}/nginx_voms_example.cert.pem | 0 t/{ => certs}/nginx_voms_example.key.pem | 0 t/{ => certs}/voms_example.cert.pem | 0 t/{ => certs}/voms_example.key.pem | 0 t/expired_proxy.t | 32 ++++++++++ t/servroot/conf/nginx.conf | 73 +++++++++++++++++++++++ t/servroot/html/index.html | 1 + t/servroot/logs/access.log | 2 + t/servroot/logs/error.log | 11 ++++ 16 files changed, 349 insertions(+) create mode 100644 t/certs/0.cert.pem create mode 100644 t/certs/0.key.pem create mode 100644 t/certs/1.cert.pem create mode 100644 t/certs/1.key.pem create mode 100644 t/certs/2.cert.pem create mode 100644 t/certs/2.key.pem rename t/{ => certs}/nginx_voms_example.cert.pem (100%) rename t/{ => certs}/nginx_voms_example.key.pem (100%) rename t/{ => certs}/voms_example.cert.pem (100%) rename t/{ => certs}/voms_example.key.pem (100%) create mode 100644 t/expired_proxy.t create mode 100644 t/servroot/conf/nginx.conf create mode 100644 t/servroot/html/index.html create mode 100644 t/servroot/logs/access.log create mode 100644 t/servroot/logs/error.log diff --git a/t/README.md b/t/README.md index e69de29..8a49daa 100644 --- a/t/README.md +++ b/t/README.md @@ -0,0 +1,5 @@ +# ngx_http_voms_module testing + +## Description + + diff --git a/t/certs/0.cert.pem b/t/certs/0.cert.pem new file mode 100644 index 0000000..7597490 --- /dev/null +++ b/t/certs/0.cert.pem @@ -0,0 +1,38 @@ +-----BEGIN CERTIFICATE----- +MIICkjCCAXygAwIBAgIEaPuJvzALBgkqhkiG9w0BAQUwKzELMAkGA1UEBhMCSVQx +DDAKBgNVBAoTA0lHSTEOMAwGA1UEAxMFdGVzdDAwHhcNMTgwMzAyMTczNTU0WhcN +MjIwOTI0MTUzOTM0WjBAMQswCQYDVQQGEwJJVDEMMAoGA1UEChMDSUdJMQ4wDAYD +VQQDEwV0ZXN0MDETMBEGA1UEAxMKMTc2MTMxNTI2MzCBnzANBgkqhkiG9w0BAQEF +AAOBjQAwgYkCgYEAgCtdYKINH/sClmYwxea8ydJbBTR7j8XdJmuZgA5c8YDLmN2E +Fo50XHtQXbpmNGvuOXC6n4hY193oEcXL7N+CTjlHEmx5imaNzFvcfEdjxx0Cytqi +xOt1tbhOvZUSMYqcIdJfPX21n7D1tObI3/+cZ16RHNWZF/wigdLoSr6qbZ0CAwEA +AaMxMC8wDgYDVR0PAQH/BAQDAgXgMB0GCCsGAQUFBwEOAQH/BA4wDDAKBggrBgEF +BQcVATALBgkqhkiG9w0BAQUDggEBACm+nPPqabJDsKb0BnihdPbIOls5Kla84nSo +p5WlRGrGtnBmWkL7WeZc2CYXzrrd4EhAQtjwnw1eYZ3+uTBNXbsQNSTiGqhfXcdH +p5O4AOUMdMda19kos67AIFCn5skWrKzn04TW8HEOYo6doJAkkAc7pFrQeXVU4IUM +ZlS6gNuXqLISelHZV2WGeueZ9oe8SL08ZKZCNI09BScUaqiIuuVdZhH48uNBQKXs +/KWjT8IBj4bTum+/nrSLGPRppSMC1bDfmn0C/ffk7g1Fo+ndyU9lB4ZF6eykGYe3 +V1LswGAb9BQvbm2qYdmS4F/i2qLxkRyaA1IB8aaCv4tWqKtMH00= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDnjCCAoagAwIBAgIBCTANBgkqhkiG9w0BAQUFADAtMQswCQYDVQQGEwJJVDEM +MAoGA1UECgwDSUdJMRAwDgYDVQQDDAdUZXN0IENBMB4XDTEyMDkyNjE1MzkzNFoX +DTIyMDkyNDE1MzkzNFowKzELMAkGA1UEBhMCSVQxDDAKBgNVBAoTA0lHSTEOMAwG +A1UEAxMFdGVzdDAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDKxtrw +hoZ27SxxISjlRqWmBWB6U+N/xW2kS1uUfrQRav6auVtmtEW45J44VTi3WW6Y113R +BwmS6oW+3lzyBBZVPqnhV9/VkTxLp83gGVVvHATgGgkjeTxIsOE+TkPKAoZJ/QFc +CfPh3WdZ3ANI14WYkAM9VXsSbh2okCsWGa4o6pzt3Pt1zKkyO4PW0cBkletDImJK +2vufuDVNm7Iz/y3/8pY8p3MoiwbF/PdSba7XQAxBWUJMoaleh8xy8HSROn7tF2al +xoDLH4QWhp6UDn2rvOWseBqUMPXFjsUi1/rkw1oHAjMroTk5lL15GI0LGd5dTVop +kKXFbTTYxSkPz1MLAgMBAAGjgcowgccwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQU +fLdB5+jO9LyWN2/VCNYgMa0jvHEwDgYDVR0PAQH/BAQDAgXgMD4GA1UdJQQ3MDUG +CCsGAQUFBwMBBggrBgEFBQcDAgYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBBggrBgEF +BQcDBDAfBgNVHSMEGDAWgBSRdzZ7LrRp8yfqt/YIi0ojohFJxjAnBgNVHREEIDAe +gRxhbmRyZWEuY2VjY2FudGlAY25hZi5pbmZuLml0MA0GCSqGSIb3DQEBBQUAA4IB +AQANYtWXetheSeVpCfnId9TkKyKTAp8RahNZl4XFrWWn2S9We7ACK/G7u1DebJYx +d8POo8ClscoXyTO2BzHHZLxauEKIzUv7g2GehI+SckfZdjFyRXjD0+wMGwzX7MDu +SL3CG2aWsYpkBnj6BMlr0P3kZEMqV5t2+2Tj0+aXppBPVwzJwRhnrSJiO5WIZAZf +49YhMn61sQIrepvhrKEUR4XVorH2Bj8ek1/iLlgcmFMBOds+PrehSRR8Gn0IjlEg +C68EY6KPE+FKySuS7Ur7lTAjNdddfdAgKV6hJyST6/dx8ymIkb8nxCPnxCcT2I2N +vDxcPMc/wmnMa+smNal0sJ6m +-----END CERTIFICATE----- diff --git a/t/certs/0.key.pem b/t/certs/0.key.pem new file mode 100644 index 0000000..c073616 --- /dev/null +++ b/t/certs/0.key.pem @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICWwIBAAKBgQCAK11gog0f+wKWZjDF5rzJ0lsFNHuPxd0ma5mADlzxgMuY3YQW +jnRce1BdumY0a+45cLqfiFjX3egRxcvs34JOOUcSbHmKZo3MW9x8R2PHHQLK2qLE +63W1uE69lRIxipwh0l89fbWfsPW05sjf/5xnXpEc1ZkX/CKB0uhKvqptnQIDAQAB +AoGAIEVK5IrIzTWRKDcgrqNzA0nQmxXkyoViMktDQefb5P6txJZ5rIg/qg1uZbsK +AsbuG05T3tkgrXF0/gyUVNbN4vKE1Po1HyCIz8ZO5ZoA+AB3W5swdkf/sP9/y5jG +qrh58CM+IqpyVIf0ZYSv3j/WEGgocBuzBlgzsu81ruR4ym0CQQDIAzAu1KigbKNs +kJvgjWGJK5fAF+eJgQ4waH1wnzlExgM8lBpQhNXiYnvcrTUBbBtc4onXbD1iiHkD +M52BJNhjAkEApAvuiv8TjIK9T5EyCf3Zbk5g8I9XUTNk2Qq9Dc9NfXnE9OwjNss/ +hjvDCX89OA1DFRuud2a0qgvMSrVXnW+B/wJAJQzSJBqoke8N5tJyzYnjA3Hbzm2f +Kk2Jv1Xbxrz38tFrUBFvPnMc2666mwpKw1SvTOl59znJtTLql7k79+xHWQJAKcrA +YrjJCirkf7jFvrXlBq0BFUfvPsiREJojv7joTOcQvjTKY9Mzw8bF0U2REw6N4HrE +37ZSoF+RFBdO0tTtkQJAFs+jv0al71WnqEwoF0R8iSACcgTU5pG2c5upMUFbq+3V +Sc2mleRKf33pghtj1f/HP9+CXhUVG1rtLkcR6qW5Cg== +-----END RSA PRIVATE KEY----- diff --git a/t/certs/1.cert.pem b/t/certs/1.cert.pem new file mode 100644 index 0000000..2e4a5e2 --- /dev/null +++ b/t/certs/1.cert.pem @@ -0,0 +1,71 @@ +-----BEGIN CERTIFICATE----- +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 +ZTAXFVmk +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDnjCCAoagAwIBAgIBCTANBgkqhkiG9w0BAQUFADAtMQswCQYDVQQGEwJJVDEM +MAoGA1UECgwDSUdJMRAwDgYDVQQDDAdUZXN0IENBMB4XDTEyMDkyNjE1MzkzNFoX +DTIyMDkyNDE1MzkzNFowKzELMAkGA1UEBhMCSVQxDDAKBgNVBAoTA0lHSTEOMAwG +A1UEAxMFdGVzdDAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDKxtrw +hoZ27SxxISjlRqWmBWB6U+N/xW2kS1uUfrQRav6auVtmtEW45J44VTi3WW6Y113R +BwmS6oW+3lzyBBZVPqnhV9/VkTxLp83gGVVvHATgGgkjeTxIsOE+TkPKAoZJ/QFc +CfPh3WdZ3ANI14WYkAM9VXsSbh2okCsWGa4o6pzt3Pt1zKkyO4PW0cBkletDImJK +2vufuDVNm7Iz/y3/8pY8p3MoiwbF/PdSba7XQAxBWUJMoaleh8xy8HSROn7tF2al +xoDLH4QWhp6UDn2rvOWseBqUMPXFjsUi1/rkw1oHAjMroTk5lL15GI0LGd5dTVop +kKXFbTTYxSkPz1MLAgMBAAGjgcowgccwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQU +fLdB5+jO9LyWN2/VCNYgMa0jvHEwDgYDVR0PAQH/BAQDAgXgMD4GA1UdJQQ3MDUG +CCsGAQUFBwMBBggrBgEFBQcDAgYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBBggrBgEF +BQcDBDAfBgNVHSMEGDAWgBSRdzZ7LrRp8yfqt/YIi0ojohFJxjAnBgNVHREEIDAe +gRxhbmRyZWEuY2VjY2FudGlAY25hZi5pbmZuLml0MA0GCSqGSIb3DQEBBQUAA4IB +AQANYtWXetheSeVpCfnId9TkKyKTAp8RahNZl4XFrWWn2S9We7ACK/G7u1DebJYx +d8POo8ClscoXyTO2BzHHZLxauEKIzUv7g2GehI+SckfZdjFyRXjD0+wMGwzX7MDu +SL3CG2aWsYpkBnj6BMlr0P3kZEMqV5t2+2Tj0+aXppBPVwzJwRhnrSJiO5WIZAZf +49YhMn61sQIrepvhrKEUR4XVorH2Bj8ek1/iLlgcmFMBOds+PrehSRR8Gn0IjlEg +C68EY6KPE+FKySuS7Ur7lTAjNdddfdAgKV6hJyST6/dx8ymIkb8nxCPnxCcT2I2N +vDxcPMc/wmnMa+smNal0sJ6m +-----END CERTIFICATE----- diff --git a/t/certs/1.key.pem b/t/certs/1.key.pem new file mode 100644 index 0000000..a52ef5b --- /dev/null +++ b/t/certs/1.key.pem @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXQIBAAKBgQCILRV6Kz/KYhWMixptl7fQghmCCDX8U5Ew7LV/Mjz14+ugzJ+U +G0KQ/nnPjskjM3rw+IZIuEAAinyOkihEQJWwp86I9ioAL/xaLdI3dVHQEPn2JMI+ +gzRANPDa98ICIN9+uGQiJu94MqAN4SDfdZAaYqdLr/VqMY/PWk0b+z/eSwIDAQAB +AoGAJM8i9hIIvTkEIChdrXAMVMVGBdsYVKt2HKZvbQF0bvb780w8enlf5feTj6JG +BkjdG5PiIHgFfN/ySUuCrOhUTbNhAx5a9YExqtJoiNaVBcIvlwVEK6Md8iYc9Opv +RB7MOwVmzoQQzTbsKQMDj2Bn1IZmLXKlaW+OW/n/I5KnoYkCQQDsLIGpEdnDlK3e +FaRaBSL8dlE6PA3HKokTeEoy9/yWGcvvtBAfsL8GhFAXEzrCNbuy0dGUymksCSp5 +NTRSe6pfAkEAk5uTf+6TlZaCNutG3H9ScLTvBef3qcrVx9CzsPH8NK6x6GGhpPzl +FBmLtsRxeOGTIFbnEcbfImbuSQ1rcPBrlQJBALiJbia1E/qGSfSl5G2SZevuZzmh +gwKEcecMrq10p6CBN6Bsicy5RgnJiOr+04K8iZUH7ULdhaAq6U0cDW4FwvECQDXm +Om8dtCCMbBIXybFcgMMNHrbeZI5ItdWX/PWg90JZhDdh5z+y5Qd46I6dnv3QCQRn +F0tjfjk2ss5UKyZ7dB0CQQDAGspYNiI7YQoJm7hIAwh332SGuVVqb6IL9rMfsVR6 +ffsKgAQtwl5JYGEKEXtO/yylfaiYqOMHNRJPsiI7IHLq +-----END RSA PRIVATE KEY----- diff --git a/t/certs/2.cert.pem b/t/certs/2.cert.pem new file mode 100644 index 0000000..aea83e0 --- /dev/null +++ b/t/certs/2.cert.pem @@ -0,0 +1,71 @@ +-----BEGIN CERTIFICATE----- +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 +ggMdmoIl +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDnjCCAoagAwIBAgIBCTANBgkqhkiG9w0BAQUFADAtMQswCQYDVQQGEwJJVDEM +MAoGA1UECgwDSUdJMRAwDgYDVQQDDAdUZXN0IENBMB4XDTEyMDkyNjE1MzkzNFoX +DTIyMDkyNDE1MzkzNFowKzELMAkGA1UEBhMCSVQxDDAKBgNVBAoTA0lHSTEOMAwG +A1UEAxMFdGVzdDAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDKxtrw +hoZ27SxxISjlRqWmBWB6U+N/xW2kS1uUfrQRav6auVtmtEW45J44VTi3WW6Y113R +BwmS6oW+3lzyBBZVPqnhV9/VkTxLp83gGVVvHATgGgkjeTxIsOE+TkPKAoZJ/QFc +CfPh3WdZ3ANI14WYkAM9VXsSbh2okCsWGa4o6pzt3Pt1zKkyO4PW0cBkletDImJK +2vufuDVNm7Iz/y3/8pY8p3MoiwbF/PdSba7XQAxBWUJMoaleh8xy8HSROn7tF2al +xoDLH4QWhp6UDn2rvOWseBqUMPXFjsUi1/rkw1oHAjMroTk5lL15GI0LGd5dTVop +kKXFbTTYxSkPz1MLAgMBAAGjgcowgccwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQU +fLdB5+jO9LyWN2/VCNYgMa0jvHEwDgYDVR0PAQH/BAQDAgXgMD4GA1UdJQQ3MDUG +CCsGAQUFBwMBBggrBgEFBQcDAgYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBBggrBgEF +BQcDBDAfBgNVHSMEGDAWgBSRdzZ7LrRp8yfqt/YIi0ojohFJxjAnBgNVHREEIDAe +gRxhbmRyZWEuY2VjY2FudGlAY25hZi5pbmZuLml0MA0GCSqGSIb3DQEBBQUAA4IB +AQANYtWXetheSeVpCfnId9TkKyKTAp8RahNZl4XFrWWn2S9We7ACK/G7u1DebJYx +d8POo8ClscoXyTO2BzHHZLxauEKIzUv7g2GehI+SckfZdjFyRXjD0+wMGwzX7MDu +SL3CG2aWsYpkBnj6BMlr0P3kZEMqV5t2+2Tj0+aXppBPVwzJwRhnrSJiO5WIZAZf +49YhMn61sQIrepvhrKEUR4XVorH2Bj8ek1/iLlgcmFMBOds+PrehSRR8Gn0IjlEg +C68EY6KPE+FKySuS7Ur7lTAjNdddfdAgKV6hJyST6/dx8ymIkb8nxCPnxCcT2I2N +vDxcPMc/wmnMa+smNal0sJ6m +-----END CERTIFICATE----- diff --git a/t/certs/2.key.pem b/t/certs/2.key.pem new file mode 100644 index 0000000..e829c42 --- /dev/null +++ b/t/certs/2.key.pem @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXQIBAAKBgQCffYJKroHe6Ss1in6zkuhSncjbiP3ghIjMwv6m1/bOcuyqzJpX +ZWoLEWvucG5haLZ05Ho1u19xzSlkqsSyc5YLwVhsHbUYF0/3IHBBtCdCShWAs9Bk +3q5/h3wBlciCY/sLanfiUIliUnsx0LovLMDTw5hN+Ez5iK9f5tAkpXX9owIDAQAB +AoGAbxTOQ0+JeoSxqIe+OTnvf2MPuv+Nuur0EJEbJX8zEZTviwIX2Rj0I6NNpfM+ +na99rKpZB8Vp82vuEYPynUtty77UJ7o0iziWQoyb0OsY/U8C0DL0jInicEa7exGP +jWch1d9mFz5A4+mo8QFApo88Cx7ENHvWftro4CWPYkvEEikCQQD/28TpNbAAnJB7 +99S5QaXqAxaPdQIwff5T2OncIsmzL/DHbkp21tPccZ+LVtZp3/2vNF11HT8FYEbW +bcsSZa2/AkEAn5QX82MXrcqEt0pdoU04UdNeSAXY8zaiRinPWlVAOjYl2kDcgInV +DVx0psaoUYbvg+hxzKKunuHChytTYcBxHQJBAPq2hJatWCDRSjdf22AJNyY/Dm1W +j+WqoHvTEx32LMVcVclmhqs6yXG7GUZ1ujcXGUQEwQuQs/91nxRhk9scLYsCQQCT +MSSOaR6UPTMBZeTLPdDvGMnkIRCl9gTkNvh92BiwGPX9RMqe/YO5GUi39JGY8Z/H +ygX9vSjYgGDQERSOG9W5AkAOhzoSyonBVeIvc7ky4F0KQSQupvyAQpTIZ/wkjbGo +W5z9Y3TbN0zJA7Qnx6oEV5ZHshplSdZXYJNvVe5qGvG1 +-----END RSA PRIVATE KEY----- diff --git a/t/nginx_voms_example.cert.pem b/t/certs/nginx_voms_example.cert.pem similarity index 100% rename from t/nginx_voms_example.cert.pem rename to t/certs/nginx_voms_example.cert.pem diff --git a/t/nginx_voms_example.key.pem b/t/certs/nginx_voms_example.key.pem similarity index 100% rename from t/nginx_voms_example.key.pem rename to t/certs/nginx_voms_example.key.pem diff --git a/t/voms_example.cert.pem b/t/certs/voms_example.cert.pem similarity index 100% rename from t/voms_example.cert.pem rename to t/certs/voms_example.cert.pem diff --git a/t/voms_example.key.pem b/t/certs/voms_example.key.pem similarity index 100% rename from t/voms_example.key.pem rename to t/certs/voms_example.key.pem diff --git a/t/expired_proxy.t b/t/expired_proxy.t new file mode 100644 index 0000000..e064f60 --- /dev/null +++ b/t/expired_proxy.t @@ -0,0 +1,32 @@ + +use Test::Nginx::Socket 'no_plan'; + +run_tests(); + +__DATA__ + +=== TEST 1: https with x509 client authentication, expired client certificate +--- main_config + env OPENSSL_ALLOW_PROXY_CERTS=1; +--- http_config + server { + error_log logs/error.log debug; + listen 8443 ssl; + ssl_certificate ../../certs/nginx_voms_example.cert.pem; + ssl_certificate_key ../../certs/nginx_voms_example.key.pem; + ssl_client_certificate ../../trust-anchors/igi-test-ca.pem; + ssl_verify_depth 10; + ssl_verify_client on; + } +--- config + location = / { + proxy_pass https://localhost:8443/; + proxy_ssl_certificate ../../certs/2.cert.pem; + proxy_ssl_certificate_key ../../certs/2.key.pem; + } +--- request +GET / +--- response_body_like: 400 Bad Request +--- error_code: 400 +--- error_log +certificate has expired diff --git a/t/servroot/conf/nginx.conf b/t/servroot/conf/nginx.conf new file mode 100644 index 0000000..bd4fda8 --- /dev/null +++ b/t/servroot/conf/nginx.conf @@ -0,0 +1,73 @@ +worker_processes 1; +daemon on; +master_process off; +error_log /home/build/ngx_http_voms_module/t/servroot/logs/error.log debug; +pid /home/build/ngx_http_voms_module/t/servroot/logs/nginx.pid; +env MOCKEAGAIN_VERBOSE; +env MOCKEAGAIN; +env MOCKEAGAIN_WRITE_TIMEOUT_PATTERN; +env LD_PRELOAD; +env LD_LIBRARY_PATH; +env DYLD_INSERT_LIBRARIES; +env DYLD_FORCE_FLAT_NAMESPACE; +#env LUA_PATH; +#env LUA_CPATH; + + env OPENSSL_ALLOW_PROXY_CERTS=1; + + +http { + access_log /home/build/ngx_http_voms_module/t/servroot/logs/access.log; + #access_log off; + + default_type text/plain; + keepalive_timeout 68; + + server { + error_log logs/error.log debug; + listen 8443 ssl; + ssl_certificate ../../certs/nginx_voms_example.cert.pem; + ssl_certificate_key ../../certs/nginx_voms_example.key.pem; + ssl_client_certificate ../../trust-anchors/igi-test-ca.pem; + ssl_verify_depth 10; + ssl_verify_client on; + } + + + server { + listen 1984; + server_name 'localhost'; + + client_max_body_size 30M; + #client_body_buffer_size 4k; + + # Begin preamble config... + + # End preamble config... + + # Begin test case config... + location = / { + proxy_pass https://localhost:8443/; + proxy_ssl_certificate ../../certs/2.cert.pem; + proxy_ssl_certificate_key ../../certs/2.key.pem; + } + + # End test case config. + + location / { + root /home/build/ngx_http_voms_module/t/servroot/html; + index index.html index.htm; + } + } +} + + + +#timer_resolution 100ms; + +events { + accept_mutex off; + + worker_connections 64; +} +env ASAN_OPTIONS; diff --git a/t/servroot/html/index.html b/t/servroot/html/index.html new file mode 100644 index 0000000..d99c1a6 --- /dev/null +++ b/t/servroot/html/index.html @@ -0,0 +1 @@ +<html><head><title>It works!</title></head><body>It works!</body></html> \ No newline at end of file diff --git a/t/servroot/logs/access.log b/t/servroot/logs/access.log new file mode 100644 index 0000000..8ab584c --- /dev/null +++ b/t/servroot/logs/access.log @@ -0,0 +1,2 @@ +127.0.0.1 - - [05/Mar/2018:13:23:08 +0000] "GET / HTTP/1.0" 400 237 "-" "-" +127.0.0.1 - - [05/Mar/2018:13:23:08 +0000] "GET / HTTP/1.1" 400 237 "-" "-" diff --git a/t/servroot/logs/error.log b/t/servroot/logs/error.log new file mode 100644 index 0000000..fcce3a0 --- /dev/null +++ b/t/servroot/logs/error.log @@ -0,0 +1,11 @@ +2018/03/05 13:23:08 [notice] 8663#8663: using the "epoll" event method +2018/03/05 13:23:08 [notice] 8663#8663: openresty/1.13.6.1 +2018/03/05 13:23:08 [notice] 8663#8663: built by gcc 7.2.1 20170829 (Red Hat 7.2.1-1) (GCC) +2018/03/05 13:23:08 [notice] 8663#8663: OS: Linux 4.13.0-26-generic +2018/03/05 13:23:08 [notice] 8663#8663: getrlimit(RLIMIT_NOFILE): 1048576:1048576 +2018/03/05 13:23:08 [info] 8664#8664: *3 client SSL certificate verify error: (10:certificate has expired) while reading client request headers, client: 127.0.0.1, server: , request: "GET / HTTP/1.0", host: "localhost:8443" +2018/03/05 13:23:08 [notice] 8664#8664: signal 3 (SIGQUIT) received from 8650, shutting down +2018/03/05 13:23:08 [info] 8664#8664: epoll_wait() failed (4: Interrupted system call) +2018/03/05 13:23:08 [notice] 8664#8664: signal 15 (SIGTERM) received from 8650, exiting +2018/03/05 13:23:08 [notice] 8664#8664: exiting +2018/03/05 13:23:08 [notice] 8664#8664: exit -- GitLab From 5e2f0ebbe85fb3c60686951436a9fa59a91e760c Mon Sep 17 00:00:00 2001 From: nterranova <nicholas.terranova@cnaf.infn.it> Date: Mon, 5 Mar 2018 16:50:33 +0100 Subject: [PATCH 03/13] Expired AC and Empty voms attribute tests --- t/empty_voms_proxy.t | 38 ++++++++++++++++++++ t/expired_ac_proxy.t | 38 ++++++++++++++++++++ t/expired_proxy.t | 9 +++-- t/servroot/conf/nginx.conf | 73 -------------------------------------- t/servroot/html/index.html | 1 - t/servroot/logs/access.log | 2 -- t/servroot/logs/error.log | 11 ------ 7 files changed, 83 insertions(+), 89 deletions(-) create mode 100644 t/empty_voms_proxy.t create mode 100644 t/expired_ac_proxy.t delete mode 100644 t/servroot/conf/nginx.conf delete mode 100644 t/servroot/html/index.html delete mode 100644 t/servroot/logs/access.log delete mode 100644 t/servroot/logs/error.log diff --git a/t/empty_voms_proxy.t b/t/empty_voms_proxy.t new file mode 100644 index 0000000..84eb5c9 --- /dev/null +++ b/t/empty_voms_proxy.t @@ -0,0 +1,38 @@ + +use Test::Nginx::Socket 'no_plan'; + +run_tests(); + +__DATA__ + +=== TEST 1: https with x509 client authentication, valid proxy certificate no voms attributes +--- main_config + env OPENSSL_ALLOW_PROXY_CERTS=1; + env X509_VOMS_DIR=t/vomsdir; +--- http_config + server { + error_log logs/error.log debug; + listen 8443 ssl; + ssl_certificate ../../certs/nginx_voms_example.cert.pem; + ssl_certificate_key ../../certs/nginx_voms_example.key.pem; + ssl_client_certificate ../../trust-anchors/igi-test-ca.pem; + ssl_verify_depth 10; + ssl_verify_client on; + location = / { + default_type text/plain; + echo $voms_fqans $voms_user; + } + } +--- config + location = / { + proxy_pass https://localhost:8443/; + proxy_ssl_certificate ../../certs/0.cert.pem; + proxy_ssl_certificate_key ../../certs/0.key.pem; + } +--- request +GET / +--- response_body_like eval +qr/\n/ +--- error_log +VOMS extension not found +--- error_code: 200 diff --git a/t/expired_ac_proxy.t b/t/expired_ac_proxy.t new file mode 100644 index 0000000..88bb867 --- /dev/null +++ b/t/expired_ac_proxy.t @@ -0,0 +1,38 @@ + +use Test::Nginx::Socket 'no_plan'; + +run_tests(); + +__DATA__ + +=== TEST 1: https with x509 client authentication, valid proxy certificate expired voms attributes +--- main_config + env OPENSSL_ALLOW_PROXY_CERTS=1; + env X509_VOMS_DIR=t/vomsdir; +--- http_config + server { + error_log logs/error.log debug; + listen 8443 ssl; + ssl_certificate ../../certs/nginx_voms_example.cert.pem; + ssl_certificate_key ../../certs/nginx_voms_example.key.pem; + ssl_client_certificate ../../trust-anchors/igi-test-ca.pem; + ssl_verify_depth 10; + ssl_verify_client on; + location = / { + default_type text/plain; + echo $voms_fqans $voms_user; + } + } +--- config + location = / { + proxy_pass https://localhost:8443/; + proxy_ssl_certificate ../../certs/1.cert.pem; + proxy_ssl_certificate_key ../../certs/1.key.pem; + } +--- request +GET / +--- response_body_like eval +qr/\n/ +--- error_log +AC not valid anymore +--- error_code: 200 diff --git a/t/expired_proxy.t b/t/expired_proxy.t index e064f60..188502b 100644 --- a/t/expired_proxy.t +++ b/t/expired_proxy.t @@ -17,6 +17,10 @@ __DATA__ ssl_client_certificate ../../trust-anchors/igi-test-ca.pem; ssl_verify_depth 10; ssl_verify_client on; + location = / { + default_type text/plain; + echo $ssl_client_s_dn; + } } --- config location = / { @@ -26,7 +30,8 @@ __DATA__ } --- request GET / ---- response_body_like: 400 Bad Request ---- error_code: 400 +--- response_body_like eval +qr/\n/ --- error_log certificate has expired +--- error_code: 400 diff --git a/t/servroot/conf/nginx.conf b/t/servroot/conf/nginx.conf deleted file mode 100644 index bd4fda8..0000000 --- a/t/servroot/conf/nginx.conf +++ /dev/null @@ -1,73 +0,0 @@ -worker_processes 1; -daemon on; -master_process off; -error_log /home/build/ngx_http_voms_module/t/servroot/logs/error.log debug; -pid /home/build/ngx_http_voms_module/t/servroot/logs/nginx.pid; -env MOCKEAGAIN_VERBOSE; -env MOCKEAGAIN; -env MOCKEAGAIN_WRITE_TIMEOUT_PATTERN; -env LD_PRELOAD; -env LD_LIBRARY_PATH; -env DYLD_INSERT_LIBRARIES; -env DYLD_FORCE_FLAT_NAMESPACE; -#env LUA_PATH; -#env LUA_CPATH; - - env OPENSSL_ALLOW_PROXY_CERTS=1; - - -http { - access_log /home/build/ngx_http_voms_module/t/servroot/logs/access.log; - #access_log off; - - default_type text/plain; - keepalive_timeout 68; - - server { - error_log logs/error.log debug; - listen 8443 ssl; - ssl_certificate ../../certs/nginx_voms_example.cert.pem; - ssl_certificate_key ../../certs/nginx_voms_example.key.pem; - ssl_client_certificate ../../trust-anchors/igi-test-ca.pem; - ssl_verify_depth 10; - ssl_verify_client on; - } - - - server { - listen 1984; - server_name 'localhost'; - - client_max_body_size 30M; - #client_body_buffer_size 4k; - - # Begin preamble config... - - # End preamble config... - - # Begin test case config... - location = / { - proxy_pass https://localhost:8443/; - proxy_ssl_certificate ../../certs/2.cert.pem; - proxy_ssl_certificate_key ../../certs/2.key.pem; - } - - # End test case config. - - location / { - root /home/build/ngx_http_voms_module/t/servroot/html; - index index.html index.htm; - } - } -} - - - -#timer_resolution 100ms; - -events { - accept_mutex off; - - worker_connections 64; -} -env ASAN_OPTIONS; diff --git a/t/servroot/html/index.html b/t/servroot/html/index.html deleted file mode 100644 index d99c1a6..0000000 --- a/t/servroot/html/index.html +++ /dev/null @@ -1 +0,0 @@ -<html><head><title>It works!</title></head><body>It works!</body></html> \ No newline at end of file diff --git a/t/servroot/logs/access.log b/t/servroot/logs/access.log deleted file mode 100644 index 8ab584c..0000000 --- a/t/servroot/logs/access.log +++ /dev/null @@ -1,2 +0,0 @@ -127.0.0.1 - - [05/Mar/2018:13:23:08 +0000] "GET / HTTP/1.0" 400 237 "-" "-" -127.0.0.1 - - [05/Mar/2018:13:23:08 +0000] "GET / HTTP/1.1" 400 237 "-" "-" diff --git a/t/servroot/logs/error.log b/t/servroot/logs/error.log deleted file mode 100644 index fcce3a0..0000000 --- a/t/servroot/logs/error.log +++ /dev/null @@ -1,11 +0,0 @@ -2018/03/05 13:23:08 [notice] 8663#8663: using the "epoll" event method -2018/03/05 13:23:08 [notice] 8663#8663: openresty/1.13.6.1 -2018/03/05 13:23:08 [notice] 8663#8663: built by gcc 7.2.1 20170829 (Red Hat 7.2.1-1) (GCC) -2018/03/05 13:23:08 [notice] 8663#8663: OS: Linux 4.13.0-26-generic -2018/03/05 13:23:08 [notice] 8663#8663: getrlimit(RLIMIT_NOFILE): 1048576:1048576 -2018/03/05 13:23:08 [info] 8664#8664: *3 client SSL certificate verify error: (10:certificate has expired) while reading client request headers, client: 127.0.0.1, server: , request: "GET / HTTP/1.0", host: "localhost:8443" -2018/03/05 13:23:08 [notice] 8664#8664: signal 3 (SIGQUIT) received from 8650, shutting down -2018/03/05 13:23:08 [info] 8664#8664: epoll_wait() failed (4: Interrupted system call) -2018/03/05 13:23:08 [notice] 8664#8664: signal 15 (SIGTERM) received from 8650, exiting -2018/03/05 13:23:08 [notice] 8664#8664: exiting -2018/03/05 13:23:08 [notice] 8664#8664: exit -- GitLab From 80cb0f80e0d255f05f7cdc4cafc1499529195287 Mon Sep 17 00:00:00 2001 From: nterranova <nicholas.terranova@cnaf.infn.it> Date: Mon, 5 Mar 2018 18:06:19 +0100 Subject: [PATCH 04/13] Readme --- t/README.md | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 66 insertions(+), 1 deletion(-) diff --git a/t/README.md b/t/README.md index 8a49daa..084e7ec 100644 --- a/t/README.md +++ b/t/README.md @@ -1,5 +1,70 @@ -# ngx_http_voms_module testing +# ngx\_http\_voms\_module Testing ## Description +Setup and files to test the *ngx\_http\_voms\_module* are contained in the **t** folder. The [Openresty data-driven testsuite](https://openresty.gitbooks.io/programming-openresty/content/testing/) has been adopted for testing. +### Voms proxy certificates + +Proxy certificates are in the **certs** folder: + + * 0.pem: long-lived proxy, no AC; + * 1.pem: long-lived proxy, expired AC; + * 2.pem: expired proxy certificate. + +Proxy certificates are generated using [VOMS client 3.3.0](http://italiangrid.github.io/voms/documentation/voms-clients-guide/3.0.3/). + +The following options are evoked: + + VOMS_CLIENTS_JAVA_OPTIONS="-Dvoms.fake.vo=test.vo -Dvoms.fake=true -Dvoms.fake.aaCert=<path_to_cert>/voms_example.cert.pem -Dvoms.fake.aaKey=<path_to_key>/voms_example.key.pem" voms-proxy-init3 -voms test.vo -cert <path_to_test0>/test0.p12 --valid <validity> + +*voms\_example.cert.pem* and *voms\_example.ket.pem* can be found in the **certs** folder. + +To perform correctly the VOMS server connection, an *.lsc or *.pem file is needed in **/etc/grid-security/vomsdir**, see [VOMS client 3.3.0 User Guide](http://italiangrid.github.io/voms/documentation/voms-clients-guide/3.0.3/) for further details. An example of *voms.example.lsc* can be found in **vomsdir/test.vo**. + +The *vomses* configuration is not actually needed for *voms-proxy-fake* evocations. + +### Test Description + + * *empty\_voms\_proxy.t*: + + **Input ->** 0.pem certificate and key. + + **Expected output ->** 200-error-code, empty voms variables. + + **Error log ->** "VOMS extension not found". + + * *expired\_ac\_proxy.t*: + + **Input ->** 1.pem certificate and key. + + **Expected output ->** 200-error-code, empty voms variables. + + **Error log ->** "AC not valid anymore". + + * *expired\_proxy.t*: + + **Input ->** 2.pem certificate and key. + + **Expected output ->** 400-error-code, empty nginx variables. + + ** Error log ->** "certificate has expired". + +Trust-anchors (igi-test-ca.pem) are contained in the **trust-anchors** folder. Nginx server certificate and key (nginx\_voms\_example.cert.pem and nginx\_voms\_example\_key.pem) are in the **certs** folder. + +### Running Tests + +To run the tests made available in the **t** folder just type + + prove -v t + + +Using the docker image provided to exploit Openresty in the Storm2 project: + + docker run --rm -it -v /path/to/ngx_http_voms_module:/home/build/ngx_http_voms_module storm2/ngx-voms-build + cd openresty-1.x.y + ./configure ${resty_config_options} --add-module=../ngx_http_voms_module + make && make install + cd .. + sudo chown build.build -R t + prove -v t -- GitLab From c0e6b7c2d05fa2a37f70544c610354380b59af70 Mon Sep 17 00:00:00 2001 From: nterranova <nicholas.terranova@cnaf.infn.it> Date: Tue, 6 Mar 2018 15:15:09 +0100 Subject: [PATCH 05/13] README.md fixed --- t/README.md | 34 +++------------------------------- 1 file changed, 3 insertions(+), 31 deletions(-) diff --git a/t/README.md b/t/README.md index 084e7ec..a223aab 100644 --- a/t/README.md +++ b/t/README.md @@ -4,7 +4,7 @@ Setup and files to test the *ngx\_http\_voms\_module* are contained in the **t** folder. The [Openresty data-driven testsuite](https://openresty.gitbooks.io/programming-openresty/content/testing/) has been adopted for testing. -### Voms proxy certificates +### Test fixture setup Proxy certificates are in the **certs** folder: @@ -14,42 +14,14 @@ Proxy certificates are in the **certs** folder: Proxy certificates are generated using [VOMS client 3.3.0](http://italiangrid.github.io/voms/documentation/voms-clients-guide/3.0.3/). -The following options are evoked: +The following options are used: VOMS_CLIENTS_JAVA_OPTIONS="-Dvoms.fake.vo=test.vo -Dvoms.fake=true -Dvoms.fake.aaCert=<path_to_cert>/voms_example.cert.pem -Dvoms.fake.aaKey=<path_to_key>/voms_example.key.pem" voms-proxy-init3 -voms test.vo -cert <path_to_test0>/test0.p12 --valid <validity> *voms\_example.cert.pem* and *voms\_example.ket.pem* can be found in the **certs** folder. -To perform correctly the VOMS server connection, an *.lsc or *.pem file is needed in **/etc/grid-security/vomsdir**, see [VOMS client 3.3.0 User Guide](http://italiangrid.github.io/voms/documentation/voms-clients-guide/3.0.3/) for further details. An example of *voms.example.lsc* can be found in **vomsdir/test.vo**. +To perform correctly the VOMS AC validation, a \*.lsc or \*.pem file is needed in **/etc/grid-security/vomsdir**, see [VOMS client 3.3.0 User Guide](http://italiangrid.github.io/voms/documentation/voms-clients-guide/3.0.3/) for further details. An example of *voms.example.lsc* can be found in **vomsdir/test.vo**. -The *vomses* configuration is not actually needed for *voms-proxy-fake* evocations. - -### Test Description - - * *empty\_voms\_proxy.t*: - - **Input ->** 0.pem certificate and key. - - **Expected output ->** 200-error-code, empty voms variables. - - **Error log ->** "VOMS extension not found". - - * *expired\_ac\_proxy.t*: - - **Input ->** 1.pem certificate and key. - - **Expected output ->** 200-error-code, empty voms variables. - - **Error log ->** "AC not valid anymore". - - * *expired\_proxy.t*: - - **Input ->** 2.pem certificate and key. - - **Expected output ->** 400-error-code, empty nginx variables. - - ** Error log ->** "certificate has expired". - Trust-anchors (igi-test-ca.pem) are contained in the **trust-anchors** folder. Nginx server certificate and key (nginx\_voms\_example.cert.pem and nginx\_voms\_example\_key.pem) are in the **certs** folder. ### Running Tests -- GitLab From 4db9d5bcec665914c25019caeb3bad1f6b721417 Mon Sep 17 00:00:00 2001 From: nterranova <nicholas.terranova@cnaf.infn.it> Date: Tue, 6 Mar 2018 18:28:47 +0100 Subject: [PATCH 06/13] README.md, empty_voms_proxy.t and expired_ac_proxy.t fixed --- README.md | 4 ++++ t/README.md | 22 +++++++++++----------- t/empty_voms_proxy.t | 7 ++++--- t/expired_ac_proxy.t | 7 ++++--- 4 files changed, 23 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index ec7990d..16e58bd 100644 --- a/README.md +++ b/README.md @@ -29,3 +29,7 @@ A comma-separated list of _Fully Qualified Attribute Names_ ### voms_user + +## Testing + +Setup and files to test the *ngx\_http\_voms\_module* are contained in the `t` folder. diff --git a/t/README.md b/t/README.md index a223aab..ee257f6 100644 --- a/t/README.md +++ b/t/README.md @@ -2,33 +2,33 @@ ## Description -Setup and files to test the *ngx\_http\_voms\_module* are contained in the **t** folder. The [Openresty data-driven testsuite](https://openresty.gitbooks.io/programming-openresty/content/testing/) has been adopted for testing. +Setup and files to test the *ngx\_http\_voms\_module* are contained in the `t` folder. The [Openresty data-driven testsuite](https://openresty.gitbooks.io/programming-openresty/content/testing/) has been adopted for testing. ### Test fixture setup -Proxy certificates are in the **certs** folder: +Proxy certificates are in the `certs` folder: - * 0.pem: long-lived proxy, no AC; - * 1.pem: long-lived proxy, expired AC; + * 0.pem: long-lived proxy certificate, without Attribute Certificate (AC); + * 1.pem: long-lived proxy certificate, with an expired AC; * 2.pem: expired proxy certificate. Proxy certificates are generated using [VOMS client 3.3.0](http://italiangrid.github.io/voms/documentation/voms-clients-guide/3.0.3/). -The following options are used: +The following command is used: VOMS_CLIENTS_JAVA_OPTIONS="-Dvoms.fake.vo=test.vo -Dvoms.fake=true -Dvoms.fake.aaCert=<path_to_cert>/voms_example.cert.pem -Dvoms.fake.aaKey=<path_to_key>/voms_example.key.pem" voms-proxy-init3 -voms test.vo -cert <path_to_test0>/test0.p12 --valid <validity> -*voms\_example.cert.pem* and *voms\_example.ket.pem* can be found in the **certs** folder. +*voms\_example.cert.pem* and *voms\_example.ket.pem* can be found in the `certs` folder. -To perform correctly the VOMS AC validation, a \*.lsc or \*.pem file is needed in **/etc/grid-security/vomsdir**, see [VOMS client 3.3.0 User Guide](http://italiangrid.github.io/voms/documentation/voms-clients-guide/3.0.3/) for further details. An example of *voms.example.lsc* can be found in **vomsdir/test.vo**. +To perform correctly the VOMS AC validation, a \*.lsc or \*.pem file is needed in `/etc/grid-security/vomsdir`, see [VOMS client 3.3.0 User Guide](http://italiangrid.github.io/voms/documentation/voms-clients-guide/3.0.3/) for further details. An example of *voms.example.lsc* can be found in `vomsdir/test.vo`. -Trust-anchors (igi-test-ca.pem) are contained in the **trust-anchors** folder. Nginx server certificate and key (nginx\_voms\_example.cert.pem and nginx\_voms\_example\_key.pem) are in the **certs** folder. +Trust-anchors (igi-test-ca.pem) are contained in the `trust-anchors` folder. Nginx server certificate and key (nginx\_voms\_example.cert.pem and nginx\_voms\_example\_key.pem) are in the `certs` folder. ### Running Tests -To run the tests made available in the **t** folder just type +To run the tests made available in the `t` folder just type - prove -v t + prove -v Using the docker image provided to exploit Openresty in the Storm2 project: @@ -39,4 +39,4 @@ Using the docker image provided to exploit Openresty in the Storm2 project: make && make install cd .. sudo chown build.build -R t - prove -v t + prove -v diff --git a/t/empty_voms_proxy.t b/t/empty_voms_proxy.t index 84eb5c9..c08fd21 100644 --- a/t/empty_voms_proxy.t +++ b/t/empty_voms_proxy.t @@ -5,7 +5,7 @@ run_tests(); __DATA__ -=== TEST 1: https with x509 client authentication, valid proxy certificate no voms attributes +=== TEST 1: https with x509 client authentication, valid proxy certificate with no VOMS attributes --- main_config env OPENSSL_ALLOW_PROXY_CERTS=1; env X509_VOMS_DIR=t/vomsdir; @@ -20,7 +20,8 @@ __DATA__ ssl_verify_client on; location = / { default_type text/plain; - echo $voms_fqans $voms_user; + echo $voms_fqans; + echo $voms_user; } } --- config @@ -32,7 +33,7 @@ __DATA__ --- request GET / --- response_body_like eval -qr/\n/ +qr/\n\n/ --- error_log VOMS extension not found --- error_code: 200 diff --git a/t/expired_ac_proxy.t b/t/expired_ac_proxy.t index 88bb867..cad7d17 100644 --- a/t/expired_ac_proxy.t +++ b/t/expired_ac_proxy.t @@ -5,7 +5,7 @@ run_tests(); __DATA__ -=== TEST 1: https with x509 client authentication, valid proxy certificate expired voms attributes +=== TEST 1: https with x509 client authentication, valid proxy certificate with expired VOMS attributes --- main_config env OPENSSL_ALLOW_PROXY_CERTS=1; env X509_VOMS_DIR=t/vomsdir; @@ -20,7 +20,8 @@ __DATA__ ssl_verify_client on; location = / { default_type text/plain; - echo $voms_fqans $voms_user; + echo $voms_fqans; + echo $voms_user; } } --- config @@ -32,7 +33,7 @@ __DATA__ --- request GET / --- response_body_like eval -qr/\n/ +qr/\n\n/ --- error_log AC not valid anymore --- error_code: 200 -- GitLab From f34df2da97374297980f4a5417a27665b511cbfa Mon Sep 17 00:00:00 2001 From: nterranova <nicholas.terranova@cnaf.infn.it> Date: Thu, 8 Mar 2018 12:05:20 +0100 Subject: [PATCH 07/13] README fixed --- t/README.md | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/t/README.md b/t/README.md index ee257f6..63f2dfd 100644 --- a/t/README.md +++ b/t/README.md @@ -33,10 +33,8 @@ To run the tests made available in the `t` folder just type Using the docker image provided to exploit Openresty in the Storm2 project: - docker run --rm -it -v /path/to/ngx_http_voms_module:/home/build/ngx_http_voms_module storm2/ngx-voms-build - cd openresty-1.x.y - ./configure ${resty_config_options} --add-module=../ngx_http_voms_module - make && make install - cd .. - sudo chown build.build -R t - prove -v + cp -r t /tmp + cd /tmp + prove -v + +A copy of the `t` folder is needed since the `prove` command creates a directory `servroot` in `t`. -- GitLab From f9acafedc47fc5277904f26de25b98e6b80d1e44 Mon Sep 17 00:00:00 2001 From: nterranova <nicholas.terranova@cnaf.infn.it> Date: Thu, 8 Mar 2018 12:25:02 +0100 Subject: [PATCH 08/13] README formatting issue solved --- t/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/t/README.md b/t/README.md index 63f2dfd..a1398d1 100644 --- a/t/README.md +++ b/t/README.md @@ -33,8 +33,8 @@ To run the tests made available in the `t` folder just type Using the docker image provided to exploit Openresty in the Storm2 project: - cp -r t /tmp - cd /tmp - prove -v + cp -r t /tmp + cd /tmp + prove -v A copy of the `t` folder is needed since the `prove` command creates a directory `servroot` in `t`. -- GitLab From 5aa5db3ec46e093320d95b148f1669842ae282b7 Mon Sep 17 00:00:00 2001 From: Francesco Giacomini <giaco at cnaf dot infn dot it> Date: Sat, 10 Mar 2018 18:00:44 +0100 Subject: [PATCH 09/13] fix test --- t/expired_ac_proxy.t | 5 +++-- t/trust-anchors/10b10516.0 | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) create mode 120000 t/trust-anchors/10b10516.0 diff --git a/t/expired_ac_proxy.t b/t/expired_ac_proxy.t index cad7d17..95d474f 100644 --- a/t/expired_ac_proxy.t +++ b/t/expired_ac_proxy.t @@ -7,8 +7,9 @@ __DATA__ === TEST 1: https with x509 client authentication, valid proxy certificate with expired VOMS attributes --- main_config - env OPENSSL_ALLOW_PROXY_CERTS=1; - env X509_VOMS_DIR=t/vomsdir; + env OPENSSL_ALLOW_PROXY_CERTS=1; + env X509_VOMS_DIR=/home/build/ngx_http_voms_module/t/vomsdir; + env X509_CERT_DIR=/home/build/ngx_http_voms_module/t/trust-anchors; --- http_config server { error_log logs/error.log debug; diff --git a/t/trust-anchors/10b10516.0 b/t/trust-anchors/10b10516.0 new file mode 120000 index 0000000..b8991ae --- /dev/null +++ b/t/trust-anchors/10b10516.0 @@ -0,0 +1 @@ +igi-test-ca.pem \ No newline at end of file -- GitLab From 966825b67fba759129e874af0306d01313708dca Mon Sep 17 00:00:00 2001 From: Francesco Giacomini <giaco at cnaf dot infn dot it> Date: Mon, 12 Mar 2018 12:04:56 +0100 Subject: [PATCH 10/13] use relative paths for X509_VOMS_DIR and X509_CERT_DIR --- t/expired_ac_proxy.t | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/t/expired_ac_proxy.t b/t/expired_ac_proxy.t index 95d474f..2b07a96 100644 --- a/t/expired_ac_proxy.t +++ b/t/expired_ac_proxy.t @@ -8,8 +8,8 @@ __DATA__ === TEST 1: https with x509 client authentication, valid proxy certificate with expired VOMS attributes --- main_config env OPENSSL_ALLOW_PROXY_CERTS=1; - env X509_VOMS_DIR=/home/build/ngx_http_voms_module/t/vomsdir; - env X509_CERT_DIR=/home/build/ngx_http_voms_module/t/trust-anchors; + env X509_VOMS_DIR=t/vomsdir; + env X509_CERT_DIR=t/trust-anchors; --- http_config server { error_log logs/error.log debug; -- GitLab From 10df12f554cbeb70cd9dda433b9da2e3381e3d83 Mon Sep 17 00:00:00 2001 From: nterranova <nicholas.terranova@cnaf.infn.it> Date: Mon, 12 Mar 2018 12:32:34 +0100 Subject: [PATCH 11/13] fixed README.md, adding links --- t/README.md | 21 +++------------------ t/certs/README.md | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 18 deletions(-) create mode 100644 t/certs/README.md diff --git a/t/README.md b/t/README.md index a1398d1..2d4ef93 100644 --- a/t/README.md +++ b/t/README.md @@ -6,23 +6,9 @@ Setup and files to test the *ngx\_http\_voms\_module* are contained in the `t` f ### Test fixture setup -Proxy certificates are in the `certs` folder: +Proxy certificates are in the `certs` folder (see [README.md](certs/README.md) for further details). Trust-anchors (e.g. igi-test-ca.pem) are contained in the `trust-anchors` folder. Nginx server certificate and key are nginx\_voms\_example.cert.pem and nginx\_voms\_example\_key.pem, respectively, and they are in the `certs` folder. - * 0.pem: long-lived proxy certificate, without Attribute Certificate (AC); - * 1.pem: long-lived proxy certificate, with an expired AC; - * 2.pem: expired proxy certificate. - -Proxy certificates are generated using [VOMS client 3.3.0](http://italiangrid.github.io/voms/documentation/voms-clients-guide/3.0.3/). - -The following command is used: - - VOMS_CLIENTS_JAVA_OPTIONS="-Dvoms.fake.vo=test.vo -Dvoms.fake=true -Dvoms.fake.aaCert=<path_to_cert>/voms_example.cert.pem -Dvoms.fake.aaKey=<path_to_key>/voms_example.key.pem" voms-proxy-init3 -voms test.vo -cert <path_to_test0>/test0.p12 --valid <validity> - -*voms\_example.cert.pem* and *voms\_example.ket.pem* can be found in the `certs` folder. - -To perform correctly the VOMS AC validation, a \*.lsc or \*.pem file is needed in `/etc/grid-security/vomsdir`, see [VOMS client 3.3.0 User Guide](http://italiangrid.github.io/voms/documentation/voms-clients-guide/3.0.3/) for further details. An example of *voms.example.lsc* can be found in `vomsdir/test.vo`. - -Trust-anchors (igi-test-ca.pem) are contained in the `trust-anchors` folder. Nginx server certificate and key (nginx\_voms\_example.cert.pem and nginx\_voms\_example\_key.pem) are in the `certs` folder. +To perform correctly the VOMS AC validation, a \*.lsc or \*.pem file is needed, see [VOMS client 3.3.0 User Guide](http://italiangrid.github.io/voms/documentation/voms-clients-guide/3.0.3/) for further details. The *voms.example.lsc* can be found in `vomsdir/test.vo`. ### Running Tests @@ -30,8 +16,7 @@ To run the tests made available in the `t` folder just type prove -v - -Using the docker image provided to exploit Openresty in the Storm2 project: +Using the docker image provided to exploit Openresty in the Storm2 project (see [README.md](../README.md) for further details): cp -r t /tmp cd /tmp diff --git a/t/certs/README.md b/t/certs/README.md new file mode 100644 index 0000000..44bc200 --- /dev/null +++ b/t/certs/README.md @@ -0,0 +1,18 @@ +# Certificates for ngx\_http\_voms\_module Testing + +Proxy certificates are generated using [VOMS client 3.3.0](http://italiangrid.github.io/voms/documentation/voms-clients-guide/3.0.3/): + + * 0.pem: long-lived proxy certificate, without Attribute Certificate (AC); + * 1.pem: long-lived proxy certificate, with an expired AC; + * 2.pem: expired proxy certificate. + +To obtain such certificates the following command is used: + + VOMS_CLIENTS_JAVA_OPTIONS="-Dvoms.fake.vo=test.vo -Dvoms.fake=true -Dvoms.fake.aaCert=<path_to_cert>/voms_example.cert.pem -Dvoms.fake.aaKey=<path_to_key>/voms_example.key.pem" voms-proxy-init3 -voms test.vo -cert <path_to_test0>/test0.p12 --valid <validity> + +*voms\_example.cert.pem* and *voms\_example.ket.pem* can be found in the `certs` folder. + +To perform correctly the VOMS AC validation, a \*.lsc or \*.pem file is needed in `/etc/grid-security/vomsdir`, see [VOMS client 3.3.0 User Guide](http://italiangrid.github.io/voms/documentation/voms-clients-guide/3.0.3/) for further details. An example of *voms.example.lsc* can be found in `vomsdir/test.vo`. + +Nginx server certificate and key are nginx\_voms\_example.cert.pem and nginx\_voms\_example\_key.pem. + -- GitLab From 2691909dec94d5b3980059ae27c8743c4422b130 Mon Sep 17 00:00:00 2001 From: nterranova <nicholas.terranova@cnaf.infn.it> Date: Mon, 12 Mar 2018 12:47:00 +0100 Subject: [PATCH 12/13] added line to run prove to README.md --- t/README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/t/README.md b/t/README.md index 2d4ef93..9cccd8c 100644 --- a/t/README.md +++ b/t/README.md @@ -6,16 +6,20 @@ Setup and files to test the *ngx\_http\_voms\_module* are contained in the `t` f ### Test fixture setup -Proxy certificates are in the `certs` folder (see [README.md](certs/README.md) for further details). Trust-anchors (e.g. igi-test-ca.pem) are contained in the `trust-anchors` folder. Nginx server certificate and key are nginx\_voms\_example.cert.pem and nginx\_voms\_example\_key.pem, respectively, and they are in the `certs` folder. +Proxy certificates are in the `certs` folder (see [README.md](certs/README.md) for further details), while trust-anchors (e.g. igi-test-ca.pem) are contained in `trust-anchors`. + +Nginx server certificate and key are nginx\_voms\_example.cert.pem and nginx\_voms\_example\_key.pem, respectively, and they are contained in `certs`. To perform correctly the VOMS AC validation, a \*.lsc or \*.pem file is needed, see [VOMS client 3.3.0 User Guide](http://italiangrid.github.io/voms/documentation/voms-clients-guide/3.0.3/) for further details. The *voms.example.lsc* can be found in `vomsdir/test.vo`. ### Running Tests -To run the tests made available in the `t` folder just type +To run the tests made available in `t` just type prove -v +from `t`' s parent directory. + Using the docker image provided to exploit Openresty in the Storm2 project (see [README.md](../README.md) for further details): cp -r t /tmp -- GitLab From 97a2aa12fa109dfa3e1d98341884b6491f7a671e Mon Sep 17 00:00:00 2001 From: Andrea Ceccanti <andrea.ceccanti@gmail.com> Date: Mon, 12 Mar 2018 15:22:12 +0100 Subject: [PATCH 13/13] Imported test0 certificate --- t/certs/README.md | 3 +++ t/certs/test0.cert.pem | 22 ++++++++++++++++++++++ t/certs/test0.key.pem | 30 ++++++++++++++++++++++++++++++ t/certs/test0.p12 | Bin 0 -> 2533 bytes 4 files changed, 55 insertions(+) create mode 100644 t/certs/README.md create mode 100644 t/certs/test0.cert.pem create mode 100644 t/certs/test0.key.pem create mode 100644 t/certs/test0.p12 diff --git a/t/certs/README.md b/t/certs/README.md new file mode 100644 index 0000000..36f6f3c --- /dev/null +++ b/t/certs/README.md @@ -0,0 +1,3 @@ +TBD: + +Add docs on certs here diff --git a/t/certs/test0.cert.pem b/t/certs/test0.cert.pem new file mode 100644 index 0000000..3cd77ed --- /dev/null +++ b/t/certs/test0.cert.pem @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIDnjCCAoagAwIBAgIBCTANBgkqhkiG9w0BAQUFADAtMQswCQYDVQQGEwJJVDEM +MAoGA1UECgwDSUdJMRAwDgYDVQQDDAdUZXN0IENBMB4XDTEyMDkyNjE1MzkzNFoX +DTIyMDkyNDE1MzkzNFowKzELMAkGA1UEBhMCSVQxDDAKBgNVBAoTA0lHSTEOMAwG +A1UEAxMFdGVzdDAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDKxtrw +hoZ27SxxISjlRqWmBWB6U+N/xW2kS1uUfrQRav6auVtmtEW45J44VTi3WW6Y113R +BwmS6oW+3lzyBBZVPqnhV9/VkTxLp83gGVVvHATgGgkjeTxIsOE+TkPKAoZJ/QFc +CfPh3WdZ3ANI14WYkAM9VXsSbh2okCsWGa4o6pzt3Pt1zKkyO4PW0cBkletDImJK +2vufuDVNm7Iz/y3/8pY8p3MoiwbF/PdSba7XQAxBWUJMoaleh8xy8HSROn7tF2al +xoDLH4QWhp6UDn2rvOWseBqUMPXFjsUi1/rkw1oHAjMroTk5lL15GI0LGd5dTVop +kKXFbTTYxSkPz1MLAgMBAAGjgcowgccwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQU +fLdB5+jO9LyWN2/VCNYgMa0jvHEwDgYDVR0PAQH/BAQDAgXgMD4GA1UdJQQ3MDUG +CCsGAQUFBwMBBggrBgEFBQcDAgYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBBggrBgEF +BQcDBDAfBgNVHSMEGDAWgBSRdzZ7LrRp8yfqt/YIi0ojohFJxjAnBgNVHREEIDAe +gRxhbmRyZWEuY2VjY2FudGlAY25hZi5pbmZuLml0MA0GCSqGSIb3DQEBBQUAA4IB +AQANYtWXetheSeVpCfnId9TkKyKTAp8RahNZl4XFrWWn2S9We7ACK/G7u1DebJYx +d8POo8ClscoXyTO2BzHHZLxauEKIzUv7g2GehI+SckfZdjFyRXjD0+wMGwzX7MDu +SL3CG2aWsYpkBnj6BMlr0P3kZEMqV5t2+2Tj0+aXppBPVwzJwRhnrSJiO5WIZAZf +49YhMn61sQIrepvhrKEUR4XVorH2Bj8ek1/iLlgcmFMBOds+PrehSRR8Gn0IjlEg +C68EY6KPE+FKySuS7Ur7lTAjNdddfdAgKV6hJyST6/dx8ymIkb8nxCPnxCcT2I2N +vDxcPMc/wmnMa+smNal0sJ6m +-----END CERTIFICATE----- diff --git a/t/certs/test0.key.pem b/t/certs/test0.key.pem new file mode 100644 index 0000000..3237513 --- /dev/null +++ b/t/certs/test0.key.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIqbOgT0owFy8CAggA +MBQGCCqGSIb3DQMHBAi0pGFZzZYROgSCBMhwhhXisB/ishN/r4FGku1DY/CNq/ZF +XhH1YvEoZRT4GA4HLa6hrh7yPdYyH0hhvMKuLGaH4Df+YUOXZq5c0mHgBjk9YkCp +PHhZHUwBFrryF/RV5P7u3zXqce/huQJ5yq2TLRv3NS8WiwavWmcbYSgyCFwSOHf4 +Vxz21ggY+oNLa32X0dDxDJ4TlGSK0vSQzIjCjOpzxkewJ6LpA1c3LqTu155y/cdM +mFgd0XN3hUh+j6yQ9JMrNAKOrP0mPmphvEqXoS6l0RV+8x7PzQXvjfmULPsMxEhm +P+D8EBap8AhnvgAlEPwHTxC5uBqh+bdE7NnMsaetivWZ1wNSkLXuh+CKHfAtqDea +zWn1mCQG12H4SGrONoV95yqC6Z1SoMCrll0I/M7b7VUwas63Mp+abXFPv1X6GLAr +ONSua6wAs3GxDvxEtPJmL3nVvWoVvr/jSQ9i2k5y7RoAr2r17qF7fcossq9DVST2 +q1a3sd/0gzIyfVdtxU+akOlbW/+vYl2Dc18SmwIGpi5It6eCozUHOxhFFFHFczyY +RmjwohaHzGbuhwqNOzIfX0xlmVE/NW4xchSQsRQnq7c8mEQmiwLrABj19Jme29vW +ThFepYK8yGxuULYSFfVnhuGkWgmr61YwjpeyrOPefeydr++qP+45o6bHZhmH7leC +MIUS79BHFck/y4ZA6XltoF07MBmFnDz3OJKSmMGh5a7gFHJjA/e+QNvkGju+97mq +V1mc+xxkyIJPEn3hw0v60//4ByQcGTY57BQVVQXYJB/4Jr8T749G8eQl4YmPmv5p +hPls688ECXfiHQCRrp3yub8415zEkc2k+J3HXr17LRNBxvJ5qOC/CfiGlH6rG6Al +ufL8mbY1yMKgMUBuU5VQ/fX0EID34dOBbb+/FbyEoVmzWJEAzJj6bNUQe2M/JkfK +G6yzrO2TCFbFBz9DZ577xGHlylPeSG1UmICg4o4kyeUkD47K0RnJ8NZfozCs463S +T9LCWH11ReAVJfiEB9T6yLBd5jKEa/IEDB8S74knVyWu1qDnlh9USenJ6kzT8fKR +v5pTEGaH2toE8pzmKeaPxXtJBwcMv4SBd/NCoBEnutTfjYmdS/7qG/G0uC2jN9Si +eYZSGS/mlIYIhSvamCDnLl1FBoD69cWF0bz2ywSwJedJy1AIWpcfn+pNCTQF92cy +QkbG19jrrFOQJhQoeUCcAA8p8KBCkNCHrwEe7QIRCiJmCMYOhiGjAE3iqW8DSXAE +OqonWY6FyvEsrgKBrHtVuWQjC4jUrnzEsjQj+nHpAsKktlrBOynkLOWyeRexGLl7 +xElx6WZkOtmCVM3gLa+vH0hH7vEmXZnDKyhsSbQ8kEOSXLCsUZR9ggav+rO57W2O +Vnx6Qko3ynOfFfPVrMVetJCm7p+ar6qgsyZpi52FFxeIGHmJ2STv3QSXQhvnWtP4 +pIMdYudQ7Kw90L0vDf1+cpI+a8jUGRU1KrtfV2jVrN/7mf8Tf1bGiUt+WPF6l1es +WyEBcH3+xYu9W5N82bIFtrlogJI/gj6qtmN3QIeUrIPsrvJ8iuUqNWLB5aQFtbAd +poYVj+8hScMgQ2HiKqlffyDOWNghuePlFJecgcJcpusm+LqiYaWPo2RNvPdWvb+I +1o0= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/t/certs/test0.p12 b/t/certs/test0.p12 new file mode 100644 index 0000000000000000000000000000000000000000..1c97d37226171077c98e89c5d9f23932895fb137 GIT binary patch literal 2533 zcmY+^c{CJ?9tZF-W`@xq%%m9EXR?jaWwP&5C}kN+vNRHEP_j02&2ZxyjeWhAxrXd9 zj4kUG*+U{_$(AkIN_O|@ocG>+?~mX4o%8*k^ZoOKr9!8H9GqAxG#>($e|qWZHZKPk z2ZIVt1yP}i$8ju{3Nrntf-tBc_2Wnt$N@NhO8+z*SR{n!-wQAf2$m1TJyHbIj}X}R z1_HSOp;QpS{UKP%R=i0{Q|+=HW6dpF_z-gYR3yzpC$+pPnyWNo&@|tBW?9ZoGvsMk zD%?x9-*|sq8!M6_W^CN%6jn$$diCvG$%yK3maSy(gkU(Ec7>wfmn4FowgMn5AvHlb zG}#Tf#Rmfi7<e;-yv_=>wO*YhUSxK6y)Q8l-<w!5z~Ub|SdE(J+^GG5IOB#sa?d^c zuI5~*SxjK2xC{`2AN+bx9?e?04j{~KS0b}xhcs5oQ$~fro>|4jUl$lVL59`^I-zxR zs_QjB0%}u!Ku$Y_d`8hdcfYSs)j&)+gmd3CCsvm711k;I_oHZzGfhujJi#vY^~;G3 zrGfuQ$4-c71Mif6EmGnUJ%4B=I9I-Gk(=4+nzfK`WFuJ#b(M1nPZ`tWMN*y@wD;5U zTIhBuVHG)S+YdARlMPeNxNfP5sq!i*`CD}#fK8a&7w9$;7j!lXHxyd0o2_yjU^9c? z;SzrwCg80rzbfBe1=BnLqrGM>_{Zu(iOSLQ+5Trge%2vf<qn_t(@l1`%X}UA*|&h) zPXXvM#5AuFb&Et^hK5F->SCiUCNdo|+IE@3DZzg)irvZTX48@QQ<KFtUm%t(T#DT? zYgO}zHfkt&5%RpP#}~z_?-?*5&8vJ5gtl-<f4f}sz*NxH!=TlnH0{BRdzsO`dUX=d zr3WhK!BraFEk|&y;r5c(GS1Ng7>JTxpW_+S-F8C>N+C}w6I@$3^{#^bR93@t&NRb? zQcEOXNJqy;^$Rsv_$5~vA_>n5?>}3+`a0QmlqG)Mt2Cdh;f;B%@W)(%yq?{jzAE|| z@DW!`XG)R`MO(7?B{G~m_?qy0OjR1|jE2eyW*mO@IgWJw{h-Z?_-UAuA52x%Ic|(q z658(2A6EW*YkuPzZq%0_U_O#(vf#5LMH)sQC8~MxqvN*A_z(Ao6%HTk43I>NGOn>^ zt&m1i{zz1ssE|w^I>=byjA1H^zDtQx5fC+|CUl4UK(FpcZ1;W|@qZ-or&dIs*pvK6 zSu!Tk3)7ub{1@Dj6KZk;0<%J8K@V~Z&00#k<T%}wy7z)qnp`WY*6u^%@ZclEVC!Xy z83bmnwp~5E6)3qV+E3eI)6~_hd!HX@%!%1(9mES*CyNmInst+yCH^J&OxSll{)~oa zeIikqmKYnT(-@7;szYncf2q4`9ph_r_P~L{HPb!2;s#RxaleWdS!&rTf$K2J!}j2c zMaF*Nnet$!e!Su~)xq)_5#%)G)e98+W3i?=!A-m2R+Co0%EeJ}L9E@}pm2BgmjaE9 zThIM9<^_XhJ0+$DV+D+X>h~obJsctIQA>W+ncnu#w$AMbweiJRD%jwEz+h0p=Rs63 z<~Wu=J{07{fB4|x03JKDdJN3+|Ea?HQ<c-{+5ji3yvsjT0Z~DnmGvK=-0j&T+rNs= zy(g0okyRl3<lS3cmi}_nTR6+%%jylY<UQH)Al#6pusaugR)$Po)Xt7(WFL_NwkE7F zs*t6jg)eYPb+8#CEh`)B%?hucPW(vmr;X!c-_4KAl&@{fSk6lC+J6<z<a7bJS{<w+ zz-7CeuzN!@7V7H5%>1RVDfH=k<?m7RcfmLwV9u5_n+<pTG1Nhuw9I1sQCy0+^qVKk zX;c2q3&aaogy!<<$pm9YgREWfX54EpS*oJH=A0*&bV9M}i>^)YjF8^jZx8s!;E{?5 zt7xYh2ah9;RVcstNaXKxwv}ki(HO><?VEur1(68Vuj~9n-Y!xu9u(<~b*MBi4mDL* zItsPwe|~`Z92G&7YO>tavwxv@T{wX>RDY=S35kE*7HY$>oz6K~o7UKqKJUVCg5OGe zl;`F3$iyk*;k`PC;AvMWmx_~wm~@;`BhcurSUlQtm_1PRfjj!f66|H_Mp_@Ab6J~# zD8&tPu#rjx?X)y{-RlY9EjEUD1UWTt+zm6YyQzOwTr6;-bjphi*c+U_d<PVnT|28P zGQhvJ*>2M4@(}{-uniri1c!<5-+GAuJW_^&>-pOM(3lGIF+F8VAm|Cb8jE{ZQN6}P zdy?$QxNJ4UkT9+VbbU7uSkE-WH(9S>Dz;}?n_u}R+;h_*;jq7?Rc@9p@2hGtypzgB zCO%mEMQoLiW9*r|Y?EbLigTEkUD<9@@SKg>@X8XVpD}u_S%-zK8W$z_6?_(|pgH)T zi*&yrV6Q86k;+seHs5^tHF%x(TWP_@QWM5Ji)hckrkzviP@RzDOcb+4qLvp@FVzN( zN&&@QHJHuV%!5Rn57wmg0|s>6Q~F=3a##Hp6N<#i?G?4|NXG(j#w?3h&pe#<bneUT zJ)J9zn*Swv=uTMtg-HaY_DuYP(=>c&fdO~+oy5u0$$;<qsCL;adNU($K`svsW489@ z_@VRpbK|i$hKvf{JZA~4cZo*Q_t*W#%EEVkGx%XoaI3NHfzAH)l0@j}h}_k!kBEsG zehBN&5{epX=Tt{Lfdl0)NH2sLHR0!*pYd@EY&`I|NZofZ`X-<EUTaOsLy6VtzN<|B zvnRcw#pyK#C3>lsj_y53jPATa(w~U2EGBIUOL%iaJJth43kBA&^%5J?opB}C|FZRD zIul)$%&l|7&{!r`zhg#DQ)7I8mt2?XDKmvOwOjplz`)0K!8fO7EWYgI8;P3^sH;8^ zh>*Kg3GMSO=Wg3+{QU)Mf2~s){OQOL{)_0hYey;G2%}4Z-n<7QCXOz--@6GH&nK7d z6!U7-_hFJf{n%H+&SFMqaf%1417wI}EFm);r9kAYAntr`OMMq-oT*g|qsJcTEoE2S z9B%Z%)szpZ;5zP8hGOGQqkQ3Pf6!wEhT=>ciZ7>FfL!u2>)C+hMylfN4NU`AVniS* zA=*?#_<VHCY`}udk<NX%$%Wpx$|$hRq!pin)x*9p9*s<+EXjKL5YZU1b@e&=^>^h; z=l3xfx<>TokP8XumTkMx&eeFM$i$~P?y+YtDOR`lEMCjxFliH!^QMTzU9*`Q?5Ip` z_alaU>UNWANDeXD2~&~9O8-|!C_?2F2wtGZUcU)g%oRLe$V73k^ug$RC$K75Nh}ls tR^a0Vihuzicq1M<x|rpC=|$8kqgW@qUM7PY58`e;WQtJ`MeRS8{1=<xrAPn( literal 0 HcmV?d00001 -- GitLab