分享一个 golang 的数字证书开发库

· · 1033 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

go-certool

这个库主要设计目标是用来在去中心网络中开发 CA 功能,
密钥使用 ECC 算法,不推荐也不支持 RSA 密钥;

接口

  • Keychain

用来操作证书信任链,将业务系统中识别的 CA 全部添加到 keychain 对象中,keychain 可以序列化到磁盘上,主要用来验证证书是否合法

type Keychain interface {
    Verify(cert *x509.Certificate) (chains [][]*x509.Certificate, err error)
    VerifyCRL(crl *pkix.CertificateList) error
    Serialize() ([]byte, error)
    AppendRoot(cert *x509.Certificate) error
    AppendIntermediate(cert *x509.Certificate) error
    Remove(cert *x509.Certificate) error
}
  • Keytool

用来生成根证书、中间证书、签发证书、撤销证书

type Keytool interface {
    ParsePriv(buf, pwd []byte) (*ecdsa.PrivateKey, error)
    ParseCert(buf []byte) (interface{}, error)
    GenKey(pwd string) (privRaw, pubRaw []byte)
    GenCsr(subject *Subject, key *ecdsa.PrivateKey) (csrRaw []byte, err error)
    GenCert(ca *CA, user *User) (certRaw []byte, err error)
    RevokedCert(rca *x509.Certificate, rkey *ecdsa.PrivateKey, expiry time.Time, revoked ...*x509.Certificate) ([]byte, error)
}

例子

在 cmd/main.go 中提供了使用 certool 开发的 cmd 工具,提供如下功能:

$> go build -o certool cmd/main.go
$> ./certool --help

NAME:
   ECC 证书工具

USAGE:
   main [global options] command [command options] [arguments...]

VERSION:
   0.0.1

AUTHOR:
   liangc <cc14514@icloud.com>

COMMANDS:
   gen-rca   创建根证书
   gen-ica   创建中间证书
   gen-cert  签发证书
   gen-key   创建 ECC 私钥
   show      查看证书信息
   verify    查看证书信息
   keychain  操作CA信任链
   help, h   Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --homedir value, -d value  home dir (default: "/tmp")
   --help, -h                 show help
   --version, -v              print the version

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:

查看原文:分享一个 golang 的数字证书开发库

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1033 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传