diff --git a/packages/nodes-base/nodes/HttpRequest/GenericFunctions.ts b/packages/nodes-base/nodes/HttpRequest/GenericFunctions.ts index 778f03764c4ce..54a37a595330b 100644 --- a/packages/nodes-base/nodes/HttpRequest/GenericFunctions.ts +++ b/packages/nodes-base/nodes/HttpRequest/GenericFunctions.ts @@ -203,13 +203,12 @@ export const setAgentOptions = ( sslCertificates: HttpSslAuthCredentials | undefined, ) => { if (sslCertificates) { - const agentOptions: SecureContextOptions = { - cert: sslCertificates.cert ? formatPrivateKey(sslCertificates.cert) : undefined, - ca: sslCertificates.ca ? formatPrivateKey(sslCertificates.ca) : undefined, - key: sslCertificates.key ? formatPrivateKey(sslCertificates.key) : undefined, - passphrase: sslCertificates.passphrase || undefined, - }; - - requestOptions.agentOptions = { ...agentOptions }; + const agentOptions: SecureContextOptions = {}; + if (sslCertificates.ca) agentOptions.ca = formatPrivateKey(sslCertificates.ca); + if (sslCertificates.cert) agentOptions.cert = formatPrivateKey(sslCertificates.cert); + if (sslCertificates.key) agentOptions.key = formatPrivateKey(sslCertificates.key); + if (sslCertificates.passphrase) + agentOptions.passphrase = formatPrivateKey(sslCertificates.passphrase); + requestOptions.agentOptions = agentOptions; } }; diff --git a/packages/nodes-base/nodes/HttpRequest/interfaces.ts b/packages/nodes-base/nodes/HttpRequest/interfaces.ts index a5bb4b88a1536..83ef3532daa2e 100644 --- a/packages/nodes-base/nodes/HttpRequest/interfaces.ts +++ b/packages/nodes-base/nodes/HttpRequest/interfaces.ts @@ -1,6 +1,6 @@ export type HttpSslAuthCredentials = { - ca: string; - cert: string; - key: string; - passphrase: string; + ca?: string; + cert?: string; + key?: string; + passphrase?: string; }; diff --git a/packages/nodes-base/nodes/HttpRequest/test/utils/utils.test.ts b/packages/nodes-base/nodes/HttpRequest/test/utils/utils.test.ts index 21d93ece55dde..716b59e9b800f 100644 --- a/packages/nodes-base/nodes/HttpRequest/test/utils/utils.test.ts +++ b/packages/nodes-base/nodes/HttpRequest/test/utils/utils.test.ts @@ -51,6 +51,7 @@ describe('HTTP Node Utils, setAgentOptions', () => { uri: 'https://example.com', }); }); + it('should have agentOptions set', async () => { const requestOptions: IRequestOptions = { method: 'GET', @@ -58,10 +59,7 @@ describe('HTTP Node Utils, setAgentOptions', () => { }; const sslCertificates = { - ca: '-----BEGIN CERTIFICATE----- MIIDkzCCAnugAwIBAgIUMSLEzahP0dHVcxwUtMGBKKIrmBQwDQYJKoZIhvcNAQEL BQAwWTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDESMBAGA1UEAwwJbG9jYWxob3N0MB4X DTI0MDQxNTExMDYwNFoXDTI0MDUxNTExMDYwNFowWTELMAkGA1UEBhMCQVUxEzAR BgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5 IEx0ZDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A MIIBCgKCAQEAuTtIHsMtWvqTXKIj4hlMwxBj0RaGomACWxx1QrrMN478kWyWzzAk m725DVDCcKVVxu2FwsfWuReFSHNXfr1zyBNIhqAzKHA5LNBVPJ1r95Ecl0hlT1/5 hhQwKv6VHNsZV1WyVBtZNF/yEQBYkiUAjxC5fLjUc2NptUK7/lwoACCfCyOTFsx3 vmrxGbzewKn9Momoy+n67JErPpM/spf4CggL1dJw1nkZbiIa26OOpyCzj0aL0q+w +3xdoI8OOxaxtE72CqOdvVa+WSZaEE/hnelUwm/oJLdTZOQpGA3tnfziEL7a6bEC f94s2Zn5M1LeafYodVdDfeJqGDaDLJjkRQIDAQABo1MwUTAdBgNVHQ4EFgQUIoo6 igc93d8MNGtKbjT/dfpmNYYwHwYDVR0jBBgwFoAUIoo6igc93d8MNGtKbjT/dfpm NYYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAcu+afpYCp0S7 YaDA6aoMcRY3qqbf56w6XCXIhvrFYR/recuwNPzmp1kIXS0b8CRsd8aDN3YE4o4V +mqCnsjrQB3y/uHOmXNMUD4UKGYsyiwCMDi0611mz/MjhtfZIubml8YJr62hB94b wosQmRBbbtio2e9NS+CHMwJlgVUSu+9TBTwgsSZZ6Temlm/m7jqQTFAmjn+852BX ww2E1kvI4HYRlELSGeWO9bCZvhROhV+ZEH7b1v58Z0RD4gE29tdnBYQKRfRTBMth g5uagkgMAx0TyfARX88zJbvZrg7sabYjE+DA5PKw3ePrnic+f1QmLhcedrsR/UgV a16pVsv+lA== -----END CERTIFICATE-----', - cert: '', - key: '', - passphrase: '', + ca: 'mock-ca', }; setAgentOptions(requestOptions, sslCertificates); @@ -70,10 +68,7 @@ describe('HTTP Node Utils, setAgentOptions', () => { method: 'GET', uri: 'https://example.com', agentOptions: { - cert: undefined, - ca: '-----BEGIN CERTIFICATE-----\nMIIDkzCCAnugAwIBAgIUMSLEzahP0dHVcxwUtMGBKKIrmBQwDQYJKoZIhvcNAQEL\nBQAwWTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM\nGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDESMBAGA1UEAwwJbG9jYWxob3N0MB4X\nDTI0MDQxNTExMDYwNFoXDTI0MDUxNTExMDYwNFowWTELMAkGA1UEBhMCQVUxEzAR\nBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5\nIEx0ZDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A\nMIIBCgKCAQEAuTtIHsMtWvqTXKIj4hlMwxBj0RaGomACWxx1QrrMN478kWyWzzAk\nm725DVDCcKVVxu2FwsfWuReFSHNXfr1zyBNIhqAzKHA5LNBVPJ1r95Ecl0hlT1/5\nhhQwKv6VHNsZV1WyVBtZNF/yEQBYkiUAjxC5fLjUc2NptUK7/lwoACCfCyOTFsx3\nvmrxGbzewKn9Momoy+n67JErPpM/spf4CggL1dJw1nkZbiIa26OOpyCzj0aL0q+w\n+3xdoI8OOxaxtE72CqOdvVa+WSZaEE/hnelUwm/oJLdTZOQpGA3tnfziEL7a6bEC\nf94s2Zn5M1LeafYodVdDfeJqGDaDLJjkRQIDAQABo1MwUTAdBgNVHQ4EFgQUIoo6\nigc93d8MNGtKbjT/dfpmNYYwHwYDVR0jBBgwFoAUIoo6igc93d8MNGtKbjT/dfpm\nNYYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAcu+afpYCp0S7\nYaDA6aoMcRY3qqbf56w6XCXIhvrFYR/recuwNPzmp1kIXS0b8CRsd8aDN3YE4o4V\n+mqCnsjrQB3y/uHOmXNMUD4UKGYsyiwCMDi0611mz/MjhtfZIubml8YJr62hB94b\nwosQmRBbbtio2e9NS+CHMwJlgVUSu+9TBTwgsSZZ6Temlm/m7jqQTFAmjn+852BX\nww2E1kvI4HYRlELSGeWO9bCZvhROhV+ZEH7b1v58Z0RD4gE29tdnBYQKRfRTBMth\ng5uagkgMAx0TyfARX88zJbvZrg7sabYjE+DA5PKw3ePrnic+f1QmLhcedrsR/UgV\na16pVsv+lA==\n-----END CERTIFICATE-----', - key: undefined, - passphrase: undefined, + ca: 'mock-ca', }, }); });