add addFile() method
This commit is contained in:
parent
3b3ee6632f
commit
07ddece429
67
README.md
67
README.md
|
@ -20,31 +20,72 @@ Usage
|
||||||
```javascript
|
```javascript
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var https = require('https')
|
|
||||||
, cas
|
|
||||||
;
|
|
||||||
|
|
||||||
// This will add the well-known CAs
|
// This will add the well-known CAs
|
||||||
// to `https.globalAgent.options.ca`
|
// to `https.globalAgent.options.ca`
|
||||||
require('ssl-root-cas').inject();
|
require('ssl-root-cas/latest')
|
||||||
|
.inject()
|
||||||
cas = https.globalAgent.options.ca;
|
.addFile(__dirname + '/ssl/01-cheap-ssl-intermediary-a.pem')
|
||||||
|
.addFile(__dirname + '/ssl/02-cheap-ssl-intermediary-b.pem')
|
||||||
cas.push(fs.readFileSync(path.join(__dirname, 'ssl', '01-cheap-ssl-intermediary-a.pem')));
|
.addFile(__dirname + '/ssl/03-cheap-ssl-site.pem')
|
||||||
cas.push(fs.readFileSync(path.join(__dirname, 'ssl', '02-cheap-ssl-intermediary-b.pem')));
|
;
|
||||||
cas.push(fs.readFileSync(path.join(__dirname, 'ssl', '03-cheap-ssl-site.pem')));
|
|
||||||
```
|
```
|
||||||
|
|
||||||
For the sake of version consistency this package ships with the CA certs that were
|
For the sake of version consistency this package ships with the CA certs that were
|
||||||
available at the time it was published.
|
available at the time it was published,
|
||||||
|
but for the sake of security I recommend you use the latest ones.
|
||||||
|
|
||||||
If you want the latest certificates (downloaded as part of the postinstall process),
|
If you want the latest certificates (downloaded as part of the postinstall process),
|
||||||
you can require those instead like so:
|
you can require those like so:
|
||||||
|
|
||||||
```
|
```
|
||||||
require('ssl-root-cas/latest').inject();
|
require('ssl-root-cas/latest').inject();
|
||||||
```
|
```
|
||||||
|
|
||||||
|
You can use the ones that shippped with package like so:
|
||||||
|
|
||||||
|
```
|
||||||
|
require('ssl-root-cas').inject();
|
||||||
|
```
|
||||||
|
|
||||||
|
API
|
||||||
|
---
|
||||||
|
|
||||||
|
### inject()
|
||||||
|
|
||||||
|
I thought it might be rude to modify `https.globalAgent.options.ca` on `require`,
|
||||||
|
so I afford you the opportunity to `inject()` the certs at your leisure.
|
||||||
|
|
||||||
|
`inject()` keeps track of whether or not it's been run, so no worries about calling it twice.
|
||||||
|
|
||||||
|
### addFile(filepath)
|
||||||
|
|
||||||
|
This is just a convenience method so that you don't
|
||||||
|
have to require `fs` and `path` if you don't need them.
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
require('ssl-root-cas/latest')
|
||||||
|
.addFile(__dirname + '/ssl/03-cheap-ssl-site.pem')
|
||||||
|
;
|
||||||
|
```
|
||||||
|
|
||||||
|
is the same as
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
var https = require('https')
|
||||||
|
, cas
|
||||||
|
;
|
||||||
|
|
||||||
|
cas = https.globalAgent.options.ca || [];
|
||||||
|
cas.push(fs.readFileSync(path.join(__dirname, 'ssl', '03-cheap-ssl-site.pem')));
|
||||||
|
```
|
||||||
|
|
||||||
|
### rootCas
|
||||||
|
|
||||||
|
If for some reason you just want to look at the array of Root CAs without actually injecting
|
||||||
|
them, or you just prefer to
|
||||||
|
`https.globalAgent.options.ca = require('ssl-root-cas').rootCas;`
|
||||||
|
yourself, well, you can.
|
||||||
|
|
||||||
BAD IDEAS
|
BAD IDEAS
|
||||||
===
|
===
|
||||||
|
|
||||||
|
|
|
@ -128,6 +128,7 @@ function dumpCerts(certs) {
|
||||||
+ 'var cas = module.exports = [\n'
|
+ 'var cas = module.exports = [\n'
|
||||||
+ certs.map(function (cert) { return cert.quasiPEM(); }).join(',\n\n')
|
+ certs.map(function (cert) { return cert.quasiPEM(); }).join(',\n\n')
|
||||||
+ '\n];\n'
|
+ '\n];\n'
|
||||||
|
+ "module.exports.rootCas = cas;\n"
|
||||||
+ "module.exports.inject = function () {\n"
|
+ "module.exports.inject = function () {\n"
|
||||||
+ " var opts = require('https').globalAgent.options;\n"
|
+ " var opts = require('https').globalAgent.options;\n"
|
||||||
+ " if (!opts.ca || !opts.ca.__injected) { opts.ca = (opts.ca||[]).concat(cas); }\n"
|
+ " if (!opts.ca || !opts.ca.__injected) { opts.ca = (opts.ca||[]).concat(cas); }\n"
|
||||||
|
@ -137,7 +138,7 @@ function dumpCerts(certs) {
|
||||||
+ "module.exports.addFile = function (filepath) {\n"
|
+ "module.exports.addFile = function (filepath) {\n"
|
||||||
+ " var opts = require('https').globalAgent.options;\n"
|
+ " var opts = require('https').globalAgent.options;\n"
|
||||||
+ " opts.ca = opts.ca || [];\n"
|
+ " opts.ca = opts.ca || [];\n"
|
||||||
+ " opts.ca.push(require('fs').readFileSync(require('path').join.apply(null, filepath.split(/\//g))));\n"
|
+ " opts.ca.push(require('fs').readFileSync(require('path').join.apply(null, filepath.split(/\\//g))));\n"
|
||||||
+ " return module.exports;\n"
|
+ " return module.exports;\n"
|
||||||
+ "};\n"
|
+ "};\n"
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "ssl-root-cas",
|
"name": "ssl-root-cas",
|
||||||
"version": "1.0.5",
|
"version": "1.1.0",
|
||||||
"description": "The module you need to solve node's SSL woes when including a custom certificate.",
|
"description": "The module you need to solve node's SSL woes when including a custom certificate.",
|
||||||
"main": "ssl-root-cas",
|
"main": "ssl-root-cas",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
Loading…
Reference in New Issue