【Java】Java与数字证书

Java与数字证书

证书(Certificate,也称public-key certificate)是用某种签名算法对某些内容(比如公钥)进行数字签名后得到的、可以用来当成信任关系中介的数字凭证。证书发行机构通过发行证书告知证书使用者或实体其公钥(public-key)以及其它一些辅助信息。证书在电子商务安全交易中有着广泛的应用,证书发行机构也称CA(Certificate Authority)。

证书的签发和应用

证书在公钥加密应用中的作用是保证公钥在某些可信的机构发布,其在协议SSL、电子交易协议SET等方面有重要的应用。

图1显示了一个最简单的证书应用方法:

证书的应用步骤是:

(1) A把自己的公钥PKA送到CA(Certificate Authority);

(2) CA用自己的私钥和A的公钥生成A的证书,证书内包括CA的数字签名。签名对象包括需要在证书中说明的内容,比如A的公钥、时间戳、序列号等,为了简化这里不妨假设证书中只有三项内容:A的公钥PKA、时间戳TIME1、序列号IDA。那么CA发送给A的简单证书凭证可表达为:CertA=Eca[TIME1,IDA,PKA];

(3) B同样把自己的公钥PKB送到CA;

(4) B得到CA发布的证书CertB;

(5) A告知B证书CertA;

(6) B告知A证书CertB。

A、B各自得到对方证书后,利用从CA得到的公钥(在CA的自签证书中)验证彼此对方的证书是否有效,如果有效,那么就得到了彼此的公钥。利用对方的公钥,可以加密数据,也可以用来验证对方的数字签名。

本文为了方便说明,并没有使用从CA获得的证书,而是通信双方各自产生自签证书,也就是说图1的A和B并没有经过CA,不过前提是A和B之间是互相拥有对方的证书。

证书的内容和意义

证书核心项 意义
Version 告诉这个X.509证书是哪个版本的,目前有v1、V2、v3
Serial Number 由证书分发机构设置证书的序列号
Signature Algorithm Identifier 证书采用什么样的签名算法
Issuer Name 证书发行者名,也就是给这个证书签名的机构名
Validity Period 证书有效时间范围
Subject Name 被证书发行机构签名后的公钥拥有者或实体的名字,采用X.500协议,在Internet上的标志是惟一的。例如:CN=Java,OU=Infosec,O=Infosec Lab,C=CN表示一个subject name。

时间: 2024-10-12 18:34:41

【Java】Java与数字证书的相关文章

如何用JAVA代码签发数字证书

用JAVA签发数字证书 打开cmd 1.输入D: 2.输入cd keys 3.输入命令查看创建的密钥库的证书列表 keytool -list -v -keystore mykey.keystore -storepass 123456 4. 之前导出过server.cer文件,把这个文件安装到操作系统,过程默认. 5.创建一个密钥对,和之前一样,输入如下命令: --创建密钥对 keytool -genkey -dname "CN=tmp, OU=NC, O=Shanghai University,

Java安全之数字证书

在前面说到,消息摘要用于验证数据完整性,对称与非对称加密用于保证数据保密性,数据签名用于数据的抗否认性,于是集这些安全手段于一身的终极武器--数字证书出现了.数字证书具备了加密/解密的必要信息,包含签名算法,可用于网络数据加密/解密交互,标识网络用户(计算机)身份.数据证书为发布公钥提供了一种简便途径,成为加密算法以及公钥的载体. 数字证书有多种文件编码格式,主要包含CER编码.DER编码等: a.CER(Canonical Encoding Rules,规范编码格式),是数字证书的一种编码格式

java加密与数字证书

加密与数字证书 加密与数字证书 概念 数字摘要 密钥加密技术 私用密钥(对称加密) 公共密钥(非对称加密) 数字签名 数字证书 X.509标准 工具 keytool 示例代码 加密解密 密钥库准备 代码 签名验签 代码 概念 数字摘要 数字摘要就是采用单项Hash函数将需要加密的明文"摘要"成一串固定长度(128位)的密文,这一串密文又称为数字指纹,HASH值或摘要值 ,它有固定的长度,而且不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致. 目前常用的摘要算法为MD5

Java数字签名和数字证书

数字签名 作用:检验jar包是否为公钥发布者的发布的,并且没有被篡改. 过程: 1,作者使用散列算法对jar包生成散列(指纹); 2,作者使用私钥对散列进行加密, 3,将jar包和签名后的散列一起发布. 4,用户使用作者发布的公钥解密散列,得到jar包的指纹; 5,用户使用散列算法对jar生成指纹; 6,对比两个指纹是否一致. 数字证书:权威仍证机构使用自己的私钥对申请认证的用户的公钥进行签名的产物. 作用:检验用户得到的公钥的发布者是否可信 过程: 1,申请者携带材料到认证机构申请数字证书(即

Java加密解密与数字证书的操作

1 keytool命令总结 一.创建数字证书 交互模式 使用默认的密钥库.keystore(文件夹是c: Documents and Settingusername)和算法(DSA) keytool -genkey 默认的别名mykey 密钥库中能够存放多个条目(公钥/私钥对和证书),它们在密钥库中以别名(alias)区分. [plain] view plaincopy keytool -genkey -alias mytest -keyalg RSA -keysize 1024 -keysto

Java 生成数字证书系列(二)剖析数字证书

序 上一篇介绍了一下 CA 证书的几个相关概念,这几个概念还是很重要的,目的在于了解数字证书,以及其的工作原理.这篇文章主要是对 CA 证书进行剖析,讲一下证书的基本构成,这对于生成正确的.可以访问的证书是必不可少的. 构成 废话不多说,直接上内容. 先看一下证书到底是什么,在 Windows 下查看证书时(这里以 cer 为例),界面是这样的. 常规 选项卡里,主要介绍了证书信息,颁发者,和有效日期等. 而 详细信息 选项卡中,包含的信息是比较多的,他们都是以一种 Key - Value 的形

Java 生成数字证书系列(四)生成数字证书(续)

序 上一篇文章讲到了 Java 生成数字证书,使用的是第三方的组件 BC .这篇文章也是介绍生成数字证书的,只不过与上一篇不同的是,这篇采用的是 KeyStore 的存储方式,导出的证书文件格式为 pfx ,这种格式的证书不仅包含有公钥,还包含有私钥.从证书中就可以读取到私钥. 正文 废话不多说,直接上内容. 与上一篇相同,这里也是使用的 Bouncy Castle 提供的组件,不同的是,这里的证书采用的是公钥加密技术12号标准生成的,简写 PKCS12 .具体内容这里就不再详细的介绍了,有需要

Java 密钥库和数字证书

密钥库中可以存放多个条目(公钥/私钥对和证书),它们在密钥库中以别名(alias)区分. 1.cd C:\Program Files (x86)\Java\jdk1.6.0_10\bin 2.生成签名证书:keytool -genkey -v -keystore android.keystore -alias android -keyalg RSA -validity 20000 [-genkey:生成密钥] [-keystore:指定存储位置可加上路径C:\Users\dxcb\android

JAVA中数字证书的维护及生成方

Java中的keytool.exe可以用来创建数字证书,所有的数字证书是以一条一条(采用别名区别)的形式存入证书库的中,证书库中的一条证书包含该条证书的私钥,公钥和对应的数字证书的信息.证书库中的一条证书可以导出数字证书文件,数字证书文件只包括主体信息和对应的公钥.  每一个证书库是一个文件组成,它有访问密码,在首次创建时,它会自动生成证书库,并要求指定访问证书库的密码.  在创建证书的的时候,需要填写证书的一些信息和证书对应的私钥密码.这些信息包括 CN=xx,OU=xx,O=xx,L=xx,