• 代理应用


    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
    

    生成证书

    证书介绍

    配置 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