公钥基础结构:基于OpenSSL和SQLite3实用程序的证书颁发机构(Postcryptum)

garex发送的其中一项评论中,回应以下声明
但是今天,在opensl的​​标准版本中,既不支持GOST R 34.11-2012和GOST R 34.10-2012。 此外,在1.1版中,标准交付中不包括GOST加密支持(“ GOST引擎已过时,因此已被删除。”)
有人说:
那个被“删除”的东西不怎么样? github.com/gost-engine/engine
构建示例github.com/rnixik/docker-openssl-gost/blob/master/Dockerfile

决定测试此版本的openssl作为CAFL63 CA的一部分。 使用指定的构建示例,openssl本身和GOST引擎的组装和安装没​​有任何问题(所有内容都在Linux环境中进行了测试,并安装在/ usr / local / ssl目录中)。 当然,要使用GOST加密技术(我们正在谈论GOST R 34.10-2012,GOST R 34.11-2012),您需要在openssl.cnf配置文件中注册gost.so引擎连接:

. . # OpenSSL default section [openssl_def] engines = engine_section # Engine scetion [engine_section] gost = gost_section # Engine gost section [gost_section] engine_id = gost dynamic_path = /usr/local/ssl/lib/engines-1.1/gost.so default_algorithms = ALL CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet . . . 

您可以通过运行以下命令检查来宾引擎的连接:

 bash-4.3$ /usr/local/ssl/bin/openssl ciphers . . . GOST2012-GOST8912-GOST8912:GOST2001-GOST89-GOST89 . . . bash-4.3$ 

要查看受支持的基于GOST的哈希算法,只需运行以下命令:

 bash-4.3$ /usr/local/ssl/bin/openssl list –digest-algorithms| grep md_gost md_gost12_256 md_gost12_512 md_gost94 bash-4.3$ 

如您所见,在此版本的opensl中,在连接了引擎的情况下,有了俄罗斯加密技术的支持,一切都很好。

如果您在先前创建的CA中连接openssl实用程序(“工具”->“设置”->“系统”),那么乍一看它将起作用。 您将能够查看请求和证书。 在这种情况下,将正确显示DN(专有名称)(TIN,PSRN,SNILS)中包括的所有字段。 但是这里有扩展,例如issuerSignTool,subjectSignTool和其他扩展,openssl拒绝提及:

图片

应当注意,这些扩展是SKEPEP(电子签名的合格证书密钥验证)的组成部分,其要求已通过联邦安全局2011年12月27日N 795的命令批准。

对openssl实用程序的分析显示,它不支持TK-26为SKEPEP引入的扩展isserSignTool,objectSignTools和其他扩展:
...
加载请求扩展部分v3_req时出错
139974322407168:错误:22097081:X509 V3例程:do_ext_nconf:未知扩展名:crypto / x509v3 / v3_conf.c:82:
139974322407168:错误:22098080:X509 V3例程:X509V3_EXT_nconf:扩展名错误:crypto / x509v3 / v3_conf.c:47:名称= subjectSignTool,值=用户密码信息保护系统的名称
...
加载请求扩展部分v3_req时出错
140154981721856:错误:22097081:X509 V3例程:do_ext_nconf:未知扩展名:crypto / x509v3 / v3_conf.c:82:
140154981721856:错误:22098080:X509 V3例程:X509V3_EXT_nconf:扩展名错误:crypto / x509v3 / v3_conf.c:47:名称= subjectSignTool,值=用户密码信息保护系统的名称
...
加载扩展部分cert_ext时出错
14032006540​​6720:错误:0D06407A:asn1编码例程:a2d_ASN1_OBJECT:第一个数字太大:crypto / asn1 / a_object.c:61:
14032006540​​6720:错误:2208206E:X509 V3例程:r2i_certpol:无效的对象标识符:crypto / x509v3 / v3_cpols.c:135:section :, name:KC1ClassSignTool,value:
14032006540​​6720:错误:22098080:X509 V3例程:X509V3_EXT_nconf:扩展名错误:crypto / x509v3 / v3_conf.c:47:名称= certificatePolicies,值= KC1ClassSignTool,KC2ClassSignTool
..
在这方面,CAFL63 CA还拒绝为openssl创建请求并颁发证书,因为它严格监控了对CLEP要求的遵守情况:



同时,有时这些要求是多余的,例如,在教育过程中使用证书,内部文档管理(签名,文档加密),https访问公司系统(站点,门户等)时,即所谓的SSL-证书)。
基于此,对CAFL63进行了修订。 现在可以不填写扩展字段(工具->设置->系统):



CAFL63实用程序允许您查看第三方请求(“证书”->“查看第三方证书”或““证书””选项卡上的““查看外部X509””按钮),但存在相同的缺点:



该修订版允许今天将CAFF63 CA用于教育目的,组织公司工作流程等。

这就是我在附言中想要说的。

Source: https://habr.com/ru/post/zh-CN415423/


All Articles