二、 Java中的数字证书的生成及维护方法
Java中的keytool.exe可以用来创建数字证书,所有的数字证书是以一条一条(采用别名区别)的形式存入证书库的中,证书库中的一条证书包含该条证书的私钥,公钥和对应的数字证书的信息。证书库中的一条证书可以导出数字证书文件,数字证书文件只包括主体信息和对应的公钥。
每一个证书库是一个文件组成,它有访问密码,在首次创建时,它会自动生成证书库,并要求指定访问证书库的密码。
在创建证书的的时候,需要填写证书的一些信息和证书对应的私钥密码。这些信息包括 CN=xx,OU=xx,O=xx,L=xx,ST=xx,C=xx,它们的意思是:
CN(Common Name名字与姓氏)
OU(Organization Unit组织单位名称)
O(Organization组织名称)
L(Locality城市或区域名称)
ST(State州或省份名称)
C(Country国家名称)
可以采用交互式让工具提示输入以上信息,也可以采用参数
-dname "CN=xx,OU=xx,O=xx,L=xx,ST=xx,C=xx"来自动创建。
1、示例
如下所示一句采用交互式创建一个证书,指定证书库为 abnerCALib,创建别名为abnerCA的一条证书,它指定用RSA算法生成,
且指定密钥长度为 1024,证书有效期为3650天:
C:\j2sdk1.4.1_01\mykeystore>keytool -genkey -alias abnerCA -keyalg RSA -keysize 1024 -keystore abnerCALib -validity 3650 |
如下图所示:
上图中最后一步,我们输入的是 CN,代表中国的缩写,也可以直接输入“中国”两个字。
2、证书的操作方法
● 证书的显示
如:
keytool –list –keystore abnerCALib |
将显示 abnerCALib证书库的的所有证书列表:如下图示:
又如: keytool -list -alias abnerCA -keystore abnerCALib
将显示 abnerCALib证书库中别名为abnerCA的证书的信息。如下图所示:
又如: keytool -list -v -alias abnerCA -keystore abnerCALib
将显示证书的详细信息( -v参数)如下图所示:
● 将证书导出到证书文件
如: keytool -export -alias abnerCA -file abnerCA.cer -keystore abnerCALib
将把证书库 abnerCALib中的别名为abnerCA的证书导出到abnerCA.cer证书文件中,
它包含证书主体的信息及证书的公钥,不包括私钥,可以公开,如下图所示 :
上面导出的证书文件是以二进制编码文件,无法用文本编辑器正确显示,因此不利用公布证书,可以加上 -rfc参数以一种可打印的编者编码输出。
如:
keytool -export -alias abnerCA -file abnerCA.cer -keystore abnerCALib -storepass 100200 –rfc |
这个命令在命令行中指定了证书库的访问密码,同时指定以可查看编码的方式输出。
3、通过证书文件查看证书的信息
通过命令 :keytool –printcert –file abnerCA.cer可以查看证书文件的信息。
也可以在 windows中双击产生的证书文件直接查看。
● 证书条目的删除
keytool的命令行参数-delete可以删除密钥库中的条目,如:
keytool -delete -alias abnerCA -keystore abnerCALib |
这条命令将 abnerCALib库中的abnerCA这一条证书删除了。
● 证书条目口令的修改
如:
keytool –keypasswd –alias abnerCA –keystore abnerCALib |
可以以交互的方式修改 abnerCALib证书库中的条目为abnerCA的证书。
Keytool –keypasswd –alias abnerCA –keypass 123456 –new 200100 –storepass 1002 00 –keystore abnerCALib |
这一行命令以非交互式的方式修改库中别名为 abnerCA的证书的密码为新密码123456,行中的200100是指该条证书的原密码, 1002 00是指证书库的密码。
1
分享到:
相关推荐
### Java安全通信、数字证书及应用实践 #### 一、基础知识 在计算机网络通信中,保障数据的安全性和完整性至关重要。为了确保数据在传输过程中的安全,通常会采用一系列的技术手段来防止数据被篡改或窃取。其中,*...
Java 数字证书操作是网络安全领域中的重要组成部分,主要用于身份验证和数据加密,确保网络通信的安全。在Java中,我们可以利用Java Cryptography Extension (JCE) 和 Java Secure Socket Extension (JSSE) 这些强大...
在这个"Java 数字签名、数字证书生成源码"压缩包中,包含了实现这些功能的源代码,对于理解Java安全编程和实际应用具有很高的价值。 1. **数字签名** 数字签名是一种用于验证电子文档完整性和发送者身份的技术。在...
总之,`JAVA keytool`数字证书生成及应用是一个涵盖密钥对管理、证书创建、导入导出、以及安全配置等多个方面的重要话题。了解并熟练掌握这些操作,可以帮助开发者确保Java应用程序的安全性,并有效地进行网络通信的...
通过研究和实践这些源码,开发者可以深入理解Java的安全模型,学会如何在实际项目中实现数字签名和数字证书的功能,以确保通信的安全性。这将有助于提升开发者的专业技能,特别是在处理涉及敏感数据或网络通信的Java...
总之,Java数字证书是网络通信安全的关键组成部分,理解和熟练运用Java中关于数字证书的API,对于开发安全的应用至关重要。通过学习和实践,开发者可以创建自己的证书,管理KeyStore,以确保应用程序的数据传输和...
总的来说,这个主题涵盖了Java中处理加密和安全通信的关键技术,包括数字证书、HTTPS协议以及与之相关的类和接口。理解和熟练运用这些知识,将有助于构建安全、可靠的网络应用。在实际项目中,开发者需要根据具体...
这些源码可以作为学习和实践的起点,帮助开发者更好地理解和应用Java中的数字签名和数字证书技术。通过分析和运行这些代码,我们可以深入理解这些安全机制的工作原理,并在实际项目中使用它们来保护数据的安全,确保...
总之,Java 数字签名和数字证书是确保网络通信安全的重要工具。理解其工作原理并能够熟练地在Java中实现它们,对于任何Java开发者来说都是必要的技能。这个源码压缩包提供了实践这些概念的实际示例,是学习和研究的...
在安卓系统中,数字证书用于验证应用程序的签名,确保应用未被篡改,并且能够进行安全的网络通信,如HTTPS连接。 安卓系统支持多种类型的数字证书,包括X.509证书,它是互联网上最常用的证书格式。X.509证书包含...
3. **数字证书与密钥管理**:在SSL/TLS中,数字证书用于验证通信双方的身份,Java提供KeyManager和TrustManager接口来管理和验证证书。开发者可以使用KeyStore类来存储和管理私钥、公钥以及信任的根证书。 4. **...
8. **分布式Java应用的安全基础设施**:A Security Infrastructure for Distributed Java Applications.pdf可能涵盖了在分布式环境中保护服务和通信的策略,如SSL/TLS加密、数字证书、消息认证码和分布式会话管理。...
密钥交换过程中,服务器会发送其数字证书,包含公钥,客户端使用该公钥加密一个随机值,然后发送给服务器,服务器用私钥解密,这样双方就拥有了共享的秘密,用于后续的对称加密通信。证书验证则是为了确保服务器的...
《Java安全性编程指南》是一本深入探讨如何在Java平台上实现安全编程的重要著作。...通过深入理解和实践书中的知识,开发者能够创建出更加坚固、可靠的Java应用程序,抵御日益复杂的网络安全威胁。
在设计一个加密安全的Java即时通信系统时,我们需要考虑多个关键方面,确保用户数据的隐私和安全性。以下是一些核心知识点: 1. **Java平台**:Java是一种跨平台的编程语言,适合开发分布式网络应用程序,如即时...
在本"SSL安全网络通信源码"中,我们将探讨如何利用自签名的服务器端和客户端数字证书来实现双方的双向认证。 首先,让我们了解SSL通信的基本过程: 1. **握手阶段**:当客户端(例如浏览器)尝试连接到服务器时,...
Java安全性编程是一个重要的主题,尤其是在开发企业级应用或者网络服务时。它涉及到多个层面,包括防止恶意代码执行、保护用户数据、确保程序的完整性和稳定性等。本实例集主要关注如何在Java环境中实现安全的多线程...
7. Java安全套接字扩展包(JSSE):用于在Java应用程序中实现SSL/TLS加密,确保网络通信的安全性。 8. Java鉴别与授权服务(JAAS):用于处理用户认证和授权,提供了一种标准的机制来处理Java应用程序的安全需求。 ...