宝兰德BES在BGMProvider国密库上的实践

宝兰德BES应用服务器是一款JavaEE应用服务器,支持最新的JavaEE规范标准,如EJB3.2、Servlet3.1、JSP2.3、JSTL1.2、JSF2.2、JavaMail1.5、JMS2.0等。从大的功能来讲BES应用服务器功能主要包括:

国密算法指的是SM2/SM3/SM4等算法,其中“SM”代表“商密”,即用于商用的、不涉及国家秘密的密码技术。

国密证书是使用国密算法进行公钥签名和HASH运算,并采用国密密钥封装的证书。国密证书同样符合X.509等国际标准证书规范。在国内很多政企应用场景中,经常会使用“双国密证书”架构,即每个服务同时部署两套证书:签名证书和加密证书。签名证书代表该节点身份,用于身份认证和对数据签名;加密证书用于交换密钥和对数据加密。

国密SSL协议是符合国密标准GM/T0024-2014[4]和GB/T38636-2020[5]的安全传输协议,类似于国际SSL/TLS,国密SSL协议实际落地,需要国密证书、国密Web服务器、国密浏览器等互相配合。

国密SSL可同时兼容标准SSL,在同一个服务端口中,自适应来自不同客户端标准SSL通信和国密SSL通信,解决从标准SSL到国密SSL的平滑过度。

下面主要介绍宝兰德BES应用服务器如何通过毕昇JDK的BGMProvider来实现web服务的国密SSL通信。

可以通过maven坐标直接依赖编译好的库,目前最新版本是1.0.3.2:

将target目录下的jsse-xxxx.jar,jca-xxxx.jar,bgmprovider-xxxx.jar三个jar包(或bgmprovider-xxxx-jar-with-dependencies.jar一个jar包)拷贝至CLASSPATH目录即可。如果在tomcat中使用,则还需要将tomcat-adaptor-xxxx.jar拷贝至$TOMCAT_HOME/lib。

方式一:修改JDK配置文件,直接集成到JDK当中

修改path_to_jre/lib/security/java.security文件,添加BGMProvider。

例:设置BGMProvider为最高优先级

这里我们选择毕昇JDK8u302和BES9.5版本,以下是一些简单的安装和启动过程:

完成之后可以启动BES应用服务器:

在国密通道页面中指定以下参数:

这里我们编写一个简单的web测试应用部署到BES当中,一个静态页面index.html,内容如下:

部署应用之后,即可重启BES使得配置生效,重启方式如下:

可以看到使用的证书确实我们在前文中创建的SM2国密证书。

通过过滤8445端口信息之后,重复上述访问步骤,可获取到如下报文:

基本符合规范中的握手过程:

从握手协议上看,和标准TLS并无太大差别,我们继续看几个核心握手消息的内容,

ClientHello:客户端告诉服务端使用GMTLS协议、密码套件支持ECC_SM4_SM3(同ECC_SM4_CBC_SM3):

ServerHello:确定密码套件选择ECC_SM4_SM3

Certificates:将服务端国密证书发给客户端(签名证书、加密证书、根证书)

ServerKeyExchange:服务端密钥交换,细节可参考国密标准(GM/T0024-2014[4]和GB/T38636-2020[5])

ClientKeyExchange:客户端密钥交换

后续就是数据加密传输,此处不再叙述,详细可参考国密标准。从整个握手过程可判断确实已经在BES上实现GMTLS通信。

经过上面的测试,毕昇JDK的BGMProvider国密库在不做修改的情况下完全可以集成到BES应用服务器当中,作为GMTLS的引擎,且基本功能测试正常,后续还可以测试其他密码套件以及性能测试等,除了web应用,在普通java应用中也可以尝试使用BGMProvider作为国密库使用。以上如有错误的地方,欢迎指正。

THE END
1.加密签名证书的区别和使用加密证书和签名证书的区别我们以加密、签名、证书作为主题,结合三要素展开分析。 加密: 概述:加密分为对称加密和非对称加密,非对称加密是指加密使用的密钥与解密使用的密钥不相同,一般适用于对比较简短的数据加密(随着数据量增大加解密效率降低),对称加密是指加密和解密使用的密钥相同,一般适用于数据量比较大的数据,非对称加密相对于对称加密更https://blog.csdn.net/a57565182/article/details/103846552
2.签名证书和加密证书的区别aoun加密:防偷窥 签名:私钥签名,公钥验证,所以就算私钥遗失了,以前签名的数据仍然有效,所以私钥一般只有一份 加密:公钥加密,私钥解密,一旦私钥遗失,则数据就无法还原了,所以CA一般会备份加密证书 加密证书也可用于签名,但签名证书不可用于加密 以上,其他二者几乎没有区别https://www.cnblogs.com/aoun/p/5532086.html
3.签名证书和加密证书有什么区别?腾讯云开发者社区这看起来似乎可有可无。但是我们在申请 HTTPS 证书的时候却比较麻烦,除了要定时续签之外,有的证书还https://cloud.tencent.com/developer/ask/sof/102050263
4.什么是自签名证书?自签名证书和ca证书区别有哪些?聚名资讯自签名证书是由网站管理员或个人自行创建和签名的数字证书,用于加密网站与用户之间的通信。自签名证书没有经过第三方证书颁发机构(CA)的验证和认证,因此在信任度上与由受信任的 CA 颁发的证书存在区别。 两者的区别: 1. 验证和信任: - CA 证书:CA 证书经过专门的证书颁发机构验证和认证,被广泛信任和接受。当用户https://www.juming.com/zx/20305.html
5.数字签名与数字证书有何区别?尽管数字签名和数字证书被用作数字文档、软件、代码或其他传输数据的安全和认证措施,但它们还是有很大不同的。在本文,小编将深入跟大家探讨密钥数字签名与数字证书有何区别? 一、数字签名与数字证书的定义: 1、数字签名是一种数学技术,用于验证和验证数字文档、消息、软件或交易的真实性和完整性。它是盖章印章或手写https://www.hengxun.cn/news/content/4766.html
6.数字证书数据签名数据加密的关系和公钥进行计算出数字签名,并对该签名用CA机构自己的私钥进行加密,然后将这些信息和加密后的数字签名放在一起,形成S的数字证书颁发给S(数字证书包含版本、序列号、签名算法标识符、签发人姓名、有效期、主体名和主体公钥信息等并附有CA的签名,用户获取网站的数字证书后通过验证CA的签名来确认数字证书的有效性,从而https://www.jianshu.com/p/d748a6f9ddc2
7.首个免费国密证书签发平台上线GMCert 提供多种证书服务内容和灵活参数设置: ● 通过CSR请求证书 ● 在线生成密钥和证书 ● 指定证书算法(国密/RSA/ECC) ● 支持生成国密签名证书或加密证书 ● 指定证书扩展项 ● 指定证书导出格式(PEM/DER/P12/JKS) ● 指定HASH算法 ● 支持生成PKCS7格式密码信封 https://www.meipian.cn/2f9erjje
8.使用S/MIME对电子邮件进行签名和加密签名证书 加密证书 S/MIME 电子邮件配置文件 后续步骤 电子邮件证书,也称为 S/MIME 证书,通过使用加密和解密为电子邮件通信提供额外的安全性。 Microsoft Intune 可以使用 S/MIME 证书对运行以下平台的移动设备的电子邮件进行签名和加密: Android iOS/iPadOS https://docs.microsoft.com/zh-cn/mem/intune/protect/certificates-s-mime-encryption-sign
9.国密改造—国密SSL证书部分是国密SSL协议与标准TLS协议最大的区别,国密为双证书体系。握手中需要发送签名证书以及加密证书,并且一般要求签名证书再前,加密证书在后。签名证书仅用于验证身份,其私钥由自己生成,由CA机构签发;加密证书用于数据加密,其私钥并非自己生成,而是CA机构生成后与证书以及保存。 https://developer.aliyun.com/article/851047
10.什么是虚拟私有网VPN?VPN的常用技术有哪些?数字证书认证技术原理 数字证书 ?一个经证书授权中心数字签名的包含公开密钥拥有者信息和公开密钥的文件 数字证书是一般包含: ? 用户身份信息 ? 用户公钥信息 ? 身份验证机构数字签名的数据 从证书用途来看,数字证书可分为签名证书和加密证书。 https://www.elecfans.com/d/2627550.html
11.证书,密钥,加密,rsa到底是啥?腾讯云开发者社区证书也叫CA(Certification Authority)证书;密钥就是用来加解密用的文件或者字符串;rsa即非对称加密算法。 密钥 密钥在非对称加密的领域里,指的是私钥和公钥,他们总是成对出现,其主要作用是加密和解密,具体原理可以参考RSA加密算法。 需要指出的是,WIKI中提到1999年,RSA-155 (512 bits)被成功分解,2009年12月12日,https://cloud.tencent.cn/developer/article/2201047
12.如何在密信(MeSince)邮件客户端配置QQ邮箱?简单3步!通过密信“个人设置-个性化-证书管理”菜单栏,您可以查看密信自动为您配置的电子邮件加密证书和签名证书。强烈建议您登录密信官网,设置证书保护密码,为加密邮件提供多重安全保护。 第三步:升级身份认证 完成以上2步,您已经可以顺畅地发送加密邮件了。如果您希望您的电子邮件展示更高级别的身份认证信息,密信还提供身份https://www.wosign.com/news/news_2018122601.htm
13.天津大学招标信息网投标人必须先在天津大学招标信息网完成供应商注册,后进行CFCA数字证书办理。 二、办理流程数字证书办理流程示意图 材料准备:投标人按照如下要求准备申请资料,并签字加盖公章: 申请数字证书的资料清单及要求: 重要提示: 需加盖公章的材料必须是红色公章,提交非红色公章材料概不受理,其后果自负,请仔细核对。 http://zbb.tju.edu.cn/sfw_cms/e?page=cms.detail&cid=50481&aid=11932