`
sb33060418
  • 浏览: 152031 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

数字证书及安全加密(四)使用CA签发的服务器证书并验证证书链

阅读更多
在上一篇的实践中配置成功了双向SSL,但是使用的是本地用keytool生成的证书而非真正的服务器证书;而且对用户证书的校验仅仅是将用户公钥添加至服务器信任证书库,真正面对大量用户时不可能在服逐个添加用户公钥证书;客户端程序访问多个不同的服务器时也不应该将服务器公钥全部配置进客户端信任证书库。

本篇是如何使用CA签发的服务器证书配置SSL和配置tomcat使用证书链的实践。

1.申请并签发服务器证书
具体过程参考水墨江南的技术博文http://zhuyuehua.iteye.com/blog/1101054

签发的服务器证书中应该包含一张含私钥的证书、根CA证书、服务器CA证书、设备证书。

签发的服务器证书为keystore.jks,密码为password。
d:
cd %JAVA_HOME%/bin
keytool -v -list -keystore D:/lib/keystore.jks -storetype jks -storepass password

查看服务器证书内容,结果如下:
  • itrusca, 2014-1-21, PrivateKeyEntry,
  • server-mid, 2014-1-21, trustedCertEntry,
  • server-root, 2014-1-21, trustedCertEntry,
  • server, 2014-1-21, trustedCertEntry,

其中的PrivateKeyEntry就是服务器证书,剩下三张分别为服务器CA证书、根CA证书和设备证书。
证书链的证书路径是:根CA证书》服务器CA证书》设备证书》服务器证书。

2.签发带证书链的用户证书
用户证书为user.pfx,密码为password。
查看用户证书信息
keytool -list -keystore D:/lib/user.pfx -storetype pkcs12 -storepass password

可以看到有一张带私钥的证书
  • user, 2014-1-23, PrivateKeyEntry

以及证书链路径:根CA》用户CA》用户证书。

3.导出用户CA证书
需要将用户CA从用户证书链中导出。

双击user.pfx,将用户证书导入系统证书库中。

在系统证书列表中,选中刚导入的用户证书》点击“查看”按钮查看证书信息》点击“证书路径”选项卡查看证书路径》选中用户CA证书后点击“查看证书”按钮查看用户CA证书信息》点击证书窗口中的“详细信息”选项卡》点击“复制到文件”按钮》存储至:D/lib/ca-mid.cer。

4.将用户CA证书导入服务端信任证书库
keytool -import -file D:/lib/ca-mid.cer -keystore D:/lib/servertrust.jks -alias ca-mid -keypass password -storepass password
keytool -list -keystore D:/lib/servertrust.jks -storepass password 


5.tomcat配置
tomcat/conf/server.xml中关于证书库配置如下
           keystoreFile="D:/lib/keystore.jks"    
           keystorePass="password"
           truststoreFile="D:/lib/servertrust.jks"    
           truststorePass="password"
           

重启tomcat后,使用浏览器访问https://server:8443/,使用user证书访问成功。

使用客户端程序访问https服务时该如何配置?参考第三篇博文中的配置内容。

6.将服务器证书导入客户端信任证书库
需要先将服务器公钥证书从keystore.jks中导出。
keytool -export -alias itrusca -keystore D:/lib/keystore.jks -rfc -file D:/lib/itrusca.cer -storepass password  -keypass password

导入至客户端信任证书库
keytool -import -file D:/lib/itrusca.cer -keystore D:/lib/clienttrust.jks -alias itrusca -keypass password -storepass password
keytool -list -keystore D:/lib/clienttrust.jks -storepass password 



6.客户端程序访问
客户端程序配置虚拟机参数
 -Djavax.net.ssl.keyStore=D:/lib/user.pfx -Djavax.net.ssl.keyStoreType=PKCS12 -Djavax.net.ssl.keyStorePassword=password -Djavax.net.ssl.trustStore=D:/lib/clienttrust.jks -Djavax.net.ssl.trustStorePassword=password -Djavax.net.ssl.trustStoreType=JKS

或在程序内加载客户端证书库及信任证书库后可访问https服务。

7.用户CA签发的其他用户证书
在系统证书库中装载其他由用户CA签发的用户证书后,可在浏览器使用该证书访问https服务,说明服务端配置信任用户CA证书链成功。


在程序中,如果遇到需要连接多个由同一服务器CA证书签发的服务器证书时该怎么办?很简单,参照服务端信任用户CA一样,只要让客户端信任服务器证书的上级证书(服务器CA证书)即可。

8.导出服务器CA证书
keytool -export -alias server-mid -keystore D:/lib/keystore.jks -rfc -file D:/lib/server-mid.cer -storepass password  -keypass password


9.将服务器CA证书导入客户端信任证书库
删除D:/lib/clienttrust.jks后,
keytool -import -file D:/lib/server-mid.cer -keystore D:/lib/clienttrust.jks -alias server-mid -keypass password -storepass password
keytool -list -keystore D:/lib/clienttrust.jks -storepass password 


10.服务器CA证书签发的其他服务器证书
使用客户端程序连接至同一体系下的其他服务器证书时,测试访问https服务成功,说明客户端配置信任服务器CA证书链成功。
分享到:
评论

相关推荐

    CA数字证书认证

    10. **信任链**:在验证证书时,不仅要看证书本身,还需要检查签发证书的CA是否被系统信任,以及这个CA的证书是否由更高一级的CA签发,形成一个信任链,直到找到一个根CA,该根CA的公钥通常是预装在系统中的。...

    PKI/CA与数字证书技术大全

    2. **认证授权机构(CA)**:CA是PKI中的关键角色,负责验证并签发数字证书,确保证书持有者的身份真实可信。CA的职责包括证书的申请、审核、发放、撤销和更新。 3. **数字证书**:数字证书是一个包含公开密钥及其...

    数字证书与加密认证试验

    3. **证书签发**:将证书请求发送给证书颁发机构(CA),由CA审核并签发正式的数字证书。 4. **安装与测试**:将签发的数字证书安装到服务器上,并进行功能测试,确保一切正常运行。 ### 总结 通过本次实验的学习...

    数字证书驱动 CA驱动

    在IT领域,数字证书驱动(CA驱动)是一个关键的安全组件,它涉及到网络安全、身份验证以及数据加密等多个方面。本文将详细解析数字证书、数字证书驱动和CA(证书颁发机构)的相关概念,以及它们在实际应用中的重要性...

    验证ssl的证书(pem格式)

    5. **数字签名**:由颁发者使用其私钥对证书信息进行加密,以验证证书未被篡改。 当涉及到PEM格式的证书时,文件通常包含证书链,即中间证书和根证书,这对于验证是至关重要的。`ca_linvo`这个文件名可能指的是CA...

    CA证书资源包(全版本通用)

    这个文件通常是一个二进制格式的X.509数字证书,用于构建和验证信任链,确保用户与服务器之间的通信安全。 **CA证书的工作原理:** 在网络安全中,CA证书扮演着信任中介的角色。当用户尝试访问一个网站时,浏览器会...

    缺少证书链 SSL缺少证书链 怎么解决.zip

    4. **验证证书有效性**:使用在线工具,如在提供的URL中提到的"SSL-TLS安全评估报告",输入您的域名和端口,检查证书链的完整性和有效性。 此外,对于开发者来说,理解证书链的原理和配置是至关重要的,特别是在...

    iOS 中对 HTTPS 证书链的验证.pdf

    客户端会逐级验证证书链,使用每个证书的签发者的公钥来解密签名,验证证书内容是否被篡改。如果证书链的末端是客户端操作系统或浏览器已知和信任的根证书,那么整个链就被认为是有效的。 对于根证书,它们是自签名...

    GmSSL源码与签发SM2证书

    4. **验证证书**:收到证书后,客户端会使用CA的公钥验证证书的签名,确认其有效性。 5. **部署证书**:最后,将生成的SM2证书部署到服务器或客户端,以进行安全的SSL/TLS连接。 在压缩包中的`GmSSL签发SM2证书....

    zabbix配置数字证书加密.docx

    3. 为服务器生成CSR(Certificate Signing Request)(server.csr),并使用CA证书签发服务器证书(server.crt) 4. 同样为客户端生成CSR(client.csr),并签发客户端证书(client.crt) 最后,将生成的CA证书、...

    微软数字证书操作API函数使用

    - **证书链验证**:使用`Crypt32.dll`库中的函数,如`CertVerifyCertificateChainPolicy`,可以验证证书链的完整性和有效性。 理解并熟练使用微软的数字证书操作API,对于开发安全的应用程序、构建安全的网络环境...

    数字证书根证书DEMO

    数字证书是一种电子文档,由权威的第三方机构——证书颁发机构(CA,Certificate Authority)签发,用于验证网络实体(如个人、服务器或设备)的身份。这种验证机制基于公钥基础设施(PKI,Public Key ...

    CA 数字证书培训教程PPT版

    PKI的核心是数字证书,它是一种由CA签发的电子文档,用于证明网络实体(如个人、服务器或设备)的身份。数字证书包含了公钥、持有者的身份信息以及CA的数字签名,确保了公钥的可信性。 在传统的用户名加口令验证...

    domino使用数字证书

    - **3.2.2 下载证书**:一旦身份验证通过,CA机构会签发数字证书。申请者可以通过电子邮件或其他指定方式获取到证书文件。 ##### 3.3 安装CA证书链 - **3.3.1 下载证书链并导出各CA证书**:除了服务器证书外,还...

    HebcaLoginDemo123_数字证书登录验证功能_

    在IT行业中,数字证书登录验证功能是网络安全领域的重要一环,尤其在企业级应用和高安全性的系统中广泛使用。这个名为"HebcaLoginDemo123"的项目显然是一个演示了如何通过数字证书进行用户身份验证的示例。下面我们...

    看图片 读故事:轻松理解数字签名和数字证书 pdf

    5. **HTTPS协议示例**:在Web安全通信中,服务器向客户端发送包含数字证书的响应,客户端检查证书的颁发者是否为信任的CA,并验证证书的完整性和有效性,确保后续通信的安全。 ### 安全保障机制 为了增强安全性,...

    C和C++代码锦囊数字证书

    3. 证书验证:对服务器或客户端的证书进行验证,检查是否由受信任的CA签发,证书是否过期,以及证书链是否完整。 4. 加密和解密:使用公钥进行加密,私钥进行解密,实现数据的安全传输。 5. SSL/TLS连接:在客户端和...

    基于tls的CA测试证书

    测试这些证书时,可以模拟客户端和服务器的交互,验证证书的正确性、有效性以及能否建立安全的TLS连接。这对于开发、测试和调试网络服务的安全配置至关重要。同时,了解并熟悉如何处理基于TLS的CA证书对于任何涉及...

    CA证书制作工具

    了解CA证书的制作不仅有助于个人学习网络安全,对于企业来说也至关重要,可以自建内部CA系统,以管理和控制自己的数字证书,确保企业内部通信的安全。在实际操作中,需注意证书的有效期、信任链的建立以及证书撤销...

    基于云计算的数字证书大批量签发应用的研究与实践.pdf

    数字证书由证书授权中心(CA)签发,并包含了证书持有者的公钥和身份信息,使得数据交换双方能够建立安全的通信链接。 数字证书的签发、管理、使用和撤销是一个复杂的流程,需要安全高效的技术支撑。云计算环境为此...

Global site tag (gtag.js) - Google Analytics