{"action":"created","issue":{"url":"https://api.github.com/repos/nodejs/node/issues/2818","labels_url":"https://api.github.com/repos/nodejs/node/issues/2818/labels{/name}","comments_url":"https://api.github.com/repos/nodejs/node/issues/2818/comments","events_url":"https://api.github.com/repos/nodejs/node/issues/2818/events","html_url":"https://github.com/nodejs/node/pull/2818","id":106047956,"number":2818,"title":"crypto:add --root-certs option","user":{"login":"tristan-perryman","id":14236238,"avatar_url":"https://avatars.githubusercontent.com/u/14236238?v=3","gravatar_id":"","url":"https://api.github.com/users/tristan-perryman","html_url":"https://github.com/tristan-perryman","followers_url":"https://api.github.com/users/tristan-perryman/followers","following_url":"https://api.github.com/users/tristan-perryman/following{/other_user}","gists_url":"https://api.github.com/users/tristan-perryman/gists{/gist_id}","starred_url":"https://api.github.com/users/tristan-perryman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tristan-perryman/subscriptions","organizations_url":"https://api.github.com/users/tristan-perryman/orgs","repos_url":"https://api.github.com/users/tristan-perryman/repos","events_url":"https://api.github.com/users/tristan-perryman/events{/privacy}","received_events_url":"https://api.github.com/users/tristan-perryman/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/nodejs/node/labels/semver-minor","name":"semver-minor","color":"fef2c0"},{"url":"https://api.github.com/repos/nodejs/node/labels/tls","name":"tls","color":"fad8c7"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":9,"created_at":"2015-09-11T16:38:19Z","updated_at":"2015-09-15T17:44:29Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/nodejs/node/pulls/2818","html_url":"https://github.com/nodejs/node/pull/2818","diff_url":"https://github.com/nodejs/node/pull/2818.diff","patch_url":"https://github.com/nodejs/node/pull/2818.patch"},"body":"Currently the only way to specify custom root certificates for\r\nhttps is via the ca option in the https agent. However,\r\nunfortunately this has severe performance and memory implications\r\nas the certificates must be parsed into a data structure for every\r\nSSL connection established.\r\n\r\nThis change allows custom root certificates to be specified on the\r\ncommandline and thus they are loaded in a similar way to how the\r\nroot certificates shipped with node are loaded (i.e. once).\r\nThis is also much more similar to how other language ecosystems\r\n(such as Java) handle loading custom certificates."},"comment":{"url":"https://api.github.com/repos/nodejs/node/issues/comments/140479077","html_url":"https://github.com/nodejs/node/pull/2818#issuecomment-140479077","issue_url":"https://api.github.com/repos/nodejs/node/issues/2818","id":140479077,"user":{"login":"indutny","id":238531,"avatar_url":"https://avatars.githubusercontent.com/u/238531?v=3","gravatar_id":"","url":"https://api.github.com/users/indutny","html_url":"https://github.com/indutny","followers_url":"https://api.github.com/users/indutny/followers","following_url":"https://api.github.com/users/indutny/following{/other_user}","gists_url":"https://api.github.com/users/indutny/gists{/gist_id}","starred_url":"https://api.github.com/users/indutny/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/indutny/subscriptions","organizations_url":"https://api.github.com/users/indutny/orgs","repos_url":"https://api.github.com/users/indutny/repos","events_url":"https://api.github.com/users/indutny/events{/privacy}","received_events_url":"https://api.github.com/users/indutny/received_events","type":"User","site_admin":false},"created_at":"2015-09-15T17:44:29Z","updated_at":"2015-09-15T17:44:29Z","body":"@shigeki I think we could do it in more generic way by exposing either X509 wraps, or X509_STORE wraps. If user will be able to pass them instead of PEM-formatted certs - all performance issues will go away. As an additional bonus - users will be able to manage client certificates and keys in a better way too."}}