SSL双向认证证书制作过程流程

合集下载

使用tomcat配置SSL双向认证

使用tomcat配置SSL双向认证

在Tomcat 6中配置SSL双向认证是相当容易的,本文将介绍如何使用JDK的keytool来为Tomcat配置双向SSL认证。

系统需求:JDK 5.0Tomcat 6.0.16第一步:为服务器生成证书使用keytool为Tomcat生成证书,假定目标机器的域名是“localhost”,keystore文件存放在“C:\tomcat.keystore”,口令为“password”,使用如下命令生成:如果Tomcat所在服务器的域名不是“localhost”,应改为对应的域名,如“”,否则浏览器会弹出警告窗口,提示用户证书与所在域不匹配。

在本地做开发测试时,应填入“localhost”第二步:为客户端生成证书下一步是为浏览器生成证书,以便让服务器来验证它。

为了能将证书顺利导入至IE和Firefox,证书格式应该是PKCS12,因此,使用如下命令生成:对应的证书库存放在“C:\my.p12”,客户端的CN可以是任意值。

稍候,我们将把这个“my.p12”证书库导入到IE和Firefox中。

第三步:让服务器信任客户端证书由于是双向SSL认证,服务器必须要信任客户端证书,因此,必须把客户端证书添加为服务器的信任认证。

由于不能直接将PKCS12格式的证书库导入,我们必须先把客户端证书导出为一个单独的CER文件,使用如下命令:通过以上命令,客户端证书就被我们导出到“C:\my.cer”文件了。

下一步,是将该文件导入到服务器的证书库,添加为一个信任证书:通过list命令查看服务器的证书库,我们可以看到两个输入,一个是服务器证书,一个是受信任的客户端证书:第四步:配置Tomcat服务器打开Tomcat根目录下的/conf/server.xml,找到如下配置段,修改如下:<Connector protocol="org.apache.coyote.http11.Http11Protocol"port="8443" minSpareThreads="5" maxSpareThreads="75"enableLookups="true" disableUploadTimeout="true"acceptCount="100" maxThreads="200"scheme="https" secure="true" SSLEnabled="true"keystoreFile="c:\tomcat.keystore"keystorePass="password"clientAuth="false" sslProtocol="TLS"/>其中,clientAuth指定是否需要验证客户端证书,如果该设置为“false”,则为单向SSL验证,SSL配置可到此结束。

Java实现SSL双向认证的方法

Java实现SSL双向认证的方法

Java实现SSL双向认证的⽅法本⽂实例讲述了Java实现SSL双向认证的⽅法。

分享给⼤家供⼤家参考,具体如下:我们常见的SSL验证较多的只是验证我们的服务器是否是真实正确的,当然如果你访问的URL压根就错了,那谁也没有办法。

这个就是所谓的SSL单向认证。

但是实际中,我们有可能还会验证客户端是否符合要求,也就是给我们每个⽤户颁发⼀个证书,⽐且每个数字证书都是唯⼀的,不公开的。

这样就能通过这个数字证书保证当前访问我服务器的这个⽤户是经过服务器认可的,其他⼈不可访问。

双向认证从第⼀个层⾯上确保了服务器与客户端都是互相认可的。

那么他们之间要进⾏通信,就会在通信协议上附加SSL协议,确保通信的内容是加密的,即使是sniffer这样的⽹络嗅探⼯具看到的都是乱码。

以后给⼤家演⽰下不加密的情况下,⽤sniffer看到的是什么。

恐怕这样你就能提⾼警惕了。

以下内容从⽹络上摘抄加以实际验证后修改的。

模拟场景:Server端和Client端通信,需要进⾏授权和⾝份的验证,即Client只能接受Server的消息,Server只能接受Client的消息。

实现技术:JSSE(Java Security Socket Extension)是Sun为了解决在Internet上的安全通讯⽽推出的解决⽅案。

它实现了SSL和TSL(传输层安全)协议。

在JSSE中包含了数据加密,服务器验证,消息完整性和客户端验证等技术。

通过使⽤JSSE,开发⼈员可以在客户机和服务器之间通过TCP/IP协议安全地传输数据。

为了实现消息认证。

Server需要:1)KeyStore: 其中保存服务端的私钥2)Trust KeyStore:其中保存客户端的授权证书同样,Client需要:1)KeyStore:其中保存客户端的私钥2)Trust KeyStore:其中保存服务端的授权证书在这⾥我还是推荐使⽤Java⾃带的keytool命令,去⽣成这样信息⽂件。

双向证书认证流程

双向证书认证流程

双向证书认证流程双向证书认证,听起来是不是有点高大上呢?其实呀,它就是一种互相验证证书的过程啦。

那这个流程是怎么一回事呢?这就来给你唠唠。

一、什么是双向证书认证。

简单来说,双向证书认证就像是两个人见面互相查看身份证一样。

在网络的世界里,不同的主体(比如说服务器和客户端)都有自己的“身份证”,也就是证书。

这个证书包含了很多关于这个主体的信息,像是它是谁,从哪里来之类的。

而双向证书认证呢,就是双方都要把自己的证书拿出来给对方看,互相确认身份的这么一个过程。

这样做的好处可多啦,可以保证双方通信的安全性,防止那些不怀好意的家伙混进来捣乱呢。

二、准备工作。

1. 证书的获取。

不管是服务器还是客户端,都得先有自己的证书才行。

这证书就像是你在网络世界里的通行证。

一般来说,这个证书是要从专门的证书颁发机构(CA)那里获取的。

这个CA就像是一个非常严格的警察叔叔,他会仔细审查你(这里就是申请证书的主体啦)的身份信息,确定你是合法的之后,才会给你颁发证书。

比如说,你是一家公司,想要一个证书来保证你的服务器和客户之间的安全通信,那你就得向CA提交公司的相关信息,像营业执照啦,法人信息啦等等,经过一系列的审核,才能拿到证书。

2. 配置环境。

有了证书还不够呢,还得把相关的环境配置好。

这就像是你拿到了身份证,还得把身份证放在一个合适的地方,方便拿出来给别人看一样。

对于服务器来说,要在服务器的配置文件里设置好证书的相关参数,告诉服务器这个证书在哪里,怎么用。

客户端也是类似的,要在客户端的软件或者设备里做好相应的配置,让它知道怎么找到自己的证书,并且在需要的时候把证书展示出来。

三、认证过程。

1. 发起请求。

一般是客户端先发起请求啦。

就好比你去一个高档的俱乐部,你得先走到门口跟保安说你要进去一样。

客户端会向服务器发送一个请求,这个请求里面就包含了一些信息,比如说我想要访问你这个服务器,我是谁之类的。

但是这时候服务器还不能轻易相信客户端呀,毕竟谁知道这个请求是不是坏人发出来的呢。

tls双向认证流程

tls双向认证流程

tls双向认证流程
TLS双向认证,也称为客户端认证或互相认证,是一种网络安全协议的扩展,用于建立在传输层上的安全连接。

以下是TLS双向认证的基本步骤:
1. 服务器配置:服务器需要配置受信任的数字证书,该证书由CA签发。

配置包括私钥和公钥。

2. 客户端配置:客户端也需要拥有受信任的数字证书,该证书由同一家CA 签发。

配置包括私钥和公钥。

3. 握手协商:当客户端与服务器建立连接时,它们进行一系列握手协商过程,以确定使用的加密算法和其他参数。

4. 证书交换:在握手过程中,服务器会将其数字证书发送给客户端。

客户端使用自己的证书验证服务器的身份。

5. 客户端证书交换:在握手过程中,客户端会将其数字证书发送给服务器。

服务器使用自己的证书验证客户端的身份。

6. 安全连接建立:如果双方成功验证对方的身份,并且握手协商过程成功,安全连接将建立起来。

双方之间的通信将使用加密算法和密钥来保护数据的机密性和完整性。

TLS双向认证提供了更高的安全性,可以防止恶意主机冒充服务器,并确保只有经过身份验证的客户端可以访问受保护的资源。

它在一些安全敏感的应用中广泛应用,如金融交易、电子商务和企业内部通信。

ssl证书认证流程

ssl证书认证流程

ssl证书认证流程SSL证书是一种数字证书,用于确保网站和用户之间的数据传输的安全性。

它通过对网站身份进行验证,加密数据传输,保护用户的敏感信息免受黑客和恶意攻击。

以下是SSL证书认证的基本流程:1. 申请证书:网站管理员首先需要选择一个可信任的证书颁发机构(CA)进行SSL证书申请。

CA是第三方机构,负责验证和确认网站身份的合法性。

通常,CA会提供多种证书类型,管理员可以根据自己的需求选择适合的证书。

2. 提供身份证明:在申请SSL证书时,管理员需要提交一些必要的身份信息来证明网站的合法性。

这些信息可能包括公司注册文件、域名所有权证明、联系信息等。

CA会对这些信息进行审查,并确保申请者具备使用该域名的权限。

3. 完成验证过程:验证过程是确保网站合法性的重要环节。

CA会与管理员联系,并要求提供一些额外的文件或通过特定的审核流程确认网站的所有权。

这可能包括通过电子邮件发送验证代码到管理员的注册邮箱,或将CA的授权文件添加到网站的根目录。

4. 生成证书:一旦身份验证通过,CA将会生成一个数字证书,并使用自己的数字签名来证明该证书的合法性。

数字证书中包含了网站的公钥和相关信息。

CA会将证书发送给管理员,管理员需要将其安装到网站的服务器上。

5. 配置服务器:一旦证书安装完毕,管理员需要对网站的服务器进行相应的配置,以使其与SSL证书配合工作。

这可能涉及到启用SSL协议、加密传输等细节设置。

配置完成后,网站将可以通过HTTPS协议提供安全的数据传输。

6. 更新证书:SSL证书的有效期通常为一年或更长时间,过期后需要进行更新。

在证书到期前,管理员需要与CA联系并重新申请证书,并按照上述步骤重新进行验证和安装。

通过SSL证书认证流程,网站可以获得一个可信的标识,让用户放心地与其进行交互和传输敏感信息。

同时,网站管理员也应定期检查证书的有效期,并及时进行更新和维护,以保证网站的安全性和可靠性。

SSL双向认证(高清版)

SSL双向认证(高清版)

SSL双向认证(⾼清版)介绍了SSL双向认证的⼀些基本问题,以及使⽤Nginx+PHP基于它搭建https的Webservice。

之前的⽅式只是实现1:1的模式,昨天同事继续实现了n:1的模式,这⾥我再整理记录下。

由于nginx的ssl_client_certificate参数只能指定⼀个客户端公钥,如果增加⼀个客户端进⾏通信就要重新配⼀个server。

n:1的模式是通过CA的级联证书模式实现的,⾸先⾃⼰⽣成⼀套CA根级证书,再借助其⽣成⼆级证书作为client证书。

此时client私钥签名不仅可以通过对应的client公钥验证,还可通过根证书的公钥进⾏验证。

看到这⾥应该豁然开朗了吧,下⾯简单介绍下具体怎么操作:1 准备⼯作1.1 openssl⽬录准备⼀般情况下openssl的配置⽂件都在这个⽬录/etc/pki/tls,so:mkdir /etc/pki/ca_linvocd /etc/pki/ca_linvomkdir root server client newcertsecho 01 > serialecho 01 > crlnumbertouch index.txt1.2 openssl配置准备修改openssl配置vi /etc/pki/tls/f找到这句注释掉,替换为下⾯那句#default_ca = CA_defaultdefault_ca = CA_linvo把整个部分拷贝⼀份,改成上⾯的名字[ CA_linvo ]修改⾥⾯的如下参数:dir = /etc/pki/ca_linvocertificate = $dir/root/ca.crtprivate_key = $dir/root/ca.key保存退出2 创建CA根级证书⽣成key:openssl genrsa -out /etc/pki/ca_linvo/root/ca.key⽣成csr:openssl req -new -key /etc/pki/ca_linvo/root/ca.key -out /etc/pki/ca_linvo/root/ca.csr⽣成crt:openssl x509 -req -days 3650 -in /etc/pki/ca_linvo/root/ca.csr -signkey /etc/pki/ca_linvo/root/ca.key -out /etc/pki/ca_linvo/root/ca.crt ⽣成crl:openssl ca -gencrl -out /etc/pki/ca_linvo/root/ca.crl -crldays 7⽣成的根级证书⽂件都在/etc/pki/ca_linvo/root/⽬录下注意:创建证书时,建议证书密码设置长度>=6位,因为java的keytool⼯具貌似对它有要求。

SSL单向认证和双向认证交互流程

SSL单向认证和双向认证交互流程

SSL单向认证和双向认证交互流程1.SSL单向认证:- 客户端发起握手请求,向服务器发送一个Client Hello消息,包含有关支持的加密算法和协议版本的信息。

- 服务器收到Client Hello消息后,向客户端发送一个ServerHello消息,包含选择的加密算法和协议版本。

-服务器将生成一个数字证书,其中包含服务器的公钥和其他相关信息,并将其发送给客户端。

-客户端使用预装的根证书颁发机构(CA)的公钥验证服务器证书的有效性。

如果验证成功,客户端随机生成一个对称密钥,使用服务器的公钥进行加密,并将其发送给服务器。

-服务器使用私钥解密客户端发送的对称密钥,并将其用作会话密钥。

同时,服务器生成一个数字证书和与会话相关的其他信息,并将其返回给客户端。

-客户端使用会话密钥加密握手过程中的后续通信。

2.SSL双向认证:- 客户端发起握手请求,向服务器发送一个Client Hello消息,包含有关支持的加密算法和协议版本的信息。

- 服务器收到Client Hello消息后,向客户端发送一个ServerHello消息,包含选择的加密算法和协议版本。

同时,服务器生成一个数字证书,其中包含服务器的公钥和其他相关信息,并将其发送给客户端。

-客户端使用预装的根证书颁发机构(CA)的公钥验证服务器证书的有效性。

如果验证成功,客户端将向服务器发送一个已经验证的客户端证书。

-服务器验证客户端证书的有效性,如果验证成功,服务器使用客户端的公钥加密随机生成的会话密钥,并将其发送给客户端。

-客户端使用私钥解密服务器发送的会话密钥,并将其用作会话密钥。

-双向认证的SSL会话将使用会话密钥进行后续通信。

总结:单向认证中,只有服务器需要提供证书来验证其身份,而双向认证中,不仅服务器需要提供证书,客户端也需要提供证书来验证其身份。

单向认证可以确保服务器的身份,双向认证可以确保服务器和客户端的身份。

需要注意的是,以上描述的交互流程是一个简化版本,实际的SSL/TLS握手过程可能涉及更多的消息交换和协商步骤,以确保通信的完整性、安全性和可靠性。

SSL协议(HTTPS)握手、工作流程详解(双向HTTPS流程)

SSL协议(HTTPS)握手、工作流程详解(双向HTTPS流程)

SSL协议(HTTPS)握⼿、⼯作流程详解(双向HTTPS流程)SSL协议的⼯作流程:服务器认证阶段:1)客户端向服务器发送⼀个开始信息“Hello”以便开始⼀个新的会话连接;2)服务器根据客户的信息确定是否需要⽣成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含⽣成主密钥所需的信息;3)客户根据收到的服务器响应信息,产⽣⼀个主密钥,并⽤服务器的公开密钥加密后传给服务器;4)服务器恢复该主密钥,并返回给客户⼀个⽤主密钥认证的信息,以此让客户认证服务器。

⽤户认证阶段:在此之前,服务器已经通过了客户认证,这⼀阶段主要完成对客户的认证。

经认证的服务器发送⼀个提问给客户,客户则返回(数字)签名后的提问和其公开密钥,从⽽向服务器提供认证。

从SSL 协议所提供的服务及其⼯作流程可以看出,SSL协议运⾏的基础是商家对消费者信息保密的承诺,这就有利于商家⽽不利于消费者。

在电⼦商务初级阶段,由于运作电⼦商务的企业⼤多是信誉较⾼的⼤公司,因此这问题还没有充分暴露出来。

但随着电⼦商务的发展,各中⼩型公司也参与进来,这样在电⼦⽀付过程中的单⼀认证问题就越来越突出。

虽然在SSL3.0中通过数字签名和数字证书可实现浏览器和Web服务器双⽅的⾝份验证,但是SSL协议仍存在⼀些问题,⽐如,只能提供交易中客户与服务器间的双⽅认证,在涉及多⽅的电⼦交易中,SSL协议并不能协调各⽅间的安全传输和信任关系。

在这种情况下,Visa和 MasterCard两⼤信⽤卡公组织制定了SET协议,为⽹上信⽤卡⽀付提供了全球性的标准。

SSL协议的握⼿过程 为了便于更好的认识和理解 SSL 协议,这⾥着重介绍 SSL 协议的握⼿协议。

SSL 协议既⽤到了公钥加密技术(⾮对称加密)⼜⽤到了对称加密技术,SSL对传输内容的加密是采⽤的对称加密,然后对对称加密的密钥使⽤公钥进⾏⾮对称加密。

这样做的好处是,对称加密技术⽐公钥加密技术的速度快,可⽤来加密较⼤的传输内容,公钥加密技术相对较慢,提供了更好的⾝份认证技术,可⽤来加密对称加密过程使⽤的密钥。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SSL双向认证证书制作流程
——含单向SSL
一、证书制作:
1、生成服务器密钥(库):
keytool -genkey -alias server -keyalg RSA -keysize 2048 -validity 3650 -dname
"CN=localhost,OU=DTY,O=BMC,L=Beijing,ST=Beijing,C=CN"
-keypass 123456 -keystore server.jks -storepass 123456
CN:要签名的[域名]或[IP](说明:此处为要配置SSL服务器IP 或域名)
OU:组织单位名称,如:[公司注册简称]
O:组织名称,如:[公司英文全称]
L:城市或地区名称,如:[Beijing]
ST:州或省份名称,如:[Beijing]
C:单位的两字母国家代码,如:[CN]
2、验证生成的服务器密钥(库):
keytool -list -v -keystore server.jks -storepass 123456
3、为步骤1生成的服务器密钥(库)创建自签名的证书:
keytool -selfcert -alias server -keystore server.jks -storepass 123456
4、验证生成的服务器密钥(库):
keytool -list -v -keystore server.jks -storepass 123456
5、导出自签名证书:
keytool -export -alias server -keystore server.jks -file server.cer -storepass 123456
说明:此证书为后续要导入到浏览器中的受信任的根证书颁发机构。

6、生成客户端密钥(库):
说明:keytool –genkey命令默认生成的是keystore文件,但为了能顺利导入到IE或其他浏览器中,文件格式应为PKCS12。

稍后,此P12文件将导入到IE或其他浏览器中。

keytool -genkey -alias client -keyalg RSA -keysize 2048 -validity 3650 -dname
"CN=localhost,OU=DTY,O=BMC,L=Beijing,ST=Beijing,C=CN"
-storetype PKCS12 -keypass 123456 -keystore client.p12 -storepass 123456
CN:要签名的[域名]或[IP](特别说明:这里是客户端机构的域名或IP)
OU:组织单位名称,如:[公司注册简称]
O:组织名称,如:[公司英文全称]
L:城市或地区名称,如:[Beijing]
ST:州或省份名称,如:[Beijing]
C:单位的两字母国家代码,如:[CN]
7、提取客户端密钥的公钥:
只有客户端密钥库文件还不行,还需要一个证书文件。

毕竟证书文件才是直接提供给外界的公钥凭证,因此需要将客户端密钥库文件中的公钥导入到某个证书文件中。

keytool -export -alias client -keystore client.p12
-storetype PKCS12 -rfc -file client.cer -storepass 123456
8、将客户端密钥库的公钥导入到服务端密钥库中:
keytool -import -v -file client.cer -keystore server.jks
-storepass 123456
9、验证生成的服务器密钥(库):
keytool -list -v -keystore server.jks -storepass 123456
说明:验证步骤8的公钥是否导出成功。

二、证书导入:
1、导入客户端密钥(库):
a)对于IE浏览器,选择Internet选项,则显示如下:
b)点击证书按钮,显示如下:
c)点击导入,显示如下:
d)点击下一步,显示如下:
注意:选择文件时,必须确认文件格式为:
e)点击下一步,并在密码处键入,创建[客户端密钥(库)]时所
键入的密码,这里是123456:
f)选择下一步,显示如下:
选择[将所有的证书放入下列存储(P)]为:个人,然后点击下一步,显示如下:
g)单击完成,显示如下:
单击确定,自此[客户端密钥(库)]导入浏览器的操作完成。

2、导入服务器密钥(库)受信任的根证书:
a)对于IE浏览器,选择Internet选项,则显示如下:
b)点击证书按钮,显示如下:
c)点击导入,显示如下:
d)点击下一步,显示如下:
e)选择要导入的文件,这里我们选择步骤5导出的server.cer
证书,单击下一步显示如下:
f)选择奖所有的证书放入下列存储:收信人的根证书颁发机构,
点击下一步,显示如下:
g)单击完成,显示如下:
h)由于我们是一个自签名证书,所以windows会给出上面的安全
提示,选择“是”,显示如下:
单击确定,自此[服务器密钥(库)受信任的根证书]导入浏览
器的操作完成。

三、服务器配置SSL:
说明,服务器配置SSL因应用服务器不同,其配置方法也不一样,这里仅以tomcat6为例:
1、配置双向SSL:
a)将服务器密钥(库)文件放置在[%TOMCATE_HOME%/onf]下:
b)修改配置文件[%TOMCATE_HOME%/onf/server.xml]具体配置如
下:
<Connector port="8443" protocol="HTTP/1.1"
2、配置单向SSL:
a)修改配置文件[%TOMCATE_HOME%/onf/server.xml]具体配置如
下:
b)单向证书制作过程描述:
四、补充:
对于证书的安装,在实际使用中一般可以提供一个连接允许用户下载证书。

如下图红框所示:。

相关文档
最新文档