# Java SSL 国密双向认证:实现安全通信的利器
在现代网络环境中,安全通信至关重要。SSL(安全套接层)协议是实现安全通信的常用技术,它为数据传输提供加密保护、身份验证等功能。近年来,随着国密标准(如SM2、SM3、SM4)的推广,国内开发者越来越需要在Java中实现SSL的国密双向认证。本文将详细介绍如何实现这一功能,并提供相关代码示例。
## 什么是国密双向认证?
国密双向认证是            
                
         
            
            
            
            1.引言CA是Certificate Authority的缩写,也叫“证书授权中心”。它是负责管理和签发证书的第三方机构,作用是检查证书持有者身份的合法性,并签发证书,以防证书被伪造或篡改。CA证书即由CA所签发的证书。SSL双向认证需要服务端与客户端提供身份认证,只能是服务端允许的客户能去访问,安全性相对于要高一些。就是只有安装了由CA证书颁发的用户证书的机器才能进行系统的访问。2.实现配置接上            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-21 08:25:35
                            
                                29阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现所起的作用。接着对数字证书做一个详细的解释,并讨论一下windows中数字证书的管理,最后演示使用makecert生成数字证书。如果发现文中有错误的地方,或者有什么地方说得不够清楚,欢迎指出!
			 
 1、基础知识
				   &            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-27 21:25:47
                            
                                84阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            系统要求 Android 7.0(API 24)及以上 功能介绍单向认证接收并显示服务器端国密数字证书使用PP软件授权平台获取授权数据的简要说明  核心代码                 //这里写入子线程需要做的工作
                     try            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-05-14 12:20:14
                            
                                42阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            文章目录概述keytool示例参考 概述注意keytool的命令,版本有所不同 【ssl认证、证书】keytool genkey和genkeypair的区别和联系本篇的代码示例原理参见 【ssl认证、证书】java中的ssl连接、keytool,结合一起看keytool示例模拟场景: Server端和Client端通信,需要进行授权和身份的验证,即Client只能接受Server的消息,Serv            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-20 05:21:59
                            
                                112阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            国密SSL规范主要是基于tlsv1.1版本而来,部分内容比如prf是基于tlsv1.2版本。如果国密SSL规范具体数据格式不明确的地方需要参考tlsv1.1和tlsv1.2协议。国密SSL协议规范的编号:GM/T 0024-20141. 记录层协议记录层协议是低层协议,所有的报文,包括握手协议、报警协议、密码规格变更协议等都要封装在记录层协议中进行传输。2. 密码规格变更协议这个协议比较简单,就一            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-11 16:02:13
                            
                                181阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            国密 SSL协议在GM/T中没有单独规范的文件,而是在SSL VPN技术规范中定义了国密SSL协议。GMT 0024-2014《SSL VPN技术规范》中,国密 SSL协议内容参照传输层安全协议(RFC 4346 TLS1.1),按照我国相关密码政策和法规,结合我国实际应用需求及实践经验,在TLS 1.1的握手协议中,增加了ECC、IBC的认证模式和密钥交换模式,取消了DH密钥交换方式,修改了密码            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-28 07:27:09
                            
                                126阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            简介本期答疑解惑将和大家一起认识SSL/TLS 协议。请尝试回答以下几个问题:使用浏览器访问https网站和http网站有什么不同?SSL协议作用于网络模型的哪一层?你知道CSDN,博客园正在使用的是什么类型的SSL证书吗?SSL,TLS, mTLS之间是什么关系?非对称加密算法非对称加密算法是数学家们创造出来的,它是SSL协议的基础。该算法的目的是生成一对密钥:公钥和私钥,密钥通常是一段二进制数            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-01-17 12:23:27
                            
                                110阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            测试服务器:https://www.mrpre.com:4433/  (已经过期,不要测试了)(测试时,先将本机时间设置为2018年7月之前(我证书过期了),然后使用360国密浏览器访问。360国密浏览器会在TLS握手失败后才会发起GMSSL握手,所以访问较慢。出现访问不了的情况,请清除360国密浏览器所有缓存,重启浏览器后再访问)源码在 https://github.com/            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-16 19:02:22
                            
                                290阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            国内做2B(to Biz)或2G(to Gov)产品和解决方案的企业都绕不过国密算法,越来越多的国内甲方在采购需求中包含了基于国密算法的认证、签名、加密等需求。对于国内的车联网平台来说,支持基于国密的双向认证也是大势所趋。在这篇文章中,我就来说说如何基于国密算法实现双向认证,即使用国密算法的安全传输层双向认证。一. 简要回顾基于TLS的双向认证在《Go语言精进之路》[1]第2册的第51条中,我详细            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-13 23:09:30
                            
                                949阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法,基于ECC。其签名速度与秘钥生成速度都快于RSA,非对称加密,该算法已公开SM3是中华人民共和国政府采用的一种密码散列函数标准,由国家密码管理局于2010年12月17日发布。SM3主要用数字签名及验证、消息认证码生成及验证、随机数生成等,其安全性及效率与SHA-256相当。可以用MD5作为对比理解。校验结果为256位,不可逆            
                
         
            
            
            
            国密算法即国家密码局认定的国产密码算法(商用密码)。近年来,国家站在长远战略的高度大力推动国产密码算法在金融、电子政务等关键领域的应用。明确要求在金融银行、电子政务、教育、交通运输、民生保障等关键领域全面推进自主可控密码技术的应用。越来越多的政府、企事业单位的WEB系统都已开始部署使用国密SSL。国产密码算法以及相对应的产品应用将成为未来各级政府机关网站和各类企业网站的安全标配。但目前主流的WEB            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-07-23 07:53:09
                            
                                125阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            国密浏览器需要遵循国密SSL协议规范GM/T 0024-2014。GM/T 0024-2014没有单独规范 SSL协议的文件,而是在SSL VPN技术规范中定义了国密SSL协议。国密SSL协议(SSL VPN协议)包括握手协议、密码规格变更协议、报警协议、网关到网关协议和记录层协议。握手协议用于身份鉴别和安全参数协商;密码规格变更协议用于通知安全参数的变更;报警协议用于关闭通知或对错误进行报警;网            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-19 22:19:01
                            
                                387阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Java是一种跨平台的编程语言,广泛应用于各种应用程序的开发。在网络安全领域,SSL(Secure Socket Layer)是一种常用的加密协议,用于保护数据在网络上的传输。国密SSL是指使用SM2、SM3、SM4等国密算法来实现加密和认证的SSL协议。
Java支持国密SSL,可以通过Java的标准安全库JSSE(Java Secure Socket Extension)来实现。JSSE提供            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-10-29 05:11:34
                            
                                200阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # 如何在Java中实现国密SSL协议支持
## 引言
国密SSL协议是为了满足中国国内对信息安全的需求而设计的一种加密协议。作为一名开发者,了解如何在Java中支持国密SSL协议是非常重要的任务。本文将引导你通过一系列步骤来实现国密SSL协议的支持,并提供详细的代码示例。
## 实现流程
下面是实现国密SSL协议支持的基本流程:
| 步骤 | 描述            
                
         
            
            
            
            1.什么是国密SSL证书 国密SSL证书是国密合规的SSL证书产品,遵循国家标准技术规范并参考国际标准,支持SM2/SM3/SM4国产密码算法和国密安全协议,兼容360浏览器、红莲花浏览器等主要国密浏览器。采用自主可控密码技术保护数据机密性、完整性,防止数据在传输过程中被窃取或篡改,确保通信主体身份真实性。2.什么是国密算法? 国密算法是我国自主研发创新的一套数据加密处理系列算            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-27 12:50:38
                            
                                161阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            早前俄乌冲突导致大量俄政府和银行等重要网站的SSL证书被吊销,这给我国互联网安全,特别是关键信息基础设施安全敲响了警钟。我国政府其实早在10年前已经对网络安全引起高度重视,并随之相继出台了《密码法》、《网络安全法》、《数据安全法》、《关键信息基础设施保护条例》等重要法规,这些法规从不同层面强调了实现网络安全技术自主可控的重要性,明确了对关键信息基础设施的保护是世界各国网络空间博弈的重要战场。就技术            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-22 09:16:42
                            
                                116阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            国密算法简述关于GmSSL        GmSSL是一个开源的密码工具箱,支持SM2/SM3/SM4/SM9/ZUC等国密(国家商用密码)算法、SM2国密数字证书及基于SM2证书的SSL/TLS安全通信协议,支持国密硬件密码设备,提供符合国密规范的编程接口与命令行工具,可以用于构建PKI/CA、安全通信、数据加密等符合国密标准的安全应用。GmSSL项目是O            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-27 21:30:17
                            
                                375阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
             示例工程及测试用的证书文件:1、双向加密认证首先要获取到证书,可以先自己生成证书用于测试(实际获取到的公网证书使用方式其实差不多)(1)可以通过openssl生成证书(2)首先要生成一份CA根证书,再由该证书生成服务器和客户端的证书(3)完成基本的SSL/TLS服务器和客户端的双向加密通讯,一共需要生成5份证书    ①CA证书    ②服务器证            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-07-15 09:14:13
                            
                                733阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            脚本一键完成, 最后会提示输入一个客户端密码#!/bin/bash
# function: 创建 nginx https ,双向认证证书
# create: 2014-11-27
#
# BEGIN
#
# 网站域名
# 在签发服务(客户)端证书的时候
# 这个域名必须跟 subj 中的 CN 对应
# 否则浏览器会报不安全的链接
domain="opt011.9yuonline.com"
#
#