Skip to content

2829969554/MODPKICA

Repository files navigation

Old_Code  文件夹是旧版本源码( 2025年5月份以前的版本),

虽然不符合编写规范但是功能没有任何问题。
目前代码库已经提交了符合规范的标准模块式代码,
以后只维护MODPKICA 6.0以后的版本。



当前路径MODPKICA系统根目录
--------------------------------
本文件解释当前路径目录下的文件作用和结构
****************************************************************
类型      名称        描述 
----------------------------------------------------------------
文件夹     PKI          该文件夹作用是存放MODPKICA系统的各种数据文件的组织架构文件
					  具体请查看文件夹内ReadMe.txt描述文件

文件夹  SourceCode	  该文件夹作用是存放MODPKICA系统的源代码
					  具体请查看文件夹内ReadMe.txt描述文件	

文件夹  test	          该文件夹作用是存放一些将来新功能、例子的源代码、杂七杂八的文件等		  
-----------------------------------------------------------------


-------------------------------------------------------------------
-------------------------------------------------------------------
文件  ADMIN.exe       该文件是控制台程序,作用是全权管理MODPKICA系统 可直接打开

init ------------------------------------初始化环境签发根证书ROOT
                     (执行本操作后将自动化自动执行initOCSP和initTIMSTAMP)
					 
initOCSP --------------------------------初始化OCSP响应签名专用证书
										 请运行init后再运行initOCSP
										 
initTIMSTAMP ----------------------------初始化TSA时间戳签名专用证书
            (人工操作,可空参数SHA1 或 SHA256)指定算法更新,默认两者同时更新										 
										 
list ------------------------------------查看所有证书 序列号、证书状态

makeroot --------------------------------签发新根证书(ROOT)-同时存在多个根证书

signCERT --------------------------------签发下级证书  控制台流程
										 支持签发EV级扩展验证证书
										 可以签发任何类型目的的证书
										 
RevokeCERT ------------------------------吊销证书     控制台流程

signCRL ---------------------------------签发吊销列表 预留人工签发吊销列表,
										 目前会自动化运行,无需人工操作
										 
verifyCERT ------------------------------验证证书
										 验证证书是否为本系统签发的证书
										 
VERSION ---------------------------------查看当前MODPKICA版本号
-------------------------------------------------------------------
-------------------------------------------------------------------

-------------------------------------------------------------------
-------------------------------------------------------------------
文件   MAIN.exe      该文件是MODPKICA系统基础设施,提供外部网络访问 直接打开
					 部署服务联机证书状态协议 (1.3.6.1.5.5.7.48.1)
					 部署服务证书颁发机构颁发者 (1.3.6.1.5.5.7.48.2)
					 部署服务证书吊销列表分发点 CRL Distribution Point
					 部署网页自动化系统、后台接口、自动化签发证书吊销列表
					 自动化应答OCSP请求、发出OCSP响应
					 时间戳服务RFC3631(已实现)和Authenticode(已实现)
					 提供CTLOG服务 证书透明度日志服务器(此功能目前未实现)
-------------------------------------------------------------------
-------------------------------------------------------------------

-------------------------------------------------------------------
-------------------------------------------------------------------
文件   MAKEROOT.exe  该文件是初始化环境、签发全新的根证书和根密钥
					控制台问答流程自动化完成,可重复初始化
					请勿直接打开 1.需要使用ADMIN.exe发起控制台流程
-------------------------------------------------------------------
-------------------------------------------------------------------	


-------------------------------------------------------------------
-------------------------------------------------------------------
文件   MAKECERT.exe  该文件是签发中间CA证书和最终用户证书专用
					请勿直接打开 1.需要使用ADMIN.exe 发起控制台流程
							   2.打开MAIN.exe 使用浏览器访问可视化网页
-------------------------------------------------------------------
-------------------------------------------------------------------	


-------------------------------------------------------------------
-------------------------------------------------------------------
文件   rootGETcrl.exe    该文件作用是签发证书吊销列表 可直接打开
					    直接打开后将会读取CERTS.txt并在/PKI/WebPublic/CRL/目录下
					    建立最新新的证书吊销列表文件root.crl 
						正常情况下无需人工点击,MAIN.exe会自动化执行操作						
-------------------------------------------------------------------
-------------------------------------------------------------------


-------------------------------------------------------------------
-------------------------------------------------------------------
文件   CERTVERIFY.exe   该文件作用是验证X509证书,输出证书信息 可直接打开
						用法 : CERTVERIFY.exe xxx.crt  || CERTVERIFY.exe xxx.cer					
-------------------------------------------------------------------
-------------------------------------------------------------------


-------------------------------------------------------------------
文件   ResetExe.cmd    window平台的脚本 作用一键清空MODPKICA系统中的各种可执行文件exe
-------------------------------------------------------------------
文件   ResetData.cmd   window平台的脚本 作用一键清空MODPKICA系统中的各种数据
-------------------------------------------------------------------
文件   ResetExe.sh     linux平台的脚本 用法:在终端中运行;作用一键清空MODPKICA系统编译出来的各种可执行文件
-------------------------------------------------------------------
文件   ResetData.cmd   linux平台的脚本 用法:在终端中运行;作用一键清空MODPKICA系统中的各种数据
-------------------------------------------------------------------
文件   修复启动权限.sh   linux平台的脚本 用法:在终端中运行;
					  作用 #非root用户模式下,运行./MAIN 会报错,无权限监听80端口
					  请到PKI/CONFIG.txt文件中修改端口信息,非80端口可以无需运行此脚本
-------------------------------------------------------------------

文件   ReadMe.txt     你正在查看........
-------------------------------------------------------------------
建立时间2023年12月9日 22:33   作者:@魔帝本尊  QQ:2829969554  
**********************************************************************
最新版本: MODPKICA 6.0 202508062240

更新日志:
		2025年08月06日 22:40
		1.SourceCode\golib路径下增加smocsp\smocsp.go文件(此文件由SourceCode\golib\ocsp\ocsp.go改进而来),用于生成OCSP响应数据,使用SM2签名,SM3数据摘要。
		2.MAIN.go增加 HTTP SM2 OCSP响应应答接口
		
		2025年07月04日 23:56
		1.SourceCode\golib\ocsp\ocsp.go文件添加全局扩展:responseData结构体加入 Extensions     []pkix.Extension `asn1:"explicit,tag:1,optional"`
		  我做出部分代码调整,因为原 suijiNonce 位置不符合RFC6960标准,期望 Nonce 出现在响应的 responseExtensions 区域,但我将其放在了 Response Single Extensions(单证书扩展区域)。
		
		2025年06月27日 23:42
		1.PKIX.go加入以下OID参数
			1.3.6.1.4.1.311.60.2.1.1 注册城市,例如:Hong Qiao
			1.3.6.1.4.1.311.60.2.1.2 注册地区,例如:Shanghai
			1.3.6.1.4.1.311.60.2.1.3 注册国家,例如:CN 	
			2.5.4.97                 注册组织唯一编码,例如:123BHJ85264456
			
		2.ADMIN.go对EVTYPE参数进行以下调整,businessCategory(2.5.4.15)支持四种参数:
			Private Organization   (私营组织)
			Government Entity      (政府机构)
			Business Entity        (商业实体,如合伙、国企等)
			Non‑Commercial Entity  (非商业实体,如国际组织)
			
		3.Signcert生成用户证书问答流程进行微调....					

								
		2025年06月15日 22:12
		1.优化CERTVERIFY.go中证书透明度列表显示和签名验证的逻辑。

		2025年06月11日 21:53
		1.修复MAKEROOT.go中priid与subid的计算方法,原本是DER编码公钥的sha1值。
		  通过elliptic.Marshal将 ECDSA证书的priid与subid的计算方法算法修改为RFC-SHA1。
		  通过elliptic.Marshal将 SM2证书的priid与subid的计算方法算法修改为RFC-SHA1。
		  
		2.修复MAKECERT.go中priid与subid的计算方法,原本是DER编码公钥的sha1值。
		  现修改为rfc-sha1(RSA、ECDSA、SM2同时修正)。
		
		
		2025年06月09日 22:50
		1.修复MAKEROOT.go中priid与subid的计算方法,原本是DER编码公钥的sha1值。
		  今天将RSA算法证书的priid与subid的计算方法修改为RFC-SHA1。  

		
		2025年05月04日 22:15
		1.由于多个用户反馈 golib 复制到 GO_HOME 不合理,按照规范不允许修改标准库。
			我定义项目根目录包名为modpkica,golib下的模块需要以modpkica.xxx的形式在代码中引用。
		   我发布新版本源码,MODPKICA 6.0 202505042219


		2024年12月07日 17:20
		1.修复BUG...
		2.发布linux 正式版本

		2024年11月28日 20:00
		1.CERTVERIFY.go文件第639行加 continue;
		  作用屏蔽这个小方块,有BUG,待修复
		  
		2024年11月15日 19:41
		1.根据以下参考来源调整ctlogs.go中(this *PreCertificateTimestamp_RFC)Bytes()生成预签名数据
		  参考来源https://blog.pierky.com/certificate-transparency-manually-verify-sct-with-openssl/
		  待签名数据结构
		  # sct_version = v1 = 0x00, 1 byte
		  # signature_type = certificate_timestamp = 0x00, 1 byte
		  # timestamp = 0x000001459df97d9c, 8 bytes
		  # entry_type = x509_entry = 0x0000, 2 bytes | 0x00,0x00 = ASN.1Cert;0x00,0x01 = PreCert
		  # x509_entry  = 0x00,0x04,0xE2  前3个字节 length of DER-encoded EE cert, 3 bytes,后面跟着DER编码x509.tbscertificate
		  # extensions= 0x00,0x00 : none, 0-length, 2 bytes

		2024年11月14日 22:26
		1.CERTVERIFY.go增加RFC可信签名证书时间戳签名验证的流程

		2024年11月11日 16:25
		1.CERTVERIFY.go ShowPkixEXP()函数 增加签名验证的流程
		2.sct.go 修复BUG....

		2024年11月10日 21:29
		1.CERTVERIFY.go 加入ShowPkixEXP()函数
		2.sct.go 修复BUG....


		2024年11月03日 17:01
		1.原test文件夹改名为 1.生成SM2证书例子
		2.新添加例子 2.Go国密SSL和国际SSL自适应https服务例子
		3.golib\tjfoc\gmsm 加入curve25519模块



		2024年10月31日 18:48
		1.MAKECERT.go CERTVERIFY.go 增加以下增强型密钥用法
			0:任何目的 1:服务器身份验证(SSL) 2:客户端身份验证(SSL)
			3:代码签名 4:电子邮件保护 5:IPSec端系统
			6:IPSec隧道模式 7:IPSec用户模式 8:时间戳签名
			9:OCSP响应签名 10:Microsoft服务器加密 11:Netscape服务器加密
			12:Microsoft商业代码签名 13:Microsoft内核代码签名 14:Windows 硬件驱动程序验证
			15:Windows 系统组件验证  16:OEM Windows 系统组件验证 17:内嵌 Windows 系统组件验证
			18:域名系统(DNS)服务器信任  19:系统健康身份认证  20:已吊销列表签名者
			21:KDC 身份认证  22:生存时间签名  23:私钥存档  24:合格的部署
			25:密钥恢复  26:文档签名  27:Microsoft 时间戳  28:加密文件系统
			29:密钥恢复代理  30:目录服务电子邮件复制  31:IP 安全 IKE 中级
			32:文件恢复  33:根列表签名者  34:数字权利  35:CTL 用法
			36:密钥数据包许可证  37:许可证服务器验证  38:证书申请代理
			39:智能卡登录 40:智能卡验证 41:智能卡证书验证 42:智能卡信任使用
			43:Apple CodeSing 代码签名  44:Apple Development CodeSing 开发者代码签名
			45:Apple Resource Signing 资源签名  46:Apple Ichat Signing Ichat签名
		2.CERTVERIFY.go支持实时获取OCSP状态,显示吊销时间,吊销原因等.

		2024年10月28日 19:13
		1.CERTVERIFY.go 美化输出信息的可读性、实现了RSA、ECC、SM2三种算法的证书信息查看。
		2.支持验证证书中嵌入的签名,签名验证中增加了哈希算法md5、sha1、sha256、sha384、sha512、sm3。
		3.目前支持实时查看证书状态,是否被撤销,撤销原因,撤销时间等信息...

		2024年10月27日 14:55
		1.数字证书 加入x509扩展CTLog PublicKey (1.36.1.4.1.11129.2.4.5)
			这里嵌入签发SCT列表的公钥,这个公钥用于验证SCT列表签名。因为浏览器不会内置咱们自己生成的时间戳签名公钥,所以需要嵌入到生成的证书中。
		2.admin.go 加入证书文件verify功能,并且支持验证SCT列表的签名,CRL列表,OCSP信息

		2024年10月26日 14:08
		1.修复签名SCT列表 ASN.1 DER编码格式一些小问题
		2.SCT列表 目前支持1 - 6 份日志信息

		2024年10月22日 19:30
		1.修复关于交叉签名时一些小BUG 
		  具体表现为 SM2证书不能以SM2withSM3不能为RSA和ECC进行交叉签名 得签名算法得使用使SM2withSHA1 或者SM2withSHA256

		2024年10月21日 23:56
		1.兼容RSA ECC SM2 SM2 证书修复签名错误的BUG
		2.修复BUG 修复代码兼容SM2时RSA创建失败的问题
		3.golib 文件夹中modcrypto中的x509.go 和tjfoc中的utils.go 需要代码更新
		4.rootGETcrl.go 目前支持自动生成 RSA、ECC、SM2这三种签名算法的证书吊销列表
		5.MAIN.go OCSP在线证书协议目前支持RSA、ECC两种算法,即将支持SM2国密算法
		6.admin.go 控制台signCert流程支持交叉签名,交叉认证   1. RSA->ECC RSA->SM2 RSA->RSA
					2. ECC->ECC ECC->SM2 ECC->RSA 3.  SM2->ECC SM2->SM2 SM2->RSA
		
		2024年10月20日 20:10
		1.新增功能  MAKEROOT.go 创建RSA ECC 国密 根证书 ,目前支持以下参数
		           RSA :1024 2048 3072 4096 5120 6144 7168 8192
		           ECC:ECDSA-224 ECDSA-256 ECDSA-384 ECDSA-521
		           国密:SM2-SM3
		2.新增功能  证书透明度日志列表  自定义证书策略信息	
		3.优化文件系统组织架构


		2024年09月16日 11:01
		1.BUG 修复 CreateCertificate()函数创建的SM2证书 签名错误的问题

		2024年08月21日 21:41
		1.加入生成 ECC证书吊销列表,SM2证书吊销列表的功能
		2.例子 makecrlofsmecc.cmd一键启动编译 ecccrl.go smcrl.go 基于上次更新demo_ecc demo_sm的国密证书

		2024年08月18日 14:40
		1.加入ECC算法 P256 P384 P512 
		2.加入国密算法 SM2 SM3 SM4 等...
		3.目前支持demo_ecc demo_sm 构建X509国密证书,即将更新MODPKICA架构

		2024年04月14日 18:22 
		1.OCSP在线证书协议修复BUG..
		2.整合Authcode时间戳和RFC3161时间戳统一地址:http://localhost/timestamp
		   (此链接同时支持SHA1和SHA256)
		3.MODPKICA系统从此版本支持同时兼容多个中间CA..
		4.接下来将会加入导入现有根证书链的功能,实现多个根链......

                2023年12月13日 01:45 
		1.增加RFC3161 Document文档签名时间戳
		  http://localhost/rfc3161
		2.时间戳签名证书 增强型密钥用法 加入了Critical,符合RFC3161国际标准
		2.修复一些小BUG

		2023年12月10日 20:02 
		1.增加TSA时间戳服务器 支持Authenticode类型 SHA1    SHA256
		  SHA256:http://localhost/timestamp
		  SHA1:http://localhost/timestamp/sha1
		2.修复一些小问题
		
		2023年12月9日 22:33 上传GITEE GITHUB代码库
		1.大部分功能
		
		2023年12月2日 15:00 本地建立项目

本项目为作者在学习X.509证书系统知识时边学习边开发,只供学习,不承担由此产生的一切不良问题

另外,我肚子好饿,后悔学编程了。。。。。希望有大佬支持打赏一顿饭

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published