Skip to content

Commit 39cde48

Browse files
jeanp413mustard-mh
andauthored
Load custom certificates (#108)
* Use system certificate in local ssh proxy * Fix * Don't load certificates in windows for now * bump version --------- Co-authored-by: hwen <[email protected]>
1 parent e9c1659 commit 39cde48

File tree

4 files changed

+146
-3
lines changed

4 files changed

+146
-3
lines changed

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"displayName": "Gitpod",
44
"description": "Gitpod Support",
55
"publisher": "gitpod",
6-
"version": "0.0.170",
6+
"version": "0.0.171",
77
"license": "MIT",
88
"icon": "resources/gitpod.png",
99
"repository": {
@@ -404,6 +404,7 @@
404404
"@bufbuild/buf": "^1.15.0-1",
405405
"@types/google-protobuf": "^3.7.4",
406406
"@types/js-yaml": "^4.0.5",
407+
"@types/http-proxy-agent": "^2.0.1",
407408
"@types/mocha": "^9.1.1",
408409
"@types/node": "18.x",
409410
"@types/proper-lockfile": "^4.1.2",
@@ -443,6 +444,7 @@
443444
"@microsoft/dev-tunnels-ssh-keys": "^3.11.38",
444445
"@microsoft/dev-tunnels-ssh-tcp": "^3.11.38",
445446
"@segment/analytics-node": "^1.0.0-beta.24",
447+
"@vscode/proxy-agent": "^0.21.0",
446448
"configcat-node": "^8.0.0",
447449
"js-yaml": "^4.1.0",
448450
"long": "^5.2.1",

src/local-ssh/proxy.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66
import * as os from 'os';
77
import * as path from 'path';
88
import * as fs from 'fs';
9+
import * as tls from 'tls';
910
import { NopeLogger, DebugLogger } from './logger';
1011
import { TelemetryService } from './telemetryService';
12+
import { createTlsPatch, loadSystemCertificates, LogLevel, ProxyAgentParams } from '@vscode/proxy-agent';
1113

1214
interface ClientOptions {
1315
host: string;
@@ -421,6 +423,9 @@ async function getExtensionsJson(extensionsDir: string) {
421423

422424
async function main() {
423425
const logService = options.debug ? new DebugLogger(path.join(os.tmpdir(), `lssh-${options.host}.log`)) : new NopeLogger();
426+
427+
createPatchedModules(logService);
428+
424429
const telemetryService = new TelemetryService(
425430
process.env.SEGMENT_KEY!,
426431
options.machineID,
@@ -477,3 +482,36 @@ function getFailureCode(err: any) {
477482
}
478483
return undefined;
479484
}
485+
486+
function createPatchedModules(logService: ILogService) {
487+
if (process.platform === 'win32') {
488+
// Ignore windows for now as it requires a native binary
489+
return;
490+
}
491+
492+
const params: ProxyAgentParams = {
493+
resolveProxy: async () => undefined,
494+
getProxyURL: () => undefined,
495+
getProxySupport: () => 'off',
496+
addCertificatesV1: () => false,
497+
addCertificatesV2: () => true,
498+
log: logService,
499+
getLogLevel: () => {
500+
return LogLevel.Trace;
501+
},
502+
proxyResolveTelemetry: () => { },
503+
useHostProxy: false,
504+
loadAdditionalCertificates: async () => {
505+
return await loadSystemCertificates({ log: logService });
506+
},
507+
env: process.env,
508+
};
509+
510+
function mergeModules(module: any, patch: any) {
511+
return Object.assign(module.default || module, patch);
512+
}
513+
514+
return {
515+
tls: mergeModules(tls, createTlsPatch(params, tls))
516+
};
517+
}

webpack.config.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ const prodConfig = {
3131
vscode: "commonjs vscode",
3232
bufferutil: "bufferutil",
3333
"utf-8-validate": "utf-8-validate",
34-
"node-rsa": "node-rsa"
34+
"node-rsa": "node-rsa",
35+
"@vscode/windows-ca-certs": "@vscode/windows-ca-certs"
3536
},
3637
resolve: {
3738
mainFields: ['main'],
@@ -80,7 +81,8 @@ const devConfig = {
8081
externals: {
8182
bufferutil: "bufferutil",
8283
"utf-8-validate": "utf-8-validate",
83-
"node-rsa": "node-rsa"
84+
"node-rsa": "node-rsa",
85+
"@vscode/windows-ca-certs": "@vscode/windows-ca-certs"
8486
},
8587
resolve: {
8688
mainFields: ['main'],

yarn.lock

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,11 @@
375375
component-type "^1.2.1"
376376
join-component "^1.1.0"
377377

378+
"@tootallnate/once@^3.0.0":
379+
version "3.0.0"
380+
resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-3.0.0.tgz#d52238c9052d746c9689523e650160e70786bc9a"
381+
integrity sha512-OAdBVB7rlwvLD+DiecSAyVKzKVmSfXbouCyM5I6wHGi4MGXIyFqErg1IvyJ7PI1e+GYZuZh7cCHV/c4LA8SKMw==
382+
378383
"@types/eslint-scope@^3.7.3":
379384
version "3.7.3"
380385
resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.3.tgz#125b88504b61e3c8bc6f870882003253005c3224"
@@ -401,6 +406,13 @@
401406
resolved "https://registry.yarnpkg.com/@types/google-protobuf/-/google-protobuf-3.15.6.tgz#674a69493ef2c849b95eafe69167ea59079eb504"
402407
integrity sha512-pYVNNJ+winC4aek+lZp93sIKxnXt5qMkuKmaqS3WGuTq0Bw1ZDYNBgzG5kkdtwcv+GmYJGo3yEg6z2cKKAiEdw==
403408

409+
"@types/http-proxy-agent@^2.0.1":
410+
version "2.0.2"
411+
resolved "https://registry.yarnpkg.com/@types/http-proxy-agent/-/http-proxy-agent-2.0.2.tgz#942c1f35c7e1f0edd1b6ffae5d0f9051cfb32be1"
412+
integrity sha512-2S6IuBRhqUnH1/AUx9k8KWtY3Esg4eqri946MnxTG5HwehF1S5mqLln8fcyMiuQkY72p2gH3W+rIPqp5li0LyQ==
413+
dependencies:
414+
"@types/node" "*"
415+
404416
"@types/js-yaml@^4.0.5":
405417
version "4.0.5"
406418
resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.5.tgz#738dd390a6ecc5442f35e7f03fa1431353f7e138"
@@ -617,6 +629,20 @@
617629
resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44"
618630
integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==
619631

632+
"@vscode/proxy-agent@^0.21.0":
633+
version "0.21.0"
634+
resolved "https://registry.yarnpkg.com/@vscode/proxy-agent/-/proxy-agent-0.21.0.tgz#93c818b863ad20b42679032ecc1e3ecdc6306f12"
635+
integrity sha512-9YcpBq+ZhMr3EQY/5ScyHc9kIIU/AcYOQn3DXq0N9tl81ViVsUvii3Fh+FAtD0YQ/qWtDfGxt8VCWZtuyh2D0g==
636+
dependencies:
637+
"@tootallnate/once" "^3.0.0"
638+
agent-base "^7.0.1"
639+
debug "^4.3.4"
640+
http-proxy-agent "^7.0.0"
641+
https-proxy-agent "^7.0.2"
642+
socks-proxy-agent "^8.0.1"
643+
optionalDependencies:
644+
"@vscode/windows-ca-certs" "^0.3.1"
645+
620646
"@vscode/vsce@^2.18.0":
621647
version "2.18.0"
622648
resolved "https://registry.yarnpkg.com/@vscode/vsce/-/vsce-2.18.0.tgz#9f40bf8e7df084a36844b9dadf5c277265c9fbd6"
@@ -645,6 +671,13 @@
645671
optionalDependencies:
646672
keytar "^7.7.0"
647673

674+
"@vscode/windows-ca-certs@^0.3.1":
675+
version "0.3.1"
676+
resolved "https://registry.yarnpkg.com/@vscode/windows-ca-certs/-/windows-ca-certs-0.3.1.tgz#35c88b2d2a52f7759bfb6878906c3d40421ec6a3"
677+
integrity sha512-1B6hZAsqg125wuMsXiKIFkBgKx/J7YR4RT/ccYGkWAToPU9MVa40PRe+evLFUmLPH6NmPohEPlCzZLbqgvHCcQ==
678+
dependencies:
679+
node-addon-api "^3.0.2"
680+
648681
"@webassemblyjs/[email protected]":
649682
version "1.11.1"
650683
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7"
@@ -833,6 +866,13 @@ agent-base@6:
833866
dependencies:
834867
debug "4"
835868

869+
agent-base@^7.0.1, agent-base@^7.0.2, agent-base@^7.1.0, agent-base@^7.1.1:
870+
version "7.1.1"
871+
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.1.tgz#bdbded7dfb096b751a2a087eeeb9664725b2e317"
872+
integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==
873+
dependencies:
874+
debug "^4.3.4"
875+
836876
ajv-formats@^2.1.1:
837877
version "2.1.1"
838878
resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520"
@@ -2263,6 +2303,14 @@ [email protected]:
22632303
statuses "2.0.1"
22642304
toidentifier "1.0.1"
22652305

2306+
http-proxy-agent@^7.0.0:
2307+
version "7.0.2"
2308+
resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e"
2309+
integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==
2310+
dependencies:
2311+
agent-base "^7.1.0"
2312+
debug "^4.3.4"
2313+
22662314
https-proxy-agent@^5.0.0:
22672315
version "5.0.1"
22682316
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
@@ -2271,6 +2319,14 @@ https-proxy-agent@^5.0.0:
22712319
agent-base "6"
22722320
debug "4"
22732321

2322+
https-proxy-agent@^7.0.2:
2323+
version "7.0.5"
2324+
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz#9e8b5013873299e11fab6fd548405da2d6c602b2"
2325+
integrity sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==
2326+
dependencies:
2327+
agent-base "^7.0.2"
2328+
debug "4"
2329+
22742330
human-signals@^2.1.0:
22752331
version "2.1.0"
22762332
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
@@ -2342,6 +2398,14 @@ inversify@^5.1.1:
23422398
resolved "https://registry.yarnpkg.com/inversify/-/inversify-5.1.1.tgz#6fbd668c591337404e005a1946bfe0d802c08730"
23432399
integrity sha512-j8grHGDzv1v+8T1sAQ+3boTCntFPfvxLCkNcxB1J8qA0lUN+fAlSyYd+RXKvaPRL4AGyPxViutBEJHNXOyUdFQ==
23442400

2401+
ip-address@^9.0.5:
2402+
version "9.0.5"
2403+
resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a"
2404+
integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==
2405+
dependencies:
2406+
jsbn "1.1.0"
2407+
sprintf-js "^1.1.3"
2408+
23452409
23462410
version "1.9.1"
23472411
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
@@ -2470,6 +2534,11 @@ js-yaml@^3.10.0:
24702534
argparse "^1.0.7"
24712535
esprima "^4.0.0"
24722536

2537+
2538+
version "1.1.0"
2539+
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040"
2540+
integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==
2541+
24732542
jsdoctypeparser@^6.1.0:
24742543
version "6.1.0"
24752544
resolved "https://registry.yarnpkg.com/jsdoctypeparser/-/jsdoctypeparser-6.1.0.tgz#acfb936c26300d98f1405cb03e20b06748e512a8"
@@ -2874,6 +2943,11 @@ node-abi@^3.3.0:
28742943
dependencies:
28752944
semver "^7.3.5"
28762945

2946+
node-addon-api@^3.0.2:
2947+
version "3.2.1"
2948+
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161"
2949+
integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==
2950+
28772951
node-addon-api@^4.3.0:
28782952
version "4.3.0"
28792953
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f"
@@ -3630,6 +3704,28 @@ slash@^4.0.0:
36303704
resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7"
36313705
integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==
36323706

3707+
smart-buffer@^4.2.0:
3708+
version "4.2.0"
3709+
resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae"
3710+
integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==
3711+
3712+
socks-proxy-agent@^8.0.1:
3713+
version "8.0.4"
3714+
resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz#9071dca17af95f483300316f4b063578fa0db08c"
3715+
integrity sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==
3716+
dependencies:
3717+
agent-base "^7.1.1"
3718+
debug "^4.3.4"
3719+
socks "^2.8.3"
3720+
3721+
socks@^2.8.3:
3722+
version "2.8.3"
3723+
resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.3.tgz#1ebd0f09c52ba95a09750afe3f3f9f724a800cb5"
3724+
integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==
3725+
dependencies:
3726+
ip-address "^9.0.5"
3727+
smart-buffer "^4.2.0"
3728+
36333729
source-map-support@~0.5.20:
36343730
version "0.5.21"
36353731
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
@@ -3668,6 +3764,11 @@ spdx-license-ids@^3.0.0:
36683764
resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95"
36693765
integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==
36703766

3767+
sprintf-js@^1.1.3:
3768+
version "1.1.3"
3769+
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a"
3770+
integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==
3771+
36713772
sprintf-js@~1.0.2:
36723773
version "1.0.3"
36733774
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"

0 commit comments

Comments
 (0)