此PKI项目基于CFSSL,时隔两年,重启,本文只是应用,部署。
早在2022就手搓了一个简陋的基于PHP的PKI系统,实现了签发证书的归档查看,私钥,公钥签发记录。签发双向SSL证书,在此期间一直致力于手搓OCSP响应,很遗憾并没有搞出什么成果。
CFSSL有多NB就不用扯了,直接上正题。
由于满大街都是签发的教材,就不讲重复的了。
在使用 CFSSL的OCSP响应器,我们应该手动创建证书数据库。不使用goose迁移脚本,直接在NVCAT中一梭子下去就行了。项目有坑,分了两步,第一步是创建表,第二步是在表上增加字段,有点绕路,很多人不知所措。
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for certificates
-- ----------------------------
DROP TABLE IF EXISTS `certificates`;
CREATE TABLE `certificates` (
`serial_number` varbinary(128) NOT NULL,
`authority_key_identifier` varbinary(128) NOT NULL,
`ca_label` varbinary(128) NULL DEFAULT NULL,
`status` varbinary(128) NOT NULL,
`reason` int(11) NULL DEFAULT NULL,
`expiry` timestamp NULL DEFAULT '0000-00-00 00:00:00',
`revoked_at` timestamp NULL DEFAULT '0000-00-00 00:00:00',
`pem` varbinary(4096) NOT NULL,
`issued_at` timestamp NULL DEFAULT '0000-00-00 00:00:00',
`not_before` timestamp NULL DEFAULT '0000-00-00 00:00:00',
`metadata` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL,
`sans` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL,
`common_name` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL,
PRIMARY KEY (`serial_number`, `authority_key_identifier`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact;
SET FOREIGN_KEY_CHECKS = 1;
正确的创建好表后,再正确地签发,然后数据就会被记录在数据库中,如图1.1所示
正确的签发方法如图1.2所示,在使用我们签名sign这个方法的适合需要加上数据库配置,仅此而已。genkey方法不需要这个数据库配置。
That’s ALL
顺带提一句,由于使用的是MYSQL,所一结合PHP,这样灵活性很高了,可以尝试写一个管理面板。
发表回复