ADD file via upload

main
p6s4t3fer 4 months ago
parent e298ad4457
commit 348f90079f

@ -0,0 +1,243 @@
# 小型CA系统
这是一个前后端分离的小型CA证书颁发机构系统用于管理数字证书的申请、签发、验证和吊销。
## 技术栈
### 后端
- Python 3.8+
- Flask 2.3.3
- Flask-SQLAlchemy数据库ORM
- PyMySQLMySQL驱动
- cryptography证书操作
- PyJWTToken认证
- bcrypt密码加密
### 前端
- Vue 3
- Vue Router 4
- Element PlusUI组件库
- AxiosHTTP客户端
- Vite构建工具
### 数据库
- MySQL 5.7+
## 项目结构
```
CA_system/
├── backend/ # Flask后端
│ ├── app.py # 应用入口
│ ├── config.py # 配置文件
│ ├── models.py # 数据模型
│ ├── requirements.txt # Python依赖
│ ├── routes/ # 路由模块
│ │ ├── auth.py # 认证路由
│ │ ├── certificate.py # 证书路由
│ │ └── admin.py # 管理员路由
│ ├── utils/ # 工具函数
│ │ ├── auth_utils.py # 认证工具
│ │ └── cert_utils.py # 证书工具
│ └── middleware/ # 中间件
│ └── auth_middleware.py
├── frontend/ # Vue前端
│ ├── src/
│ │ ├── api/ # API接口
│ │ ├── views/ # 页面组件
│ │ ├── layouts/ # 布局组件
│ │ ├── router/ # 路由配置
│ │ └── utils/ # 工具函数
│ ├── package.json
│ └── vite.config.js
├── database_supplement.sql # 数据库补充SQL
└── README.md
```
## 功能特性
### 用户功能
1. **用户注册和登录**
- 用户注册新账号
- 用户名密码登录
- Token认证机制
2. **证书查询**
- 查看所有已颁发的证书
- 显示证书ID、创建时间、过期时间、状态
- 查看证书详细信息
3. **证书下载**
- 下载.cer格式的证书文件
4. **证书吊销**
- 用户可吊销自己的证书
- 吊销后的证书将被加入CRL证书吊销列表
5. **证书注册**
- 填写证书基本信息(国家、省、市、组织、部门、域名、邮箱)
- 上传CSR文件或自动生成RSA密钥对
- 提交公钥后等待管理员审核
6. **证书验证**
- 上传.cer证书文件
- 验证证书是否由本CA签发
- 显示证书详细信息
### 管理员功能
1. **证书审核**
- 查看待审核的证书申请
- 同意申请并签发证书
- 拒绝申请
2. **证书管理**
- 查看所有证书
- 吊销证书
## 安装和运行
### 1. 数据库设置
首先执行数据库创建脚本和补充SQL
```bash
# 连接到MySQL
mysql -u root -p
# 执行数据库创建脚本根据您提供的SQL
# 然后执行补充SQL
mysql -u root -p Simple_CA < init_database.sql
```
### 2. 后端设置
```bash
# 切换到后端目录
cd backend
# 安装Python依赖
pip install -r requirements.txt
# 运行Flask应用
python app.py
```
后端服务将运行在 `http://localhost:5000`
### 3. 前端设置
```bash
# 切换到前端目录
cd frontend
# 安装依赖
npm install
# 开发模式运行
npm run dev
```
前端服务将运行在 `http://localhost:8080`
### 4. 创建管理员账号
首次运行需要创建管理员账号,可以通过以下方式:
1. 使用MySQL命令行创建
```sql
INSERT INTO users (username, password, authority, created_at, updated_at)
VALUES ('admin', '<bcrypt>', 1, NOW(), NOW());
```
2. 或先注册普通账号然后在数据库中修改authority字段为1
## 配置说明
### 后端配置backend/config.py
```python
MYSQL_HOST = '127.0.0.1' # MySQL主机
MYSQL_PORT = 3306 # MySQL端口
MYSQL_USER = 'root' # MySQL用户名
MYSQL_PASSWORD = 'sxd123' # MySQL密码
MYSQL_DATABASE = 'Simple_CA' # 数据库名
SECRET_KEY = 'your-secret-key-change-in-production' # JWT密钥
CERT_VALIDITY_DAYS = 365 # 证书有效期(天)
```
### 前端配置frontend/vite.config.js
代理配置已设置开发环境下会自动代理API请求到后端。
## API接口
### 认证接口
- `POST /api/auth/register` - 用户注册
- `POST /api/auth/login` - 用户登录
- `POST /api/auth/logout` - 用户退出
- `GET /api/auth/me` - 获取当前用户信息
### 证书接口
- `GET /api/certificate/list` - 获取证书列表
- `GET /api/certificate/detail/:id` - 获取证书详情
- `GET /api/certificate/download/:id` - 下载证书
- `POST /api/certificate/revoke/:id` - 吊销证书
- `POST /api/certificate/verify` - 验证证书
- `POST /api/certificate/request` - 申请证书
- `POST /api/certificate/request/upload-csr` - 上传CSR文件
- `POST /api/certificate/request/submit-key` - 提交公钥
- `POST /api/certificate/generate-keypair` - 生成密钥对
### 管理员接口
- `GET /api/admin/requests` - 获取证书申请列表
- `POST /api/admin/request/:id/approve` - 同意申请
- `POST /api/admin/request/:id/reject` - 拒绝申请
- `GET /api/admin/certificates` - 获取所有证书
- `POST /api/admin/certificate/:id/revoke` - 吊销证书
## 注意事项
1. **CA根证书**首次运行时会自动生成CA根证书和私钥存储在`backend/ca/`目录下。请妥善保管CA私钥。
2. **私钥安全**:系统不会存储用户的私钥,用户需自行保存生成的私钥。
3. **证书格式**系统使用PEM格式的X.509证书。
4. **生产环境**:部署到生产环境前,请:
- 修改`SECRET_KEY`
- 使用HTTPS
- 配置适当的数据库权限
- 设置防火墙规则
## 数据库设计补充说明
已补充以下字段:
- `certificates.certificate_content` - 存储证书内容
- `certificates.serial_number` - 证书序列号
- `ca_requests.csr_content` - CSR文件内容
## 开发说明
### 后端开发
- 使用Flask Blueprint组织路由
- 使用SQLAlchemy ORM操作数据库
- JWT Token进行身份认证
- 使用装饰器实现权限控制
### 前端开发
- Vue 3 Composition API
- Element Plus组件库
- Axios进行API调用
- Vue Router进行路由管理
Loading…
Cancel
Save