Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mmqnym/quickcerts

A simple certificate server that can be used to issue certificates for your product to verify that it has been activated.
https://github.com/mmqnym/quickcerts

certificate gin golang http-server https-server postgresql python qcs redis typescript

Last synced: about 4 hours ago
JSON representation

A simple certificate server that can be used to issue certificates for your product to verify that it has been activated.

Awesome Lists containing this project

README

        

# QuickCertS


app version
Codecov
CodeQL status

license


go version
python version
node version

## 语言


English
繁體中文
简体中文

## 介绍

本项目(QuickCertS,QCS)旨在帮助开发者快速建立一个证书服务器,用于为您的应用程序颁发证书(密钥和签名)。您可以嵌入公钥到您的应用中,并同时使用签名来验证密钥是否由您架设的证书服务器颁发,实现产品激活功能。

此外,还提供了临时许可证的支持,如果您的应用需要试用期或者产品需要基于许可周期而不是永久授权,您可以使用相关 API 来实现这一功能。

## 技术

架构:

- 服务器框架:Gin Web Framework
- 緩存:Redis
- 数据库:PostgreSQL

公私钥存储规范:PKCS8

签名:

| SHA2 | SHA3 |
| ------- | -------- |
| SHA-256 | SHA3-256 |
| SHA-384 | SHA3-384 |
| SHA-512 | SHA3-512 |

使用 RSA-PSS 填充自动计算的长度

## 配置

- 您可以在 `path_to_qcs/configs/allowlist.toml` 文件中配置管理员的用户名和令牌,用于管理员 API 的身份验证。

- 您可以在 `path_to_qcs/configs/cache.toml` 中将默认的配置更改为您期望的配置。

- 您可以在 `path_to_qcs/configs/database.toml` 文件中更改默认配置为您所期望的配置。但如果您之后使用 Docker Compose 启动服务器,则需要相应更改 Docker Compose 的配置。

```yml
services:
qcs-db: # <- 容器名称对应主机名称
build:
context: .
dockerfile: Dockerfile.database
networks:
- qcs_subnet
ports:
- "33332:5432"
environment:
POSTGRES_USER: quickcerts
POSTGRES_PASSWORD: password # <- 建议更改数据库密码
POSTGRES_DB: quickcerts
```

- `path_to_qcs/configs/server.toml` 包含了服务器的所有相关设置,建议在正式运行之前完成配置。
※请将以下的设置改为 `false`。

```toml
LOG_TEST_MODE = false
```

- `path_to_qcs/init.sql` 中可以设置数据库的时区,建议使用与本地或云端相同的时区,以避免混淆。

- 如果您了解如何使用 Redis,可于 `path_to_qcs/redis.conf` 更动 Redis 的默认值。

## 构建

- ### Docker

> 使用 docker 和 docker compose 快速启动服务器

确保您已经在您的操作系统上安装了 `docker` 和 `docker compose`。在项目根目录中运行以下命令:

```sh
docker compose up --build -d
```

即可完成构建,若未更改配置设置,默认运行端口 `:33333`

### 可执行文件

> 使用 Release 提供的可执行文件

- 创建一个 PostgreSQL 数据库,并将相关配置设置到 `path_to_qcs/configs/database.toml`。

- 至 Release 根据您的操作系统选择要下载的压缩文件,然后在项目根目录中运行 `./init/Init(.exe)`。

- 在项目根目录中运行 `server(.exe)`。

即可完成构建,若未更改配置设置,默认运行端口 `:33333`

### 源代码

> 从源代码编译并运行,或直接运行

请使用 Golang 版本 `>= 1.21.1` 进行编译和运行,或者直接运行:

```sh
go run ./init/Init.go
go run ./server.go
```

即可完成构建,若未更改配置设置,默认运行端口 `:33333`

## API

> 启动服务器后访问以下网址以查看:

默认:http://localhost:33333/swagger/index.html

如果使用 TLS 或不同端口,请相应调整网址。

## SDK

> SDK & 示例

您可以在 `path_to_qcs/sdk` 查看 SDK 以及使用示例,目前支持 Python、TypeScript、Golang。

- ### Python

於 `path_to_qcs/sdk/python` 打开终端,输入:

```sh
# Here uses pyenv + virtualenv + pip,
# you can also use your preferred environment/package management tool.
virtualenv -p "path_to_python" venv
./venv/Script/activate
pip install -r "./requirements.txt"
cd ./example

python ./usage.py # SDK Usage
python ./verify.py # Verify RSA signature.
```

- ### TypeScript

於 `path_to_qcs/sdk/typescript` 打开终端,输入:

```sh
npm i

npm run start # SDK Usage
npm run verify # Verify RSA signature.
```

- ### Golang

於 `path_to_qcs/sdk/go` 打开终端,输入:

```sh
cd ./example

go run usage.go # SDK Usage.
# If you want to run the verification test case, you can call VerifyExample().
```