- 快速生成自签名证书
- 1. certstrap 安装方法
- 2. 快速生成证书命令,下面的条目可以不看
- 3. CA 证书
- 4. 服务端证书
- 5. 客户端证书
- 6. 查看证书
- 7. PKCS 格式证书
生成自签名证书传统工具是 OpenSSL。不过 OpenSSL 不论是其复杂的命令选项, 还是更加复杂配置都会让人头皮发麻。这里介绍一个更简单的生成自签名证书的工具: certstrap, 项目地址: square/certstrap. 具体安装请参考其文档。
https://github.com/square/certstrap (go 语言写的)
1. certstrap 安装方法go get: installing executables with 'go get' in module mode is deprecated. To adjust and download dependencies of the current module, use 'go get -d'. To install using requirements of the current module, use 'go install'. To install ignoring the current module, use 'go install' with a version, like 'go install example.com/cmd@latest'. For more information, see https://golang.org/doc/go-get-install-deprecation or run 'go help get' or 'go help install'.
export http_proxy="127.0.0.1:1087" export https_proxy="127.0.0.1:1087" go get -u -v github.com/square/certstrap export GO111MODULE=on cd square/certstrap go build go install go get -u -v github.com/square/certigo cd square/certigo go build go install2. 快速生成证书命令,下面的条目可以不看
certstrap init --common-name "ExampleCA" --expires "20 years" certstrap request-cert -cn server -ip 127.0.0.1 -domain "hello.com" certstrap sign server --CA ExampleCA certstrap request-cert -cn client certstrap sign client --CA ExampleCA3. CA 证书
要进行证书自签名, 首先是生成一个自信任的 CA 认证证书。
$: certstrap init --common-name "ExampleCA" --expires "20 years"
命令完成后, 会在当前目录下创建一个新的 out 目录, 生成的证书都在该目录下.
$: tree out out ├── ExampleCA.crl ├── ExampleCA.crt └── ExampleCA.key4. 服务端证书
首先创建 CSR, 即证书签名请求。
$: certstrap request-cert -cn server -ip 127.0.0.1 -domain "*.example.com" Enter passphrase (empty for no passphrase): Enter same passphrase again: Created out/server.key Created out/server.csr
生成 CSR 之后, 通过刚刚生成的 CA 证书进行签名.
$: certstrap sign server --CA ExampleCA Enter passphrase for CA key (empty for no passphrase): Created out/server.crt from out/server.csr signed by out/ExampleCA.key
这样就完成了服务端证书的签名, 签名后的证书就是: out/server.crt.
5. 客户端证书企业内部集群, 通常为了保证服务之间的安全行, 对客户端请求需要进行双向验证。这个时候就需要客户端也提供证书。
客户端证书的生成过程同服务端类似, 更简单一点, 不需要提供证书的 IP 与域名信息。
$: certstrap request-cert -cn client $: certstrap sign client --CA ca6. 查看证书
生成完的证书是否正确, 可以通过 certigo 工具进行查询。项目地址: square/certigo。
安装完成后, 通过以下命令查询证书的具体信息。
$: certigo dump out/server.crt ** CERTIFICATE 1 ** Valid: 2019-08-26 09:34 UTC to 2021-08-26 09:34 UTC Subject: CN=server Issuer: CN=ExampleCA DNS Names: *.example.com IP Addresses: 127.0.0.17. PKCS 格式证书
生成 PKCS 格式的证书可以直接点击安装到系统证书簇中, 方便一些应用 (浏览器等) 的使用。具体生成 PKCS 格式证书, 使用 OpenSSL 命令如下:
$: openssl pkcs12 -export -out client.p12 -inkey out/client.key -in out/client.crt -certfile out/ExampleCA.crt



