电子商务于电商购物网站面临控制消费者购买行为的元素是什么?

乘胜互联网技术的飞速发展,愈来愈多的买主一度休饱于以传统市场进商品,网上购物的省时省力让消费者尤其注重于以网上花,电商购物网站要想赢得网上消费者之接,就得了解决定消费者选购行为的元素有怎样?

引言

一样、消费者之生品质水平

可以说于教育程度更加强的主顾,网络购物的效率也更强;同时,经济收入水平为消费者提供了肯定之物质基础,收入水平越强之消费者消费水平也会见越来越强,而对于电商网站的劳务呢会持有比高要求,因此,独立电子商城网站做好劳务为是格外第一之。

数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息与公开密钥的文书。为切实网络安全化标准,如今多数底
B2B、B2C、P2P、O2O
等商业网站,含有重要企业资料个人资料的信资信网站,政府单位金融机构等劳务网站大部分且用了数字证书来增长网络的安全性。
数字证书一般由经国家认证的权威机构颁发,即CA(例如中国列地方的CA公司)中心签发之证明,也得以由公司级CA系统进行签发,例如:Symantec、ResellerClub、数安时等。开发人员也得透过工具自动生成证书进行支付,但切莫经过认证的证明将被视为无效证书,不保险安全维护,但以可正常运行。
每当当时篇文章里拿为大家介绍数字证书的成形使用过程,以及针对性数码进行加密、解密、签名、验签的应用办法。
可望会针对各位的就学研究有助,当中有错漏的地方约点评。

老二、电子商务购物网站的便民

网上购物省时省力,这吗是顾客喜爱上网购物的由有,商务购物不让时空、空间的限,在夫人看看网站、点点鼠标,商品就是可送货上门,在家坐等收货。所以电商网站以物流及发货速度上使搞好有关工作,让消费者享有一个上佳的网购体验。

 

其三、电商购物网站面临之货物价位

对消费者来说,价格虽非是决定商品采购的绝无仅有要素,但也是考虑请商品的要害因素。在实业店跟购物网站看到同一的货色,消费者首先看的虽是商品之价位,价格低者会比易于取得消费者的迎接,所以独立电商网站即足以经过价低取胜,引起消费者的志趣。

 

季、购物网站个性化的货色

对此网上消费者来说,购物网站商品的独特性是影响消费者选购之重要元素之一,所以并无是所有的货物都严丝合缝当网上销售,网络直达的大多数买主还是追求个性独立及时尚流行之华年顾客,这就算强调了电子商务购物系统要使询问网络消费者的市场需求,做好网站的固化,并对准该善宣传拓宽计划。

综述,在打听完决定消费者买行为之要素后电子商务购物网站可以因这同一名目繁多的元素来善网站的稳定,制定中的营销策略。


笔者:云朵匠 |
本文由数商云原创(微信ID:shushangyun_com),转摘请标明出处。

数商云是国内著名的店家级电商平台开发服务商,为铺面级公司提供最佳的电商平台搭建模式(如:B2B/B2B2C/B2C/O2O/新零售等),以及针对性不同行业统筹一站式的电商解决方案服务。

目录

一律、数字证书介绍

其次、加密算法介绍

其三、生成数字证书的点子

季、获取公钥与私钥

五、数字证书加密和解密

六、数字证书签名以及验签

 

 

 

一如既往、数字证书介绍

 

1.1 什么是数字证书

数字证书就是互联网通讯中标志通讯各方身份信息之一律拧数字,提供了一样种于Internet上说明通信实体身份的方法,数字证书不是数字身份证,而是身份验证部门为在数字身份证上的一个节要冲(或者说加于数字身份证及的一个署)。它是由权威机构——CA机构,又叫做证书授权(Certificate
Authority)中心批发的,人们可以在网上用她来识别对方的身价。

太简便的证件包含密钥、名称及证件授权中心的数字签名。数字证书还有一个生死攸关之特点就是是就在特定的时间段外有效。数字证书是一模一样种权威性的电子文档,可以由高于公正的老三正值机构,即CA(例如中国各国地方的CA公司)中心签发之证明,也得以由供销社级CA系统进行签发。

 

电子商务 1

 

图 V.1.1

1.2 数字证书的归类

由数字签名使用对象的角度分,目前的数字证书类型主要概括:个人身份证书、企业要机关身份关系、支付网关证书、服务器证书、安全电子邮件证书、个人代码签名证书,这些数字证书特点各有不同。

  • 个人身份证书

适合 X.509
标准的数字安全关系,证书中含有个人身份信息以及个体的公钥,用于标识证书持有人的个人身份。数字安全关系及对应之私钥存储于
E-key 
中,用于个人在网上开展合同签署、定单、录入审核、操作权限、支付信息相当倒被表明位置。 

  • 信用社还是单位身份证件

适合 X.509
标准的数字安全关系,证书被寓企业信息以及企业之公钥,用于标识证书有公司的地位。数字安全关系及对应之私钥存储于
E-key 或 IC
卡中,可以用于公司以电子商务方面的对外活动,如合同签字、网上证券交易、交易支付信息等地方。 

  • 出网关证书

支出网关证书是证明签发中心对支付网关签发的数字证书,是开发网关实现数量加解密的显要工具,用于数字签名和信息加密。支付网关证书仅用于开发网关提供的劳动(Internet
上各种安全磋商和银行现有网络数据格式的转移)。支付网关证书只能在中状态下利用。支付网关证书不可让申请者转让。 

  • 服务器证书

适合 X.509
标准的数字安全关系,证书被涵盖服务器信息以及服务器的公钥,在网络通讯中用于标识和证明服务器的位置。数字安全关系及呼应的私钥存储于
E-key
中。服务器软件利用关系机制确保与外服务器或客户端通信时双方身份的真正、安全性、可信任度等。 

  • 店铺还是单位代码签名证书

代码签名证书是 CA
中心签发给软件提供商的数字证书,包含软件提供商的位置信息、公钥及 CA
的签字。软件提供商动用代码签名证书对软件拓展签约后置 Internet
上,当用户在 Internet
上产卵充斥该软件时,将会见沾提拔,从而可以确信:软件之源于;软件打签约后交下载前,没有遭受修改或者损坏。代码签名证书可以对
32-bit .exe 、 .cab 、 .ocx 、 .class 等先后及文件 进行签字。 

  • 安电子邮件证书

切 X.509 标准的数字安全证明,通过 IE 或 Netscape 申请,用 IE
申请的证书存储于 WINDOWS 的注册表中,用 NETSCAPE 
申请之积存于个人用户目录下的文本中。用于安全电子邮件或朝内需客户验证的
WEB 服务器(https 服务) 表明身份。

  • 个人代码签名证书

私代码签名证书是 CA
中心签发给软件提供人的数字证书,包含软件提供个人的位置信息、公钥及 CA
的签署。软件提供人利用代码签名证书对软件拓展签约后置放 Internet
上,当用户在 Internet
上生充斥该软件时,将会见得到提拔,从而可以确信:软件的来源于;软件打签署后交下载前,没有中修改或磨损。代码签名证书可以对
32-bit .exe 、 .cab 、 .ocx 、 .class 等先后和文件进行签约。

于数字证书的技术角度分,CA中心发放的证书分为两好像:SSL证书和SET证书。一般地游说,SSL
证书(安全宪章接层)是劳动被银行对商店或者商店对商店的电子商务活动的;而SET(安全电子贸易)证书则服务被持卡消费、网上购物。虽然它们都是用以识别身份以及数字签名的证明,但她的信任体系完全不同,而且所抱的正经吧未均等。

 

1.3 数字证书的格式

关系主要的文件类型和协商来:
PEM、DER、PFX、JKS、KDB、CER、KEY、CSR、CRT、CRL 、OCSP、SCEP等。

1.3.1 PEM 格式

Openssl以 PEM(Privacy Enhanced Mail)格式来存放各种消息,它是 openssl
默认使用的音讯寄存方式。Openssl 中的 PEM 文件一般包含如下信:
情节类型:表明以文件存放的是什么信息内容,它的样式吗“——-BEGIN XXXX
——”,与终极的“——END XXXX——”对应。
头信息:表明数据是一旦吃拍卖后存放,openssl
中用的卓绝多之是加密信,比如加密算法和初始化向量 iv。
信息体:为 BASE64 编码的多少。可以概括有私钥(RSA 和 DSA)、公钥(RSA
和 DSA)和 (x509) 证书。它存储用 Base64 编码的 DER 格式数据,用 ascii
报头包围,因此可系统里的文书模式传输。
运用PEM格式存储的关系:

-----BEGIN CERTIFICATE-----
MIIF6TCCBNGgAwIBAgIQSSOR8EYFvAGtG16qv0lZ4DANBgkqhkiG9w0BAQsFADBC
MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMS
UmFwaWRTU0wgU0hBMjU2IENBMB4XDTE3MDQyNDAwMDAwMFoXDTE5MDQyNDIzNTk1
OVowITEfMB0GA1UEAwwWc2VjdXJpdHkucHVqaW53YW5nLmNvbTCCASIwDQYJKoZI
hvcNAQEBBQADggEPADCCAQoCggEBANrPWriCfyigreL9cVAyEPesYScRd176xhH0
.............
-----END CERTIFICATE-----

行使PEM格式存储的私钥:

-----BEGIN RSA PRIVATE KEY-----
MIIF6TCCBNGgAwIBAgIQSSOR8EYFvAGtG16qv0lZ4DANBgkqhkiG9w0BAQsFADBC
MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMS
UmFwaWRTU0wgU0hBMjU2IENBMB4XDTE3MDQyNDAwMDAwMFoXDTE5MDQyNDIzNTk1
OVowITEfMB0GA1UEAwwWc2VjdXJpdHkucHVqaW53YW5nLmNvbTCCASIwDQYJKoZI
hvcNAQEBBQADggEPADCCAQoCggEBANrPWriCfyigreL9cVAyEPesYScRd176xhH0
.............
-----END RSA PRIVATE KEY-----

动用PEM格式存储的证明请求文件:

-----BEGIN CERTIFICATE REQUEST-----
MIIF6TCCBNGgAwIBAgIQSSOR8EYFvAGtG16qv0lZ4DANBgkqhkiG9w0BAQsFADBC
MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMS
UmFwaWRTU0wgU0hBMjU2IENBMB4XDTE3MDQyNDAwMDAwMFoXDTE5MDQyNDIzNTk1
OVowITEfMB0GA1UEAwwWc2VjdXJpdHkucHVqaW53YW5nLmNvbTCCASIwDQYJKoZI
hvcNAQEBBQADggEPADCCAQoCggEBANrPWriCfyigreL9cVAyEPesYScRd176xhH0
.............
-----END CERTIFICATE REQUEST-----

1.3.2 DER 格式

识假编码规则 (DER)
可含蓄有私钥、公钥和证书。它是大部分浏览器的缺省格式,并循 ASN1 DER
格式存储。它是凭报头的 - PEM 是为此文件报头包围的 DER。
PFX 或 P12 – 公钥加密标准 #12 (PKCS#12)
可含蓄有私钥、公钥和证书。其坐老二前行制格式存储,也叫做 PFX
文件。通常可以拿Apache/OpenSSL使用的“KEY文件 +
CRT文件”格式合并转换为规范的PFX文件,你可以用PFX文件格式导入到微软IIS
5/6、微软ISA、微软Exchange
Server等软件。转换时欲输入PFX文件之加密密码。

1.3.3 JKS格式

习以为常可以拿Apache/OpenSSL使用的“KEY文件 + CRT文件”格式”转换为标准的Java
Key
Store(JKS)文件。JKS文件格式被普遍的采用在基于Java的WEB服务器、应用服务器、中间件。你可以拿JKS文件导入到TOMCAT、
WEBLOGIC 等软件。

1.3.4 KDB格式

一般可以拿Apache/OpenSSL使用的“KEY文件 + CRT文件”格式转换为业内的IBM
KDB文件。KDB文件格式被周边的使在IBM的WEB服务器、应用服务器、中间件。你可拿KDB文件导入到IBM
HTTP Server、IBM Websphere 等软件。

1.3.5 CSR 格式(证书请求文件 Certificate Signing Request)

生成 X509 数字证书前,一般先由用户提交证明申请文件,然后由 CA
来签发证书。大致过程如下(X509 证书申请的格式标准为 pkcs#10 和
rfc2314):
用户生成自己之共用钥对;
结构自己的证明申请文件,符合 PKCS#10
标准。该公文根本包括了用户信息、公钥以及有而挑选的性信息,并因而自己的私钥给该内容签名;
用户用关系申请文件提交给 CA;
CA 验证签名,提取用户信息,并加上另外消息(比如颁发者等信息),用 CA
的私钥签发数字证书;
证实:数字证书(如x.509)是以用户(或外实体)身份跟公钥绑定的音信载体。一个官的数字证书不仅使吻合
X509 格式规范,还非得发
CA的署名。用户不仅发生自己之数字证书,还须有照应的私钥。X509v3数字证书主要含有的始末来:证书版本、证书班号、签名算法、颁发者信息、有效时间、持有者信息、公钥信息、颁发者
ID、持有者 ID 和壮大项。

1.3.6 OCSP格式(在线证书状态协议 Online Certificate
StatusProtocol,rfc2560)

用来实时表明证书状态。OCSP 客户端通过查询
OCSP服务来确定一个证之状态,可以提供于使用者一个要多独数字证书的管用资料,它白手起家一个只是实时响应的体制,让用户可实时确认各个一样摆证书的实用,解决由于CRL引发的安康问题。。OCSP
可以由此 HTTP合计来实现。rfc2560 定义了 OCSP 客户端以及劳务端的音格式。

1.3.7 CRL格式(证书吊销列表 Certification Revocation List)

大凡一律栽含有撤销的证件列表的签字数据结构。CRL是证明撤销状态的披露形式,CRL
就像信用卡的非法名单,用于公布某些数字证书不再实用。CRL是一模一样种离线的证件状态信息。它坐得之周期进行更新。CRL
可以分成了 CRL和增量 CRL。在一齐 CRL中含了拥有的给撤证书信息,增量
CRL 由同样系列之 CRL 来表明被取消的证书信息,它每次发布之 CRL 是指向前面发布
CRL的增量扩充。基本的 CRL
信息有:被撤回证书班号、撤销时间、撤销原因、签名者以及 CRL
签名等信息。基于 CRL的求证是平等种不严加的关系认证。CRL 能证实在 CRL
中被撤销的证明是无效的。但是,它不可知于出无在
CRL中之关系之状态。如果实施从严的说明,需要动用在线方式展开说明,即
OCSP认证。一般是由于CA签名的同样组电子文档,包括了深受撇下证书之唯一标识(证书序列号),CRL用来排有既过期或丢弃的数字证书。它每隔一段时间就会见更新,因此要定期下充斥该清单,才见面取得时消息。

1.3.8 SCEP (简单证书注册协议)

冲文件之证明登记方式亟待打你的本地电脑以文件文件复制与糊到关系发布基本,和由证书发布中心复制与糊到你的地方电脑。
SCEP可以活动处理者进程可CRLs仍然要手工的以地面电脑和CA发布中心间进行复制与糊。

1.3.9 PKCS7 (加密信语法(pkcs7)

凡是各种消息存放的格式标准。这些信包括:数据、签名数据、数字信封、签名数字信封、摘要数据以及加密数据。

1.3.10 PKCS12 (个人数字证书标准,Public Key Cryptography Standards
#12)

蕴含了公钥和私钥的老二向前制格式的关系形式,一般为 pfx
作为证明文件后缀名。用于存放用户证书、crl、用户私钥以及证书链,pkcs12
中的私钥是加密存放的。

1.3.11 CER   一般指使用DER格式的证书

CER 证书一般是盖 DER 二向前制编码的证件,证书中从未私钥,以 *.cer
作为关系文件后缀名。证书可以以 BASE64 编码输出,以Base64
编码的证件证书中绝非私钥,BASE64 编码格式的证书文件,也是因 *.cer
作为关系文件后缀名。

1.3.12 CRT    证书文件,可以是PEM格式

1.3.13 KEY   一般指PEM格式的私钥文件

回到目录

 

老二、加密算法介绍

当变化无常数据证明是用户可卜不同的加密方法对数码开展加密,常见的加密算法可以分成三类,对如加密算法,非对如加密算法和Hash算法。

2.1 对如加密

在对如加密算法中,加密使的密钥和解密使用的密钥是如出一辙的。也就是说,加密以及解密都是下的与一个密钥。因此对如加密算法要确保安全性的话语,密钥要抓好保密,只能被用的总人口懂,不克对外公开。在针对如加密算法中,加密同解密都是运以及一个密钥,不分公钥和私钥。

本着如加密算法的独到之处在加解密之大快与行使长密钥时的难破解性。假设两个用户用采取对如加密办法加密然后换成数据,则用户最少要2只密钥并交换使用,如果企业内用户有n个,则整个企业协同需要n×(n-1)
个密钥,密钥的别和散发以改为企业信息部门的噩梦。对如加密算法的安全性在加密密钥的保留状况,但求公司中各个一个装有密钥的人头都保守机密是未可能的,他们日常会顺手的拿密钥泄漏出去——如果一个用户采取的密钥被侵略者所收获,入侵者便得以读取该用户密钥加密的备文档,如果周公司一同用一个加密密钥,那漫天企业文档的保密性便无从谈起。

广的对称加密算法:DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6和AES。
DES是同样种分组数据加密技术(先将数据分为固定长度的有些数据块,之后进行加密),速度比快,适用于大量多少加密,而3DES是一致栽基于DES的加密算法,使用3个不同密匙对同一个分组数据块进行3不良加密,如此以使密文强度更强。
相较于DES和3DES算法而言,AES算法有着更强的速度和资源以效率,安全级别也比再胜了,被称新一代加密标准。

2.2 非对如加密

在不对如加密算法中,加密运用的密钥和解密使用的密钥是休均等的,也号称公私钥加密,也就是说加密应用的密钥和解密使用的密钥不同。

要两单用户如果加密交换数据,双方交换公钥,使用时一样在因此对方的公钥加密,另一方即可用自己之私钥解密。如果公司遭受生n个用户,企业用生成n对密钥,并散发n个公钥。由于公钥是得公开的,用户若保管好温馨之私钥即可,因此加密密钥的散发以更换得死去活来简。同时,由于每个用户的私钥是唯一的,其他用户除了可好经信息发送者的公钥来证明信息的源于是否真,还可管发送者无法否认已经发送了该信息。非对如加密之缺陷是加解密速度而远远慢于对如加密,在好几最情况下,甚至能比非对如加密缓上1000倍。

大规模的非对如加密算法:RSA、ECC(移动装备用)、Diffie-Hellman、El
Gamal、DSA(数字签名用)。
RSA与DSA的安全性以及任何各级方面性能都多,而ECC较之则怀有众多底性能优越,包括处理速度,带富要求,存储空间等等。

2.3 Hash算法

Hash算法特别之地方在于其是一致种才为算法,用户可经Hash算法对目标信息非常成一段特定长度的绝无仅有的Hash值,却休可知透过此Hash值重新取得目标信息。因此Hash算法常用在不可恢复的密码存储、信息完整性校验等。

常见的Hash算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1。
当即几栽算法就怪成一弄错不可逆的密文,经常用其功效数据传过程遭到是不是由此改,因为同样之转算法对于同明文只见面扭转唯一的密文,若相同算法生成的密文不同,则印证传输数据进行过了改动。通常以数传说过程前,使用MD5和SHA1算法均要发送和接收数据双方于多少传送之前就明白密匙生成算法,而HMAC与的异的凡急需很成一个密匙,发送方用此密匙对数据开展摘要处理(生成密文),接收方再利用是密匙对接受及之数目进行摘要处理,再判断生成的密文是否一致。
加密算法的成效通常可以随算法本身的复杂程度、密钥长度(密钥越丰富逾安全)、加解密速度等来衡量。上述的算法中,除了DES密钥长度不够、MD2进度比较缓慢已日渐让裁他,其他算法仍于当下底加密系统成品受到运用。

 

回来目录

其三、生成数字证书的措施

数字证书可以透过在线工具,脚本代码,KEYTOOL工具,OPEN
SSL工具等多种方法变。下面为常用之RSA非对如加密呢例子,向大家介绍几栽常用之数字证书生成方式。

3.1 利用KEYTOOL工具转数字证书

KEYTOOL 是独密钥和证件管理工具,可以以 JAVA
环境下管理安全钥匙和证书的变迁和安装。它要一个行之有效之平安钥匙以及证件的管理工具,使用户会管理自己之公钥/私钥对和有关证书。它管理一个囤了个体钥匙以及验证相应公共钥匙的和它互相关联的X.509
证书链的keystore(相当一个数据库,里面可存放多单X.509标准的证明)。能够使用户以数字签名来管理他们好的个人/公共钥匙对,管理所以来作自我鉴定的相关的证书,管理数据完整性和鉴定服务,还能而用户在通信时缓存它们的共用钥匙。

3.1.1 KEYTOOL命令介绍

KEYTOOL通是盖keytool开关,当中时因此命令有: 

keytool -genkey -alias casserver -keypass cas123 -keyalg RSA -keystore casserver.keystore -validity 365
keytool -export -alias casserver -storepass cas123 -file casserver.cer -keystore casserver.keystore
keytool -import -trustcacerts -alias casserver -storepass cas123 -file casserver.cer –keystore cacerts
  • -genkey     当用户主目录中开创一个默认文件”.keystore”,还见面发出一个mykey的别名,mykey中寓用户的公钥、私钥和关系
    于未曾点名生成位置的情景下,keystore会存在用户系统默认目录,如:对于window
    xp系统,会变卦于系统的C:/Documents and
    Settings/UserName/文件称吧“.keystore”
  • -alias       产生别名 
    -keystore 指定密钥库的名目(产生的各类信息用不在.keystore文件被) 
    -keyalg  指定密钥的算法 (如 RSA 
    DSA(如果非指定默认使用DSA))
  • -validity    点名创建的关系有效期多少天-keysize    
    指定密钥长度
  • -storepass   指定密钥库的密码(获取keystore信息所要的密码)
  • -keypass    
    指定别名条目的密码(私钥的密码)
  • dname       指定证书拥有者信息
    譬如: 
    “CN=名字跟姓氏,OU=组织单位名称,O=组织称,L=城市要区域名称,ST=州抑或省称,C=单位之少数许母国家代码
  • -list        显示密钥库中之关系信息      
    比如:
    keytool -list -v -keystore 是恃定 keystore -storepass 密码
    -v 显示密钥库中的关系详细信息
  • -export     
    将别名指定的证书导出到文件  
    像:keytool -export -alias
    需要导出的别名 -keystore 指定keystore -file
    指定导出的关系位置以及证明名称 -storepass 密码
  • -file            参数指定导出到文件之文书称
  • delete       删除密钥库中有条目    
    诸如:keytool -delete -alias
    指定要去的别  -keystore 指定keystore  -storepass
    密码
  • -printcert  
    查看导出的证件信息     
    例如:keytool -printcert -file
    leslie.crt
  • -keypasswd  
    修改密钥库中指定条目口令    
    例如:keytool -keypasswd -alias
    需修改的号 -keypass 旧密码 -new  新密码  -storepass keystore密码 
    -keystore sage
  • -storepasswd
    修改keystore口令      
    诸如:keytool -storepasswd -keystore
    c:/leslie.keystore(需修改口令的keystore) -storepass 123456(原始密码)
    -new 888888(新密码)
  • -import     
    将曾签数字证书导入密钥库 
    譬如说: keytool -import -alias 指定导入条目的别名 -keystore
    指定keystore -file
    需导入的证明

3.1.2 生成 *.keystore 文件流程

先是实施以下命令,分别输入密钥库口令、姓名,单位,组织,城市,省份,国家等信息,经确认后转对应之
leslie.keystore 文件。注意 *.keystore
文件相当给一个资源库,后面的公钥、私钥、证书等还指让其生成,必须谨慎保管。

keytool -genkey -alias everygold -keypass 123456 -keyalg RSA -keystore leslie.keystore -validity 365

提示:  -alias指定别叫也 everygold; -keyalg 指定 RSA 算法;-keypass
指定私钥密码也123456;

             -keystore 指定密钥文件名称为
leslie.keystore;-validity指定有效期为365龙。

电子商务 2

 

3.1.3 生成数字证书

根据上述生成的 leslie.keystore 文件,执行以下命令就好变更数字证书
leslie.cer

keytool -export -alias everygold -storepass 123456 -file leslie.cer -keystore leslie.keystore

提示:  -alias 指定别名吧 everygold; -storepass 指定私钥为
123456;

            -file 指定导出证书之公文称也 leslie.cer;-keystore
指定之前生成的密钥文件的文书称

瞩目: -alias 和- storepass 必须也生成 leslie.keystore
密钥文件时所指定的别名和密码一致,否则证书导出失败

生成证书 

电子商务 3

假设得获得 BASE64 或 DER 证书,可以用导出功能,在图纸上以
“复制到文件”,选择文件格式即可。

电子商务 4

坐文本格式打开导出的 BASE64 证书,可以见见

-----BEGIN CERTIFICATE-----
MIICRjCCAa+gAwIBAgIEIvzKsDANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJD
TjELMAkGA1UECBMCR0QxCzAJBgNVBAcTAkdaMQ4wDAYDVQQKEwVwdWppbjEMMAoG
A1UECxMDU3VuMQ8wDQYDVQQDEwZMZXNsaWUwHhcNMTcwODI5MDMwMjE4WhcNMTgw
ODI5MDMwMjE4WjBWMQswCQYDVQQGEwJDTjELMAkGA1UECBMCR0QxCzAJBgNVBAcT
AkdaMQ4wDAYDVQQKEwVwdWppbjEMMAoGA1UECxMDU3VuMQ8wDQYDVQQDEwZMZXNs
aWUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKFVrCaKFi2GtJjyuWSPrJah
.........................
-----END CERTIFICATE-----

 

要以以下语句,也可查看到导出的证明

keytool -list  -rfc -keystore d:/leslie.keystore -storepass 123456

来得结果跟上述措施同样

电子商务 5

 

3.2 脚本代码生成证书

要对KEYTOOL工具不绝熟悉的意中人
,也不过经JAVA代码直接扭转数字证书,原理和KEYTOOL生成的基本一致。

 1 public class CerTest {  
 2     public static void main(String[] args){
 3              CerTest test=new CerTest();
 4              //生成 keystore 文件
 5              test.getKeyStore();
 6              //生成 *.cer 证书文件
 7              test.export();
 8     }
 9 
10     public void execCommand(String[] arstringCommand) {  
11         for (int i = 0; i < arstringCommand.length; i++) {  
12             System.out.print(arstringCommand[i] + " ");  
13         }  
14         try {  
15             Runtime.getRuntime().exec(arstringCommand);  
16   
17         } catch (Exception e) {  
18             System.out.println(e.getMessage());  
19         }  
20     }  
21 
22     public void execCommand(String arstringCommand) {  
23         try {  
24             Runtime.getRuntime().exec(arstringCommand);  
25               
26         } catch (Exception e) {  
27             System.out.println(e.getMessage());  
28         }  
29     }  
30   
31     /** 
32      * 生成 *.keystore 
33      */  
34     public void getKeyStore() {  
35         String[] arstringCommand = new String[] {  
36   
37         "cmd ", "/k",  
38                 "start", // cmd Shell命令  
39   
40                 "keytool",  
41                 "-genkey", // -genkey表示生成密钥  
42                 "-validity", // -validity指定证书有效期(单位:天),这里是365天  
43                 "365",  
44                 "-keysize",//     指定密钥长度  
45                 "1024",  
46                 "-alias", // -alias指定别名,这里是everygold 
47                 "everygold",  
48                 "-keyalg", // -keyalg 指定密钥的算法 (如 RSA DSA(如果不指定默认采用DSA))  
49                 "RSA",  
50                 "-keystore", // -keystore指定存储位置,这里是d:/leslie.keystore  
51                 "d:/leslie.keystore",  
52                 "-dname",// CN=(名字与姓氏), OU=(组织单位名称), O=(组织名称), L=(城市或区域名称),  
53                             // ST=(州或省份名称), C=(单位的两字母国家代码)"  
54                 "CN=(leslie), OU=(everygold), O=(pujinwang), L=(Guangzhou), ST=(Guangdong), C=(CN)",  
55                 "-storepass", // 指定密钥库的密码(获取keystore信息所需的密码)  
56                 "123456",   
57                 "-keypass",// 指定别名条目的密码(私钥的密码)  
58                 "123456",   
59                 "-v"// -v 显示密钥库中的证书详细信息  
60         };  
61         execCommand(arstringCommand);  
62     }  
63   
64     /** 
65      * 导出证书文件 
66      */  
67     public void export() {  
68   
69         String[] arstringCommand = new String[] {  
70   
71         "cmd ", "/k",  
72                 "start", // cmd Shell命令  
73                 "keytool",  
74                 "-export", // - export指定为导出操作   
75                 "-keystore", // -keystore指定keystore文件,这里是d:/leslie.keystore  
76                 "d:/leslie.keystore",  
77                 "-alias", // -alias指定别名,这里是ss  
78                 "everygold",  
79                 "-file",//-file指向导出路径  
80                 "d:/leslie.cer",  
81                 "-storepass",// 指定密钥库的密码  
82                 "123456"   
83         };  
84         execCommand(arstringCommand);  
85       
86     }  
87 }  

运行成功后,可抱和3.1节同之 leslie.keystore 文件以及 leslie.cer
数字证书。
若果用得到 BASE64 或 DER 证书,也可是利用及 3.1.3 节所述方式获得
,在这个不再另行介绍。

 

3.3 利用在线工具得到数字证书

假如当使用KEYTOOL或代码生成数字证书过于繁琐,可以一直使用在线生成工具转免费数字证书。一般在线生成的证件有效期为
3 个月到
1年,到期后需要续费或证件无效。以下是几乎独常因此底在线证书生成工具,由于用法比较简单,在斯不发详细介绍。

  1. Amazon Web Services (AWS) 是 Amazon.com 旗下之一个网络云服务站点
    address:https://aws.amazon.com/cn/?nc2=h\_lg
  2. ChinaSSL是亚狐科技旗下占为客户提供数字证书、网络安全服务之站点
    address:https://csr.chinassl.net/index.html
  3.  MySSL 则是亚洲诚信(TRUSTASIA)旗下占为用户提供网络安全云服务平台
    address:https://myssl.com/csr\_create.html

 

返目录

季、获取公钥和私钥

以其次省就介绍过,在加密算法中起对如加密,非对如加密,Hash算法等几乎接近。在针对如加密算法中,加密使用的密钥和解密使用的密钥是同之,使用起来比较简单。而公钥与私钥一般用来非对如之加密方法,是安全性高,使用最频密的加密方法,下面几乎节约,将为大家介绍一下非对如加密之运办法。
公钥(Public Key)与私钥(Private
Key)是经平等种植算法得到的一个密钥对(即一个公钥和一个私钥),公钥是密钥对遭到公然的有些,私钥则是非公开的有的。公钥通常用于加密会话密钥、验证数字签名,加密多少可以用相应的私钥进行数量解密。通过这种算法得到的密钥对能保证在世界范围外是绝无仅有的。使用这个秘密钥对的时刻,如果用中一个密钥加密一段数据,必须用任何一个密钥解密。比如用公钥加密数据就亟须用私钥解密,如果用私钥签名则要用公钥验签,否则数据以无见面马到成功转变。

鉴于用 KEYTOOL
等工具无法直接导出公钥和私钥,所以必须经代码进行导出。而公钥和私钥都是二进制数据,所以一般
用Base 64 方式开展封存。下面坐上述有关系吗例,导出对应的公钥与私钥。

  1 public abstract class Coder {
  2 
  3     /**
  4      * BASE64解密
  5      * 
  6      * @param key
  7      * @return
  8      * @throws Exception
  9      */
 10     public static byte[] decryptBASE64(String key) throws Exception {
 11         return (new BASE64Decoder()).decodeBuffer(key);
 12     }
 13 
 14     /**
 15      * BASE64加密
 16      * 
 17      * @param key
 18      * @return
 19      * @throws Exception
 20      */
 21     public static String encryptBASE64(byte[] key) throws Exception {
 22         return (new BASE64Encoder()).encodeBuffer(key).replace("\r", "").replace("\n", "");
 23     }
 24 }
 25 
 26 public class KeyStoreTool{
 27 
 28     /**
 29      * Java密钥库(Java Key Store,JKS)KEY_STORE
 30      */
 31     public static final String KEY_STORE = "JKS";
 32 
 33     public static final String X509 = "X.509";
 34 
 35     /**
 36      * 获得KeyStore
 37      * 
 38      * @version   2016-3-16
 39      * @param keyStorePath
 40      * @param password
 41      * @return
 42      * @throws Exception
 43      */
 44     public static KeyStore getKeyStore(String keyStorePath, String password)
 45             throws Exception {
 46         
 47         FileInputStream is = new FileInputStream(keyStorePath);
 48         KeyStore ks = KeyStore.getInstance(KEY_STORE);
 49         ks.load(is, password.toCharArray());
 50         is.close();
 51         return ks;
 52     }
 53 
 54     /**
 55      * 由KeyStore获得私钥
 56      * @param keyStorePath
 57      * @param alias
 58      * @param storePass
 59      * @return
 60      * @throws Exception
 61      */
 62     public static PrivateKey getPrivateKey(String keyStorePath, String alias, String storePass, String keyPass) throws Exception {
 63         KeyStore ks = getKeyStore(keyStorePath, storePass);
 64         PrivateKey key = (PrivateKey) ks.getKey(alias, keyPass.toCharArray());
 65         return key;
 66     }
 67     
 68     /**
 69      * 由Certificate获得公钥
 70      * @param keyStorePath
 71      *        KeyStore路径
 72      * @param alias
 73      *        别名
 74      * @param storePass
 75      *        KeyStore访问密码
 76      * @return
 77      * @throws Exception
 78      */
 79     public static PublicKey getPublicKey(String keyStorePath, String alias, String storePass) throws Exception {
 80         KeyStore ks = getKeyStore(keyStorePath, storePass);
 81         PublicKey key = ks.getCertificate(alias).getPublicKey();
 82         return key;
 83     }
 84        
 85        /**
 86         * 从KeyStore中获取公钥,并经BASE64编码
 87         * @param keyStorePath
 88         * @param alias
 89         * @param storePass
 90         * @return
 91         * @throws Exception
 92         */
 93        public static String getStrPublicKey(String keyStorePath, String alias,String storePass) throws Exception{
 94            PublicKey key = getPublicKey(keyStorePath, alias, storePass);
 95            String strKey = Coder.encryptBASE64(key.getEncoded());           
 96            return strKey;
 97        }
 98        
 99        /*
100         * 获取经BASE64编码后的私钥
101         * @param keyStorePath
102         * @param alias
103         * @param storePass
104         * @param keyPass
105         * @return
106         * @throws Exception
107         */
108        public static String getStrPrivateKey(String keyStorePath, String alias,String storePass, String keyPass) throws Exception{
109 
110            PrivateKey key = getPrivateKey(keyStorePath, alias, storePass, keyPass);
111            String strKey = Coder.encryptBASE64(key.getEncoded());
112            return strKey;
113        }
114     
115         public static void main(String args[]){
116         // 公钥
117         String strPublicKey = "";
118         // 私钥
119         String strPrivateKey = "";
120         
121         try {
122                strPublicKey = KeyStoreCoder.getStrPublicKey("d://leslie.keystore", "everygold", "123456");
123                System.out.println("公钥 = 【" + strPublicKey + "】");
124             
125                strPrivateKey = KeyStoreCoder.getStrPrivateKey("d://leslie.keystore", "everygold", "123456", "123456");
126                System.out.println("\n私钥 = 【" + strPrivateKey + "】");
127             } catch (Exception e1) {
128                e1.printStackTrace();
129             }
130        } 
131 }

出口结果:

电子商务 6

也便于保存,一般我们见面因为Base64各法将公钥与私钥存储起来
publicKey.key 公钥文件:

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDbUPe3WGFA0QPGCrPrXCUR7K7M
aZQY1btYZrAFjpT/k00zkj/AfcUeEZk6Tf+9mgvZ3KRVvSFaA9kYiVCJOjGfnW2H
fk6u7iOwSs/kwpC5uUzdoWlc5ZX7iC9SACXJgDg/T5HBRpXpsEkxhzWLUKy1FQDC
KduLuEFdzaO4XsSX7QIDAQAB
-----END PUBLIC KEY-----

privateKey.key 私钥文件:

-----BEGIN PRIVATE KEY-----
MIICeQIBADANBgkqhkiG9w0BAQEFAASCAmMwggJfAgEAAoGBANtQ97dYYUDRA8YK
s+tcJRHsrsxplBjVu1hmsAWOlP+TTTOSP8B9xR4RmTpN/72aC9ncpFW9IVoD2RiJ
UIk6MZ+dbYd+Tq7uI7BKz+TCkLm5TN2haVzllfuIL1IAJcmAOD9PkcFGlemwSTGH
NYtQrLUVAMIp24u4QV3No7hexJftAgMBAAECgYEAkcm/8Yv5kimfFY3VzhXBuqmY
BOAGB4BEel5AkmEWoNIdVrPYVzAD0ZonPn/NCg+V4yvtveTsf7bhIJNfCum5Q8NL
V0YNn5+C1JMZoI9BrRXQjCH30Oy78QfHH9ATigDZ7cr/ke/0hJqO4hks++XlM6Oy
MIuoHy1WUTy5Hm3qbWECQQDvZFDixgwYwiyC9fzEj8NmWyINZx+Ny2DhnZKtKN6r
o7aplGfBPU9NZ/vLQk7AZPS+24hhu7CYlOUhhhoQjWr1AkEA6ogaMAQfPslyrl1W
R2KkPEOVbSSy4IJ5ZIBeJCDisgEtLb9EZ4JzXIfN6usyiJNtwf5k04zEkWBz1f5r
mtTOGQJBAMSodkI1TA6yxPo4thOLvovBZfH4u1UytD3jwnD52CLMdOxOfAWlJhaC
y7iomiU3Sk/X7OvM0kAmYSzvC055vlkCQQDOR0sRNG7u4Gv3pKyAOOhPAPpqdr7F
7LwsgyNKD4qUGajM9c+KYxhoKCIbHybhLRp6Z+/yiXtSik0XyKCIG+fxAkEAsdlz
YkpcG6T38wC0px+Mhq06AIhEF3sy3wLbM3d4ABlNMj3HqlHMPtvCV1L3dpc/8y89
dAPu9OiHf8nyar9eVQ==
-----END PRIVATE KEY-----

现在 *.keystore 、*.cer 证书、Base64 证书、公钥文件 public.key
私钥文件 private.key
都已经成功转变,下面的章用为大家介绍数据加密、数据解密、数字签名、数字验签的用方法。但在此之前,我怀念先为大家讲解一下它的定义以及应用场景。
记在第二节曾经为大家介绍了针对性如加密跟匪对如加密的区分,由于针对如加密之加密和解密之密钥都是一致,加密解密双方还以所有密钥,容易导致密钥的泄漏。所以一般公司于不同之业务流程下都见面用不同之密钥,以防数据给外泄。但于大型的柜备受,若用对如加密这种艺术,企业拿会发大量底密钥,难给管理又安全性难以保持,并无长,所以就是产生了非对如加密艺术。
勿对如加密的图景下,在小卖部要取客户端数据时,可以把公钥向客户端公开,数据进行加密后,就算加密数据给涉取,在没私钥的情,数据内容都非会见叫破解,确保了数码的安全性。这时,只要企业担保私钥的秘前提下,一个公钥可以于多单客户端进行明白用作多少传加密。
只要数字签名的动场景有点相反,数字签名是合作社吗客户端确认数据出自之准头而提供的服务。一般用为政府机关、行政部门、金融行业、资讯行业等商家的数量发布上。数据都是出于企业经私钥进行签字,只要客户端有相应的公钥,就足以对数据开展查签。只要验签成功,就能够印证该数额是缘于这个数字证书所属的局,以保证数据来源的可靠性。一般以江山方针之公布,企业数量的公然,经济数据的明等气象下相应最广泛。

 

返回目录

五、数字证书加密和解密

 

经地方的牵线,大家该了解及数量加密、数据解密、数字签名、数字验签的运用状况。
下面用为大家介绍数据加密和解密方式:

  1 public abstract class Coder {
  2 
  3     /**
  4      * BASE64解密
  5      * 
  6      * @param key
  7      * @return
  8      * @throws Exception
  9      */
 10     public static byte[] decryptBASE64(String key) throws Exception {
 11         return (new BASE64Decoder()).decodeBuffer(key);
 12     }
 13 
 14     /**
 15      * BASE64加密
 16      * 
 17      * @param key
 18      * @return
 19      * @throws Exception
 20      */
 21     public static String encryptBASE64(byte[] key) throws Exception {
 22         return (new BASE64Encoder()).encodeBuffer(key).replace("\r", "").replace("\n", "");
 23     }
 24 }
 25 
 26 public class MyCoder extends Coder{
 27 
 28     /**
 29      * 使用公钥加密数据
 30      * @param publicKey
 31      * @param srcData
 32      * @return
 33      * @throws Exception
 34      */
 35     public static String encryptByPublicKey(String publicKey, String srcData) throws Exception{
 36         //解密
 37         byte[] pk = Coder.decryptBASE64(publicKey);
 38         X509EncodedKeySpec spec = new X509EncodedKeySpec(pk);
 39         KeyFactory kf = KeyFactory.getInstance("RSA");
 40         //获取公钥
 41         PublicKey pubKey = kf.generatePublic(spec);
 42         
 43         // 对数据加密
 44         Cipher cipher = Cipher.getInstance("RSA");
 45         cipher.init(Cipher.ENCRYPT_MODE, pubKey);
 46         
 47         byte[] doFinal = cipher.doFinal(srcData.getBytes());
 48         return encryptBASE64(doFinal);
 49     }
 50     
 51     
 52     /*
 53      * 使用私钥解密数据
 54      * @param privateKey
 55      * @param data
 56      * @return
 57      * @throws Exception
 58      */
 59     public static String descryptByPrivateKey(String privateKey, String data) throws Exception{
 60         // BASE64转码解密私钥
 61         byte[] pk = Coder.decryptBASE64(privateKey);
 62         // BASE64转码解密密文
 63         byte[] text = decryptBASE64(data);
 64         PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(pk);
 65         KeyFactory kf = KeyFactory.getInstance("RSA");
 66         // 获取私钥
 67         PrivateKey prvKey = kf.generatePrivate(spec);
 68         
 69         // 对数据加密
 70         Cipher cipher = Cipher.getInstance("RSA");
 71         cipher.init(Cipher.DECRYPT_MODE, prvKey);
 72         
 73         byte[] doFinal = cipher.doFinal(text);
 74         return new String(doFinal);
 75     }
 76 
 77     public static void main(){
 78         // 公钥
 79         String strPublicKey = "";
 80         // 私钥
 81         String strPrivateKey = "";
 82         
 83         try {
 84             strPublicKey = KeyStoreTool.getStrPublicKey("d://leslie.keystore", "everygold", "123456");
 85             strPrivateKey = KeyStoreTool.getStrPrivateKey("d://leslie.keystore", "everygold", "123456", "123456");
 86         } catch (Exception e1) {
 87             e1.printStackTrace();
 88         }
 89         
 90         // 原文
 91         String originalText = "原文 = 虽然我穷,但是再穷也要去旅游!";        
 92         System.out.println(originalText);
 93 
 94         try {
 95             // RSA算法 公钥加密随机数
 96             String secretText = MyCoder.encryptByPublicKey(strPublicKey, originalText);
 97             System.out.println("\n经RSA公钥加密后 = " + secretText);
 98             System.out.println("\n经RSA公钥加密后长度 = " + secretText.length());
 99             
100             String text = MyCoder.descryptByPrivateKey(strPrivateKey, secretText);
101             System.out.println("\n经RSA私钥解密后 = 【" + text + "】");
102             System.out.println("\n经RSA私钥解密后长度 = 【" + text.length() + "】");
103             
104         } catch (Exception e) {
105             e.printStackTrace();
106         }
107     }
108 }

测试结果
电子商务 7

当,如果公钥和私钥已经保存在 public.key 与 private.key
文件里,就足以一直从文本读取,无须再经过 *. keystore 文件获取。

回到目录

 

六、数字证书签名和验签

上面介绍了签名与验签主要用以政策机关,金融机构,权威信息网站对外公报信息时行使。
相似采用状况下,签名与验签往往会与加密解密同时利用,企业会变动两对密钥,一针对性用于对公司标准的登记号进行签字,另一样对准用于详细数据的加密。客户验签后便只是证明信息来之真确性,然后又对详细信息进行解密。
署名以及验签代码如下:

 1 public class MySign {
 2     /*
 3     * @param keyStorePath 密钥库存储路径
 4     * @param alias 密钥库别名
 5     * @param password 密钥库密码
 6     */
 7     private static String keyStorePath,alias,password;
 8     
 9     private static Certificate getCertificate() 
10             throws Exception {
11         KeyStore keyStore = KeyStoreTool.getKeyStore(keyStorePath, password);
12         Certificate certificate = keyStore.getCertificate(alias);
13         return certificate;
14     }
15     
16     public static void setKeyStorePath(String path){
17         MySign.keyStorePath=path;
18     }
19     
20     public static void setAlias(String alias){
21         MySign.alias=alias;
22     }
23     
24     public static void setPassword(String password){
25         MySign.password=password;
26     }
27     
28     /*
29      * 生成数据签名
30      * @param data 源数据
31      */
32     public static byte[] sign(byte[] data) 
33             throws Exception {
34         // 获得证书
35         X509Certificate x509Certificate = (X509Certificate) getCertificate();
36         // 获取KeyStore
37         KeyStore keyStore = KeyStoreTool.getKeyStore(keyStorePath, password);
38         // 取得私钥
39         PrivateKey privateKey = (PrivateKey) keyStore.getKey(alias, password.toCharArray());
40         // 构建签名
41         Signature signature = Signature.getInstance(x509Certificate.getSigAlgName());
42         signature.initSign(privateKey);
43         signature.update(data);
44         return signature.sign();
45     }
46     
47     /*
48      * 生成数据签名并以BASE64编码
49      * @param data 源数据
50      */
51     public static String signToBase64(String data) 
52             throws Exception {
53         byte[] byteData=data.getBytes();
54         return Base64.encode(sign(byteData));
55     }
56     
57     /*
58      * 对二进制数据进行验签
59      * @param data 已加密数据
60      * @param sign 数据签名[BASE64]
61      */
62     public static boolean verifySign(byte[] data, String sign) 
63             throws Exception {
64         // 获得证书
65         X509Certificate x509Certificate = (X509Certificate) getCertificate();
66         // 获得公钥
67         PublicKey publicKey = x509Certificate.getPublicKey();
68         // 构建签名
69         Signature signature = Signature.getInstance(x509Certificate.getSigAlgName());
70         signature.initVerify(publicKey);
71         signature.update(data);
72         return signature.verify(Base64.decode(sign));
73     }
74     
75     /*
76      * 对String数据进行验签
77      * @param data 字符串
78      * @param sign 数据签名[BASE64]
79      */
80     public static boolean verifySginString(String data, String sign) 
81             throws Exception {
82         byte[] byteData = data.getBytes();
83         return verifySign(byteData, sign);
84     }
85 
86     public static void main(String[] args) throws Exception {
87         
88         MySign.setKeyStorePath("d://leslie.keystore");
89         MySign.setPassword("123456");
90         MySign.setAlias("everygold");
91         String sign="驴友的天空俱乐部";
92         String base64=MySign.signToBase64(sign);
93         System.out.println("签名为:"+sign+"\n\n签名后数据:\n"+base64);
94         boolean isRight=MySign.verifySginString(sign,base64);
95         System.out.println("\n验签结果:"+isRight);
96     }
97 }

出口结果

电子商务 8

 

归来目录

 

本章小结

文章简单介绍了数字证书的变动使用过程,*.cer 证书的导出,公钥
public.key,私钥private.key
的导出等作用,但对于数字证书的功用,本文介绍的只是说光是冰山一角。一般在政府型项目、大型的财经品种、B2B/B2C/P2P商业网站,数字证书的动是比普遍。特别是在手机APP流行的今天,数字证书的采取越来越更是普及化。希望本文对各位对数码证明之明有所助。

针对 .NET  开发有趣味之爱人迎加入QQ群:230564952
共同探讨 !
本着 JAVA 开发出趣味之心上人迎加入QQ群:174850571
共同探讨 !

 

劳类工具的运与管理

Apache2.2+Tomcat7.0整合配置详解

Windows Server 2008 R2
负载平衡入门篇

数字证书应用综合揭秘(包括证明生成、加密、解密、签名、验签)

 

作者:风尘浪子

http://www.cnblogs.com/leslies2/p/7442956.html

原创作品,转载时恳求注明作者和出处

Leave a Comment.