# 简单的 CA 认证系统
这是软件大型实验周的课设作品,用来实现一个简单的 CA 系统,它包含以下功能:
* 证书生成:用户提供 Certificate Signing Request (CSR)和 公钥后,系统会自动为用户生成证书并通过邮箱发放,支持 用于 SSL 和代码签名的两类证书。
* 证书吊销:用户发起证书吊销请求后,系统会为其更新 Certificate Revocation List (CRL),但考虑系统负荷,用户的吊销请求会被暂时记录,然后以天为单位更新,客户端可以通过 CRL Distribution Point(CRL 分发点:本系统分发点为:[CRL Distribution Point](http://39.106.168.39/crl.crl))获取最新的 CRL 列表。
* 证书审核:用户的证书请求需要由管理员审核后才能颁发,因此我们写了一个简单的管理员审核功能。
* 密钥对生成:基于 Vue 的 jsrsasign 插件,我们支持客户端本地生成 RSA 公私密钥对。
* 用户认证:包括登录登出注册鉴权等常用操作,使用 Token 实现。
* 代码签名:除了 CA 系统自生功能外,本项目还提供了一个简单的代码签名工具,使用 Java 编写,用来验证项目成果。
## 最终成果
![](https://www.writebug.com/myres/static/uploads/2021/11/22/fbb7deef191ee14249001f74eb4fad68.writebug)
![](https://www.writebug.com/myres/static/uploads/2021/11/22/28dc223c51ea7a9a4f50f94fcc04a2d8.writebug)
![](https://www.writebug.com/myres/static/uploads/2021/11/22/94d6a0920b3f2dace67c98226436ea16.writebug)
![](https://www.writebug.com/myres/static/uploads/2021/11/22/96ee3fd812c82baf84b3c7984eda0bcb.writebug)
![](https://www.writebug.com/myres/static/uploads/2021/11/22/c5cebeb6565b60117210ec958c696c87.writebug)
![](https://www.writebug.com/myres/static/uploads/2021/11/22/99383a161079cc9c1a5e9fa6e1cbe1ef.writebug)
![](https://www.writebug.com/myres/static/uploads/2021/11/22/d31b89c0f292931b5c596d2eb78abd5e.writebug)
## 接口文档
[API 文档](https://documenter.getpostman.com/view/9355097/TVev3jei#ec21108d-d16f-49a6-83c1-4aee91e42ceb)
为了统一前后端请求,所有请求皆使用 POST
### CSR 文件上传
接口:`/api/ca/file`
文件标识:`CSR_FILE`
返回:该接口会返回通过 CSR 解析出的用户公钥及个人信息
```json
{"header":{"code":200,"msg":"ok"},"country":"CN","province":"ShanXi","locality":"TaiYuan","organization":"中北大学","common_name":"junebao.top","email_address":"","organizational_unit":"IT","public_key":"-----BEGIN RSA PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArj/g1UgvJAEnXxlDFHU6\naMwaaZ7BP4zXXWLnfw5kiVTjMPL4kS21do82bygUg4tCPM3pnDt5BpibGwsAZhQ8\nNH527z0Is2yHUT8S/RWT7t7AAJ06NdsEzdyaKAzVHa3xfq6zjVHc11nn0eLB0M0G\nahteIZebHjNhMX3dyVbvUx9e0iAjPDxbCvficbBDhQ1fzZbUoxmS175ENDuoNRY1\nory8+fFAnRhwTJn12mhB/U+QaHiBIfzhC7exMffcUJYK8WYqt0W0+3oS47gyiCt7\nlEyhzQ9UoJVA7O5zsmB39xPLXHIsRLkuAZBIB9YLibZOse5gRCVgd6OYJTyhHbGl\nRwIDAQAB\n-----END RSA PUBLIC KEY-----\n"}
```
## 功能设计
### 系统流程
<img src="https://cdn.jsdelivr.net/gh/520MianXiangDuiXiang520/cdn/img/1606738791416-1606738791402.png" style="zoom:67%;" />
### 数据库设计
```sql
CREATE TABLE `ca_requests` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`created_at` datetime DEFAULT NULL COMMENT '字段创建时间',
`updated_at` datetime DEFAULT NULL COMMENT '更新时间',
`deleted_at` datetime DEFAULT NULL COMMENT '删除时间',
`user_id` int NOT NULL COMMENT '申请证书的用户ID',
`state` int unsigned NOT NULL COMMENT '证书状态(1:待审核, 2: 审核通过, 3:审核未通过)',
`public_key` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '公钥',
`country` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '国家',
`province` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '州市',
`locality` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '地区',
`organization` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '组织',
`organization_unit_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '部门',
`common_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '姓名',
`email_address` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '邮箱',
PRIMARY KEY (`id`),
KEY `idx_ca_requests_deleted_at` (`deleted_at`)
) ENGINE=InnoDB AUTO_INCREMENT=46 DEFAULT CHARSET=utf8;
```
```sql
CREATE TABLE `certificates` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
`deleted_at` datetime DEFAULT NULL,
`user_id` int NOT NULL COMMENT '证书拥有者ID',
`state` int unsigned NOT NULL COMMENT '状态(1 代表在使用中,2代表已撤销或过期)',
`request_id` int NOT NULL COMMENT '证书请求ID',
`expire_time` bigint NOT NULL COMMENT '过期时间戳',
PRIMARY KEY (`id`),
KEY `idx_certificates_deleted_at` (`deleted_at`)
) ENGINE=InnoDB AUTO_INCREMENT=39 DEFAULT CHARSET=utf8;
```
```sql
CREATE TABLE `crls` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
`deleted_at` datetime DEFAULT NULL,
`certificate_id` int NOT NULL COMMENT '证书ID',
`input_time` bigint NOT NULL COMMENT '加入时间戳',
PRIMARY KEY (`id`),
KEY `idx_crls_deleted_at` (`deleted_at`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 COMMENT='证书吊销列表';
```
```sql
CREATE TABLE `user_tokens` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
`deleted_at` datetime DEFAULT NULL,
`user_id` int NOT NULL,
`token` varchar(64) NOT NULL,
`expire_time` bigint NOT NULL,
PRIMARY KEY (`id`),
KEY `idx_user_tokens_deleted_at` (`deleted_at`)
) ENGINE=InnoDB AUTO_INCREMENT=81 DEFAULT CHARSET=utf8;
```
```sql
CREATE TABLE `users` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
`deleted_at` datetime DEFAULT NULL,
`username` varchar(16) NOT NULL,
`password` varchar(255) NOT NULL,
`email` varchar(255) DEFAULT NULL,
`authority` int DEFAULT NULL COMMENT '权限,1表示系统管理员',
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`),
KEY `idx_users_deleted_at` (`deleted_at`)
) ENGINE=InnoDB AUTO_INCREMENT=62 DEFAULT CHARSET=utf8;
```
## 背景知识
### PKI
### 加密算法
#### 对称加密:3DES
> 3DES(或称为 Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次 DES 加密算法。由于计算机运算能力的增强,原版 DES 密码的密钥长度变得容易被暴力破解;3DES 即是设计用来提供一种相对简单的方法,即通过增加 DES 的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。
* [DES](http://39.106.168.39/#/detail/30)
#### 非对称加密 RSA
* [RSA](http://39.106.168.39/#/detail/39)
### 哈希算法
#### MD5
#### SHA256
### X.509
> X.509 是密码学里公钥证书的格式标准。X509 证书己应用在包括 TLS/SSL 在内的众多
>
> Internet 协议里,同时它也用在很多非在线应用场景里,比如电子签名服务。X509 证书里含有公钥、身份信息(比如网络主机名,组织的名称或个体名称等)和签名信息(可以是证书签发机构 CA 的签名,也可以是自签名)。对于一份经由可信的证书签发机构签名或者可以通过其它方式验证的证书,证书的拥有者就可以用证书及相应的私钥来创建安全的通信,对文档进行数字签名.另外除了证书本身功能,Ⅹ509 还附带了证书吊销列表和用于从最终对证书进行签�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
这是软件大型实验周的课设作品,用来实现一个简单的 CA 系统,它包含以下功能: 证书生成:用户提供 Certificate Signing Request (CSR)和 公钥后,系统会自动为用户生成证书并通过邮箱发放,支持 用于 SSL 和代码签名的两类证书。 证书吊销:用户发起证书吊销请求后,系统会为其更新 Certificate Revocation List (CRL),但考虑系统负荷,用户的吊销请求会被暂时记录,然后以天为单位更新,客户端可以通过 CRL Distribution Point(CRL 分发点:本系统分发点为:CRL Distribution Point)获取最新的 CRL 列表。 证书审核:用户的证书请求需要由管理员审核后才能颁发,因此我们写了一个简单的管理员审核功能。 密钥对生成:基于 Vue 的 jsrsasign 插件,我们支持客户端本地生成 RSA 公私密钥对。 用户认证:包括登录登出注册鉴权等常用操作,使用 Token 实现。 代码签名:除了 CA 系统自生功能外,本项目还提供了一个简单的代码签名工具,使用 Java 编写,用来验证项目成果。
资源推荐
资源详情
资源评论
收起资源包目录
100012592-基于Go+MySQL实现简单的CA认证系统.zip (69个子文件)
simpleca
makefile 51B
go.mod 890B
.travis.yml 1KB
dockerfile 269B
go.sum 19KB
Tes
go.mod 120B
go.sum 5KB
src
message
auth.go 1KB
ca.go 2KB
audit.go 1KB
user.go 431B
tools
log.go 266B
encrypt.go 4KB
encrypt_test.go 911B
file.go 284B
certificate_test.go 2KB
certificate.go 5KB
check
auth.go 876B
ca.go 1KB
audit.go 605B
user.go 249B
ca_test.go 585B
dao
auth_test.go 850B
audit_test.go 436B
auth.go 5KB
ca.go 4KB
audit.go 2KB
user.go 2KB
ca_test.go 1KB
tables.go 1KB
definition
fail.html 2KB
time.go 202B
user.go 1KB
email_template.go 738B
csr.go 1KB
success.html 2KB
certificate.go 243B
middleware
cors.go 1KB
auth.go 505B
permission.go 287B
routes
auth.go 1KB
ca.go 2KB
audit.go 1KB
user.go 577B
server
auth.go 2KB
ca.go 9KB
audit.go 6KB
user.go 614B
setting.go 6KB
LICENSE 1KB
codeSignTool
src
src
chubao
junebao
top
BaseDuck.java 222B
Mallard.java 387B
RubberDuck.java 312B
top
junebao
CodeSign.java 4KB
Hash.java 2KB
Credentials.java 3KB
RSAPemCoder.java 4KB
Key.java 2KB
RSA_PEM.java 10KB
src.iml 561B
setting_example.json 1KB
key.des 2KB
simpleCA.sql 5KB
.gitignore 450B
run.sh 38B
routes.go 458B
README.md 12KB
code_helper.py 4KB
main.go 467B
共 69 条
- 1
资源评论
神仙别闹
- 粉丝: 2636
- 资源: 7567
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功