代理应用
SSL 证书生成
概述
本文档提供使用 cfssl 生成自签名证书的示例。
假设实例集群拓扑如下:
Name | Host IP | Services |
---|---|---|
node1 | 127.0.0.1 | server,client |
初始化证书颁发机构
生成 cfssl 的默认配置,以便于之后修改:
mkdir ~/cfssl
cd ~/cfssl
cfssl print-defaults config > ca-config.json
cfssl print-defaults csr > ca-csr.json
生成证书
证书介绍
- server certificate 由 server 使用,为客户端验证 server 身份。
- client certificate 用于通过 server 验证客户端。
配置 CA 选项
ca-config.json
{
"signing": {
"default": {
"expiry": "43800h"
},
"profiles": {
"server": {
"expiry": "43800h",
"usages": [
"signing",
"key encipherment",
"server auth",
"client auth"
]
},
"client": {
"expiry": "43800h",
"usages": [
"signing",
"key encipherment",
"client auth"
]
}
}
}
}
ca-csr.json
{
"CN": "HZero CA",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "Shanghai",
"O": "hzero",
"ST": "Shanghai"
}
]
}
生成 CA 证书
cfssl gencert -initca ca-csr.json | cfssljson -bare ca -
将会生成以下几个文件:
ca-key.pem
ca.csr
ca.pem
生成服务器端证书
hostname
中为各组件的 IP 地址,以及127.0.0.1
,可以替换为服务端 IP
echo '{"CN":"server","hosts":[""],"key":{"algo":"rsa","size":2048}}' | cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=server -hostname="127.0.0.1" - | cfssljson -bare server
openssl pkcs8 -topk8 -nocrypt -in server-key.pem -out server-key-pkcs8.pem
将会生成以下几个文件:
server-key.pem
server.csr
server.pem
生成客户端证书
echo '{"CN":"client","hosts":[""],"key":{"algo":"rsa","size":2048}}' | cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=client -hostname="" - | cfssljson -bare client
openssl pkcs8 -topk8 -nocrypt -in client-key.pem -out client-key-pkcs8.pem
将会生成以下几个文件:
client-key.pem
client.csr
client.pem
参考
部署方式
配置文件路径可以参考 官方文档
可以在 jar 包目录下新建 config
目录,放置配置文件 application-dev.yml
,配置参数请参考 文档 里的代理配置参数
java -jar -Xms512m -Xmx1024m hzero-ebank-proxy.jar -Dspring.profiles.active=dev