diff options
| author | Lucas de Castro Borges <lucas@gnuabordo.com.br> | 2025-02-11 15:07:35 -0300 |
|---|---|---|
| committer | Lucas de Castro Borges <lucas@gnuabordo.com.br> | 2025-02-11 15:07:35 -0300 |
| commit | 4cb8841196d0625dfa3825aa326f071cd27c7b8b (patch) | |
| tree | 1682a647d4463397c119183369ae6f750d5fdcff /jstests/ssl/ssl_with_system_ca.js | |
| parent | aa03c6362cbaa767638e6eed9b031d86dd2643d1 (diff) | |
| parent | 8f0827553e09872941945a093b647a4211a9db7f (diff) | |
Update upstream source from tag 'upstream/6.0.0'master
Update to upstream version '6.0.0'
with Debian dir 5604a80ec1c96ca76f25f40d78e6ef855abec322
Diffstat (limited to 'jstests/ssl/ssl_with_system_ca.js')
| -rw-r--r-- | jstests/ssl/ssl_with_system_ca.js | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/jstests/ssl/ssl_with_system_ca.js b/jstests/ssl/ssl_with_system_ca.js new file mode 100644 index 00000000000..4626cceeaa9 --- /dev/null +++ b/jstests/ssl/ssl_with_system_ca.js @@ -0,0 +1,54 @@ +// On OSX this test assumes that jstests/libs/trusted-ca.pem has been added as a trusted +// certificate to the login keychain of the evergreen user. See, +// https://github.com/10gen/buildslave-cookbooks/commit/af7cabe5b6e0885902ebd4902f7f974b64cc8961 +// for details. +// To install trusted-ca.pem for local testing on OSX, invoke the following at a console: +// security add-trusted-cert -d jstests/libs/trusted-ca.pem +(function() { +'use strict'; + +const HOST_TYPE = getBuildInfo().buildEnvironment.target_os; +if (HOST_TYPE == "windows") { + // OpenSSL backed imports Root CA and intermediate CA + runProgram("certutil.exe", "-addstore", "-user", "-f", "CA", "jstests\\libs\\trusted-ca.pem"); + + // SChannel backed follows Windows rules and only trusts the Root store in Local Machine and + // Current User. + runProgram("certutil.exe", "-addstore", "-f", "Root", "jstests\\libs\\trusted-ca.pem"); +} + +function testWithCerts(prefix) { + jsTest.log( + `Testing with SSL certs $ { + clientPem connecting to serverPem + }`); + + // allowSSL to get a non-SSL control connection. + const conn = MongoRunner.runMongod( + {sslMode: 'allowSSL', sslPEMKeyFile: 'jstests/libs/' + prefix + 'server.pem'}); + + let argv = [ + 'mongo', + '--ssl', + '--port', + conn.port, + '--sslPEMKeyFile', + 'jstests/libs/' + prefix + 'client.pem', + '--eval', + ';' + ]; + + if (HOST_TYPE == "linux") { + // On Linux we override the default path to the system CA store to point to our + // "trusted" CA. On Windows, this CA will have been added to the user's trusted CA list + argv.unshift("env", "SSL_CERT_FILE=jstests/libs/trusted-ca.pem"); + } + + const exitCode = runMongoProgram.apply(null, argv); + MongoRunner.stopMongod(conn); + return exitCode; +} + +assert.neq(0, testWithCerts(''), 'Certs signed with untrusted CA'); +assert.eq(0, testWithCerts('trusted-'), 'Certs signed with trusted CA'); +})(); |
