本项目(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 的配置。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
。LOG_TEST_MODE = false
-
path_to_qcs/init.sql
中可以设置数据库的时区,建议使用与本地或云端相同的时区,以避免混淆。 -
如果您了解如何使用 Redis,可于
path_to_qcs/redis.conf
更动 Redis 的默认值。
使用 docker 和 docker compose 快速启动服务器
确保您已经在您的操作系统上安装了 docker
和 docker compose
。在项目根目录中运行以下命令:
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
进行编译和运行,或者直接运行:
go run ./init/Init.go
go run ./server.go
即可完成构建,若未更改配置设置,默认运行端口 :33333
启动服务器后访问以下网址以查看:
默认:http://localhost:33333/swagger/index.html
如果使用 TLS 或不同端口,请相应调整网址。
SDK & 示例
您可以在 path_to_qcs/sdk
查看 SDK 以及使用示例,目前支持 Python、TypeScript、Golang。
於 path_to_qcs/sdk/python
打开终端,输入:
# 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.
於 path_to_qcs/sdk/typescript
打开终端,输入:
npm i
npm run start # SDK Usage
npm run verify # Verify RSA signature.
於 path_to_qcs/sdk/go
打开终端,输入:
cd ./example
go run usage.go # SDK Usage.
# If you want to run the verification test case, you can call VerifyExample().