TLS
启动 TLS/SSL
概述#
为了能在服务中启动 TLS/SSL,我们需要服务证书和服务证书密钥。
启动器会从 boot.yaml 中读取 CertEntry 部分,并且载入到内存中。
DOMAIN#
CertEntry 支持通过 DOMAIN 区分环境
生成 Self-Signed Certificate#
我们推荐使用 cfssl 来生成自定义证书。
1.下载 cfssl & cfssljson#
用 rk 命令行安装 cfssl 与 cfssljson
$ go get github.com/rookie-ninja/rk/cmd/rk $ rk install cfssl $ rk install cfssljson
2.生成 CA#
$ cfssl print-defaults config > ca-config.json
$ cfssl print-defaults csr > ca-csr.json
根据需要修改 ca-config.json 和 ca-csr.json。
$ cfssl gencert -initca ca-csr.json | cfssljson -bare ca -
3.生成服务端证书#
server.csr,server.pem 和 server-key.pem 将会被生成。
$ cfssl gencert -config ca-config.json -ca ca.pem -ca-key ca-key.pem -profile www csr.json | cfssljson -bare server
快速开始#
1.安装#
$ go get github.com/rookie-ninja/rk-boot/v2
$ go get github.com/rookie-ninja/rk-grpc/v2
2.创建 boot.yaml#
---
cert:
- name: my-cert
certPemPath: "server.pem"
keyPemPath: "server-key.pem"
grpc:
- name: greeter
port: 8080
# gwPort: 8081 # 可选项,如果不指定,会使用与 port 一样的端口
enabled: true
certEntry: "my-cert"
$ curl --insecure https://localhost:8080/v1/hello
{"message":"hello!"}
.
├── boot.yaml
├── go.mod
├── go.sum
├── main.go
├── server-key.pem
└── server.pem
Cheers#
YAML 选项#
cert:
- name: my-cert # Required
description: "Description of entry" # Optional, default: ""
domain: "*" # Optional, default: "*"
caPath: "certs/ca.pem" # Optional, default: ""
certPemPath: "certs/server-cert.pem" # Optional, default: ""
keyPemPath: "certs/server-key.pem" # Optional, default: ""