Skip to content

Commit 0a19ca8

Browse files
authored
chore(cli-repl): add tls logging regression test COMPASS-5308 (#1173)
1 parent 38436ec commit 0a19ca8

File tree

3 files changed

+298
-3
lines changed

3 files changed

+298
-3
lines changed

packages/cli-repl/test/e2e-tls.spec.ts

Lines changed: 79 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ import { assert, expect } from 'chai';
22
import { promises as fs } from 'fs';
33
import path from 'path';
44
import { skipIfEnvServerVersion, startTestServer } from '../../../testing/integration-testing-hooks';
5-
import { useTmpdir } from './repl-helpers';
5+
import { useTmpdir, setTemporaryHomeDirectory } from './repl-helpers';
66
import { TestShell } from './test-shell';
7+
import { promisify } from 'util';
8+
import rimraf from 'rimraf';
79

810
function getCertPath(filename: string): string {
911
return path.join(__dirname, 'fixtures', 'certificates', filename);
@@ -12,6 +14,8 @@ const CA_CERT = getCertPath('ca.crt');
1214
const NON_CA_CERT = getCertPath('non-ca.crt');
1315
const CLIENT_CERT = getCertPath('client.bundle.pem');
1416
const CLIENT_CERT_PFX = getCertPath('client.bundle.pfx');
17+
const CLIENT_CERT_ENCRYPTED = getCertPath('client.bundle.encrypted.pem');
18+
const CLIENT_CERT_PASSWORD = 'p4ssw0rd';
1519
const INVALID_CLIENT_CERT = getCertPath('invalid-client.bundle.pem');
1620
const SERVER_KEY = getCertPath('server.bundle.pem');
1721
const SERVER_INVALIDHOST_KEY = getCertPath('server-invalidhost.bundle.pem');
@@ -156,8 +160,11 @@ describe('e2e TLS', () => {
156160

157161
context('connecting with client cert to server with valid cert', () => {
158162
const tmpdir = useTmpdir();
163+
let homedir: string;
164+
let env: Record<string, string>;
165+
let logBasePath: string;
159166

160-
after(async() => {
167+
after(async function() {
161168
const shell = TestShell.start({ args:
162169
[
163170
await server.connectionString(),
@@ -169,8 +176,16 @@ describe('e2e TLS', () => {
169176
await shell.executeLine('db.shutdownServer({ force: true })');
170177
shell.kill();
171178
await shell.waitForExit();
179+
180+
await TestShell.cleanup.call(this);
181+
try {
182+
await promisify(rimraf)(homedir);
183+
} catch (err) {
184+
// On Windows in CI, this can fail with EPERM for some reason.
185+
// If it does, just log the error instead of failing all tests.
186+
console.error('Could not remove fake home directory:', err);
187+
}
172188
});
173-
afterEach(TestShell.cleanup);
174189

175190
const server = startTestServer(
176191
'not-shared', '--hostname', 'localhost',
@@ -184,6 +199,15 @@ describe('e2e TLS', () => {
184199
if (process.env.MONGOSH_TEST_FORCE_API_STRICT) {
185200
return this.skip(); // createUser is unversioned
186201
}
202+
const homeInfo = setTemporaryHomeDirectory();
203+
homedir = homeInfo.homedir;
204+
env = homeInfo.env;
205+
206+
if (process.platform === 'win32') {
207+
logBasePath = path.resolve(homedir, 'local', 'mongodb', 'mongosh');
208+
} else {
209+
logBasePath = path.resolve(homedir, '.mongodb', 'mongosh');
210+
}
187211
/* connect with cert to create user */
188212
const shell = TestShell.start({
189213
args: [
@@ -223,6 +247,32 @@ describe('e2e TLS', () => {
223247
.to.include(`user: '${certUser}'`);
224248
});
225249

250+
it('works with valid cert (args, encrypted)', async() => {
251+
const shell = TestShell.start({
252+
args: [
253+
`${await server.connectionString()}?serverSelectionTimeoutMS=1500`,
254+
'--authenticationMechanism', 'MONGODB-X509',
255+
'--tls', '--tlsCAFile', CA_CERT,
256+
'--tlsCertificateKeyFile', CLIENT_CERT_ENCRYPTED,
257+
'--tlsCertificateKeyFilePassword', CLIENT_CERT_PASSWORD
258+
],
259+
env
260+
});
261+
const prompt = await shell.waitForPromptOrExit();
262+
expect(prompt.state).to.equal('prompt');
263+
expect(await shell.executeLine('db.runCommand({ connectionStatus: 1 })'))
264+
.to.include(`user: '${certUser}'`);
265+
266+
expect(await shell.executeLine('db.getSiblingDB("$external").auth({mechanism: "MONGODB-X509"})'))
267+
.to.include('ok: 1');
268+
expect(await shell.executeLine('db.runCommand({ connectionStatus: 1 })'))
269+
.to.include(`user: '${certUser}'`);
270+
271+
const logPath = path.join(logBasePath, `${shell.logId}_log`);
272+
const logFileContents = await fs.readFile(logPath, 'utf8');
273+
expect(logFileContents).not.to.include(CLIENT_CERT_PASSWORD);
274+
});
275+
226276
it('works with valid cert (connection string)', async() => {
227277
const shell = TestShell.start({
228278
args: [
@@ -242,6 +292,32 @@ describe('e2e TLS', () => {
242292
.to.include(`user: '${certUser}'`);
243293
});
244294

295+
it('works with valid cert (connection string, encrypted)', async() => {
296+
const shell = TestShell.start({
297+
args: [
298+
`${await server.connectionString()}?serverSelectionTimeoutMS=1500`
299+
+ '&authMechanism=MONGODB-X509'
300+
+ `&tls=true&tlsCAFile=${encodeURIComponent(CA_CERT)}`
301+
+ `&tlsCertificateKeyFile=${encodeURIComponent(CLIENT_CERT_ENCRYPTED)}`
302+
+ `&tlsCertificateKeyFilePassword=${encodeURIComponent(CLIENT_CERT_PASSWORD)}`
303+
],
304+
env
305+
});
306+
const prompt = await shell.waitForPromptOrExit();
307+
expect(prompt.state).to.equal('prompt');
308+
expect(await shell.executeLine('db.runCommand({ connectionStatus: 1 })'))
309+
.to.include(`user: '${certUser}'`);
310+
311+
expect(await shell.executeLine('db.getSiblingDB("$external").auth({mechanism: "MONGODB-X509"})'))
312+
.to.include('ok: 1');
313+
expect(await shell.executeLine('db.runCommand({ connectionStatus: 1 })'))
314+
.to.include(`user: '${certUser}'`);
315+
316+
const logPath = path.join(logBasePath, `${shell.logId}_log`);
317+
const logFileContents = await fs.readFile(logPath, 'utf8');
318+
expect(logFileContents).not.to.include(CLIENT_CERT_PASSWORD);
319+
});
320+
245321
it('fails with invalid cert (args)', async() => {
246322
const shell = TestShell.start({
247323
args: [
Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
Certificate:
2+
Data:
3+
Version: 1 (0x0)
4+
Serial Number:
5+
f3:49:92:0f:8b:55:bb:14
6+
Signature Algorithm: sha256WithRSAEncryption
7+
Issuer: O=MongoDB, OU=DevTools, CN=DevTools CA
8+
Validity
9+
Not Before: Dec 22 15:24:05 2020 GMT
10+
Not After : Oct 6 15:24:05 2294 GMT
11+
Subject: O=MongoDB, OU=DevTools Testers, CN=Wonderwoman/[email protected]
12+
Subject Public Key Info:
13+
Public Key Algorithm: rsaEncryption
14+
RSA Public-Key: (4096 bit)
15+
Modulus:
16+
00:df:5c:43:6a:8d:4f:5c:3c:99:72:15:8b:5e:f8:
17+
e1:8a:e8:8d:89:ea:6a:c5:4f:0c:78:75:24:0e:e9:
18+
73:b4:17:9e:08:54:90:96:cd:f6:fb:d5:1f:23:e6:
19+
b8:08:ed:e0:58:0d:16:f9:8f:2d:dd:1b:c1:d7:30:
20+
dc:98:72:85:13:d3:27:83:fb:5f:ca:28:60:0b:c2:
21+
28:3c:c3:44:46:82:92:b3:cb:64:f7:d7:9f:72:3e:
22+
42:6c:9d:cd:94:1a:15:ec:32:29:3c:dc:eb:0a:69:
23+
2d:ca:35:3e:19:a8:fd:09:5a:5b:e3:f4:cb:05:4b:
24+
e4:03:a1:15:51:92:fb:c8:59:9b:d2:b4:09:84:39:
25+
8b:40:28:04:ef:57:2c:42:32:8e:ef:69:fe:d1:8c:
26+
bc:8d:a7:ed:41:41:f1:6d:b9:e2:ae:3e:a2:28:61:
27+
80:bc:dc:bc:90:8b:a0:d7:e7:f4:ab:b0:ea:6d:e7:
28+
e4:7b:39:46:af:10:41:2b:4f:6d:c3:11:cf:1e:c8:
29+
89:2c:d1:ba:40:c2:1e:d9:9c:73:c0:8a:fb:52:19:
30+
80:7c:a5:22:d5:47:e6:8c:e0:ac:32:3e:2b:b8:6a:
31+
fa:53:3a:40:6a:9e:4a:ef:e3:7e:84:af:d0:35:46:
32+
94:c2:d4:95:cc:a5:e9:f0:62:cc:85:dc:0b:34:61:
33+
01:27:4d:55:f9:80:c7:27:a8:b5:51:9a:5e:9c:1e:
34+
26:fe:85:2a:d6:62:cc:e0:9e:7a:92:3d:63:23:6c:
35+
a7:02:d9:54:8c:90:53:ff:93:b1:49:53:43:d1:d8:
36+
1d:be:83:20:0c:02:e7:0a:e0:4b:e3:db:0e:ab:d0:
37+
fa:9f:e3:61:c4:df:ef:7b:fd:ac:d1:a3:96:fb:d0:
38+
7d:50:20:e9:8a:14:11:24:f7:6a:d9:06:45:27:fe:
39+
71:e5:29:e9:ce:12:eb:bf:5e:ef:ef:10:60:22:ae:
40+
ea:60:f6:ad:fe:01:5a:28:b1:71:16:e0:ef:ad:93:
41+
96:0e:ea:7c:c8:c6:1f:0c:b8:29:9e:06:61:b9:d1:
42+
9f:da:bd:43:3b:58:ed:93:d5:ce:84:c4:4a:8d:2c:
43+
c6:17:71:2a:74:b8:c2:b7:c8:de:e2:64:62:6e:db:
44+
32:ca:1d:e4:8e:8e:2e:4c:6d:10:a0:ae:f4:44:0e:
45+
ae:b4:9d:88:b6:75:94:5d:61:d8:88:0b:e3:8c:da:
46+
18:cb:19:91:03:10:40:8c:50:ab:23:73:5d:5d:91:
47+
53:69:90:a3:2e:8a:62:be:91:e6:28:d5:10:fb:4e:
48+
fa:a1:42:c3:d8:36:e0:2d:04:bd:97:88:8e:a9:e2:
49+
58:ab:84:aa:09:03:9a:ab:11:8c:e4:8e:29:6a:62:
50+
db:1b:43
51+
Exponent: 65537 (0x10001)
52+
Signature Algorithm: sha256WithRSAEncryption
53+
73:31:65:08:37:da:a2:05:dd:b7:44:1c:1c:52:14:4f:d9:bf:
54+
52:c2:91:e4:9a:8a:3b:b4:b8:ea:ee:d6:63:be:76:5d:c3:65:
55+
1e:1c:fd:2a:89:54:ae:6f:b6:15:5d:3a:40:fa:23:e6:33:9c:
56+
92:7e:9d:2d:c3:07:56:23:35:0d:0d:c3:92:37:25:7c:fd:98:
57+
5d:68:20:c4:25:13:45:46:4c:cd:72:26:ba:fb:a1:b9:16:29:
58+
37:32:14:e7:a1:ff:55:e7:52:47:77:66:a2:6c:4e:ff:9b:ec:
59+
a8:8a:5d:9e:9f:10:ec:27:48:b6:4a:1f:2a:c7:a7:c6:da:07:
60+
91:56:c0:f4:88:6b:5b:99:e6:0b:ad:d1:bc:5e:a3:94:81:70:
61+
f3:77:61:e7:d7:10:84:03:97:f9:c6:62:cb:a0:56:4b:a5:01:
62+
5e:14:df:5e:92:d3:b3:87:5c:b9:79:e7:ca:0e:b3:36:80:c6:
63+
78:26:18:87:63:0b:4a:d1:7b:9b:30:43:4b:16:9d:58:b4:9b:
64+
a2:f7:5d:0e:77:10:03:1d:4d:a9:1e:80:89:3d:3d:83:69:c3:
65+
40:a0:b1:09:17:98:f0:0b:d9:85:0e:6d:94:72:ee:bd:bd:8f:
66+
dd:87:e5:94:bf:49:97:f0:e2:58:52:46:75:73:0e:a1:f8:a2:
67+
9c:82:e7:3a:15:f9:52:ae:09:63:d5:14:77:04:a6:b1:d0:90:
68+
bc:2d:a5:19:cb:c1:61:8c:da:4a:80:7f:08:6b:69:8c:e3:48:
69+
22:6b:f0:e5:e7:1f:84:9f:93:24:47:24:3b:b9:81:cb:4c:a5:
70+
36:be:da:f0:11:d2:d8:09:c8:79:19:21:26:96:e4:9d:ba:23:
71+
3d:18:11:b6:79:47:38:67:c5:bf:ca:ec:b9:9a:81:d9:70:b9:
72+
75:4e:6d:8b:31:b9:a8:9a:e2:e0:89:dd:d9:c1:74:b9:c1:6d:
73+
38:f9:d3:f2:a3:15:7e:f6:bc:2f:80:4b:84:37:f9:ab:bf:ae:
74+
44:2a:53:b3:47:df:04:d7:85:05:a5:d7:18:30:c7:db:81:a9:
75+
45:83:fc:0b:18:2d:ae:42:be:99:a3:f0:38:6f:c3:54:14:41:
76+
74:2e:de:df:a9:94:c5:78:28:c3:9b:55:0f:82:47:86:28:89:
77+
dd:33:b4:fe:98:a6:82:ca:1a:3e:66:73:f7:84:6e:19:62:e1:
78+
30:d6:78:7e:7c:11:ef:96:11:83:0a:38:11:c4:7e:5d:99:c6:
79+
1a:7f:a0:6e:c8:04:16:24:3b:8f:87:eb:fe:22:82:5c:c1:c5:
80+
b2:57:3d:e4:ec:99:c4:e9:ce:e7:50:07:01:7e:28:80:fe:96:
81+
40:51:a0:12:77:27:73:2c
82+
-----BEGIN CERTIFICATE-----
83+
MIIFHzCCAwcCCQDzSZIPi1W7FDANBgkqhkiG9w0BAQsFADA7MRAwDgYDVQQKDAdN
84+
b25nb0RCMREwDwYDVQQLDAhEZXZUb29sczEUMBIGA1UEAwwLRGV2VG9vbHMgQ0Ew
85+
IBcNMjAxMjIyMTUyNDA1WhgPMjI5NDEwMDYxNTI0MDVaMGYxEDAOBgNVBAoMB01v
86+
bmdvREIxGTAXBgNVBAsMEERldlRvb2xzIFRlc3RlcnMxFDASBgNVBAMMC1dvbmRl
87+
cndvbWFuMSEwHwYJKoZIhvcNAQkBFhJ0ZXN0ZXJAZXhhbXBsZS5jb20wggIiMA0G
88+
CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDfXENqjU9cPJlyFYte+OGK6I2J6mrF
89+
Twx4dSQO6XO0F54IVJCWzfb71R8j5rgI7eBYDRb5jy3dG8HXMNyYcoUT0yeD+1/K
90+
KGALwig8w0RGgpKzy2T3159yPkJsnc2UGhXsMik83OsKaS3KNT4ZqP0JWlvj9MsF
91+
S+QDoRVRkvvIWZvStAmEOYtAKATvVyxCMo7vaf7RjLyNp+1BQfFtueKuPqIoYYC8
92+
3LyQi6DX5/SrsOpt5+R7OUavEEErT23DEc8eyIks0bpAwh7ZnHPAivtSGYB8pSLV
93+
R+aM4KwyPiu4avpTOkBqnkrv436Er9A1RpTC1JXMpenwYsyF3As0YQEnTVX5gMcn
94+
qLVRml6cHib+hSrWYszgnnqSPWMjbKcC2VSMkFP/k7FJU0PR2B2+gyAMAucK4Evj
95+
2w6r0Pqf42HE3+97/azRo5b70H1QIOmKFBEk92rZBkUn/nHlKenOEuu/Xu/vEGAi
96+
rupg9q3+AVoosXEW4O+tk5YO6nzIxh8MuCmeBmG50Z/avUM7WO2T1c6ExEqNLMYX
97+
cSp0uMK3yN7iZGJu2zLKHeSOji5MbRCgrvREDq60nYi2dZRdYdiIC+OM2hjLGZED
98+
EECMUKsjc11dkVNpkKMuimK+keYo1RD7TvqhQsPYNuAtBL2XiI6p4lirhKoJA5qr
99+
EYzkjilqYtsbQwIDAQABMA0GCSqGSIb3DQEBCwUAA4ICAQBzMWUIN9qiBd23RBwc
100+
UhRP2b9SwpHkmoo7tLjq7tZjvnZdw2UeHP0qiVSub7YVXTpA+iPmM5ySfp0twwdW
101+
IzUNDcOSNyV8/ZhdaCDEJRNFRkzNcia6+6G5Fik3MhTnof9V51JHd2aibE7/m+yo
102+
il2enxDsJ0i2Sh8qx6fG2geRVsD0iGtbmeYLrdG8XqOUgXDzd2Hn1xCEA5f5xmLL
103+
oFZLpQFeFN9ektOzh1y5eefKDrM2gMZ4JhiHYwtK0XubMENLFp1YtJui910OdxAD
104+
HU2pHoCJPT2DacNAoLEJF5jwC9mFDm2Ucu69vY/dh+WUv0mX8OJYUkZ1cw6h+KKc
105+
guc6FflSrglj1RR3BKax0JC8LaUZy8FhjNpKgH8Ia2mM40gia/Dl5x+En5MkRyQ7
106+
uYHLTKU2vtrwEdLYCch5GSEmluSduiM9GBG2eUc4Z8W/yuy5moHZcLl1Tm2LMbmo
107+
muLgid3ZwXS5wW04+dPyoxV+9rwvgEuEN/mrv65EKlOzR98E14UFpdcYMMfbgalF
108+
g/wLGC2uQr6Zo/A4b8NUFEF0Lt7fqZTFeCjDm1UPgkeGKIndM7T+mKaCyho+ZnP3
109+
hG4ZYuEw1nh+fBHvlhGDCjgRxH5dmcYaf6BuyAQWJDuPh+v+IoJcwcWyVz3k7JnE
110+
6c7nUAcBfiiA/pZAUaASdydzLA==
111+
-----END CERTIFICATE-----
112+
-----BEGIN RSA PRIVATE KEY-----
113+
Proc-Type: 4,ENCRYPTED
114+
DEK-Info: AES-256-CBC,D9A18B7D6891D4BF9165337EC1FA2815
115+
116+
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
165+
-----END RSA PRIVATE KEY-----
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
Proc-Type: 4,ENCRYPTED
3+
DEK-Info: AES-256-CBC,D9A18B7D6891D4BF9165337EC1FA2815
4+
5+
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
54+
-----END RSA PRIVATE KEY-----

0 commit comments

Comments
 (0)