npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

node-easy-cert-fork

v1.3.2

Published

A tool for managing self-signed certifications

Downloads

7

Readme

node-easy-cert-fork

npm download

用于管理自生成的 HTTPS 证书的插件

本插件可以生成自签名的 root 证书,并基于该 root 证书,生成各个域名的 HTTPS 证书。

使用方式

const CertManager = require("cert-manager");

const options = {
  rootDirPath: "/the/full/path/of/the/dir", // default to /{USER_HOME}/{.node_easy_certs}/
  // the default attrs of a generated cert, you can change it here
  defaultCertAttrs: [
    { name: "countryName", value: "CN" },
    { name: "organizationName", value: "CertManager" },
    { shortName: "ST", value: "SH" },
    { shortName: "OU", value: "CertManager SSL" }
  ]
};

const crtMgr = new CertManager(options);
const rootOptions = {
  commonName: "theNameYouLike"
};

crtMgr.generateRootCA(rootOptions);

配置项(可选)

rootDirPath

证书目录的全路径,如果配置,优先级高于 rootDirName

证书生成目录

默认情况下,证书都会生成在 {USER_HOME}/.node_easy_certs/。 如果配置了rootDirPath, 那么所有的证书都会生成在该目录下。

方法

generateRootCA(options, callback(error, keyPath, crtPath))

在证书根目录下面生成根证书 rootCA.crt 和 rootCA.key。生成后,请选择 rootCA.crt,安装并信任,否则您的组件可能工作失败。

返回

参数

  • options object

    • options.commonName string required

    rootCA 的 commonName,安装后,将会作为系统里面的证书名称显示在列表中

    • options.overwrite bool optional

    default: false

    是否覆盖已经存在的 rootCA,默认为 false。在 false 的情形下,如果遇到已经存在的 rootCA,会返回错误 ROOT_CA_EXISTED 并终止创建。

  • callback function optional

    • error 如果发生错误,将放入 error 参数
    • keyPath 生成好的 rootCA.key 的全路径
    • crtPath 生成好的 rootCA.crt 的全路径

调用示例

const options = {
  commonName: 'yourPreference'
};

crtMgr.generateRootCA(options, (error, keyPath, crtPath) {
  // 如果根证书已经存在,且没有设置overwrite为true,则需要捕获
  if (error === 'ROOT_CA_EXISTED') {
    // 处理当证书已经存在的情形
  }

  if(!error) {
    // 证书需要被安装并信任,可以在此打开该目录并给出提示,也可以进行其他操作
    const isWin = /^win/.test(process.platform);
    const certDir = path.dirname(keyPath);
    if(isWin){
      exec("start .",{ cwd : certDir });
    }else{
      exec("open .",{ cwd : certDir });
    }
  }
});

getCertificate(hostname, callback([error, keyContent, crtContent]))

获取指定域名下的证书的 key 和 crt 内容,如果证书还不存在,则会先创建该证书。

证书的生成基于生成的 rootCA 根证书来签名,如果 rootCA 根证书还未创建,则会终止并抛出错误:ROOT_CA_NOT_EXISTS

返回

参数

  • hostname string 所要获取证书内容的 hostname

  • callback function 获取到内容后的回调函数,主要包含 key 的内容和 crt 的内容,如果获取过程中出现异常,则放入 error 变量中

获取子域名的证书,要求已经存在根证书,否则会提示失败。组件会抛出对应的异常。您可以捕获并通过 generateRootCA()来生成根证书。并安装并请信任该根证书

调用实例

certManager.getCertificate("localhost", (error, keyContent, crtContent) => {
  // 如果根证书还没有生成,需要先生成根证书
  if (error === "ROOT_CA_NOT_EXISTS") {
    // handle the issue
  }

  // 正常操作
  // ...
});

getRootDirPath()

获取由当前 cert-manager 实例所管理的证书的根目录

返回

  • string 当前 cert-manager 实例所管理的证书所对应的根目录。默认为{USER_HOME}/.node_easy_certs/

getRootCAFilePath()

获取根证书的全路径

返回

  • string 根证书的全路径,如果根证书不存在,将返回空字符串

isRootCAFileExists()

获取根证书是否存在的状态

ifRootCATrusted()

检测 RootCA 是否已经被信任

1.2.1 新增对 Windows 平台的支持

返回

  • bool 是否存在根证书

clearCerts()

清除当前目录下所有的证书文件

返回

参数

  • callback function 删除结束后的回调函数,如果删除过程中有错误,将会被放入 error 对象中

错误码

在运行过程中,会根据错误原因抛出指定错误码,包括如下

| 错误码 | 释义 | 备注 | | ------------------------------- | :-----------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------: | | ROOT_CA_NOT_EXISTS | root 根证书不存在。当我们执行的某个操作依赖于根证书,而根证书不存在时,就会抛出该异常。我们可以尝试生成根证书 | | | ROOT_CA_COMMON_NAME_UNSPECIFIED | commonName 未设置。比如当我们调用genearteRootCA()时,commonName 是必传的。 | | | ROOT_CA_EXISTED | rootCA 根证书已经存在。当我们重新生成证书,如果证书已经存在,会抛出该异常。 | 可以在调用generateRootCA时,传入 option.overwirte=true来覆盖 |