add addFile() method
This commit is contained in:
parent
3b3ee6632f
commit
07ddece429
67
README.md
67
README.md
|
@ -20,31 +20,72 @@ Usage
|
|||
```javascript
|
||||
'use strict';
|
||||
|
||||
var https = require('https')
|
||||
, cas
|
||||
;
|
||||
|
||||
// This will add the well-known CAs
|
||||
// to `https.globalAgent.options.ca`
|
||||
require('ssl-root-cas').inject();
|
||||
|
||||
cas = https.globalAgent.options.ca;
|
||||
|
||||
cas.push(fs.readFileSync(path.join(__dirname, 'ssl', '01-cheap-ssl-intermediary-a.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')));
|
||||
require('ssl-root-cas/latest')
|
||||
.inject()
|
||||
.addFile(__dirname + '/ssl/01-cheap-ssl-intermediary-a.pem')
|
||||
.addFile(__dirname + '/ssl/02-cheap-ssl-intermediary-b.pem')
|
||||
.addFile(__dirname + '/ssl/03-cheap-ssl-site.pem')
|
||||
;
|
||||
```
|
||||
|
||||
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),
|
||||
you can require those instead like so:
|
||||
you can require those like so:
|
||||
|
||||
```
|
||||
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
|
||||
===
|
||||
|
||||
|
|
|
@ -128,6 +128,7 @@ function dumpCerts(certs) {
|
|||
+ 'var cas = module.exports = [\n'
|
||||
+ certs.map(function (cert) { return cert.quasiPEM(); }).join(',\n\n')
|
||||
+ '\n];\n'
|
||||
+ "module.exports.rootCas = cas;\n"
|
||||
+ "module.exports.inject = function () {\n"
|
||||
+ " var opts = require('https').globalAgent.options;\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"
|
||||
+ " var opts = require('https').globalAgent.options;\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"
|
||||
+ "};\n"
|
||||
);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"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.",
|
||||
"main": "ssl-root-cas",
|
||||
"scripts": {
|
||||
|
|
Loading…
Reference in New Issue