丰富的线上&线下活动,深入探索云世界
做任务,得社区积分和周边
最真实的开发者用云体验
让每位学生受益于普惠算力
让创作激发创新
资深技术专家手把手带教
遇见技术追梦人
技术交流,直击现场
海量开发者使用工具、手册,免费下载
极速、全面、稳定、安全的开源镜像
开发手册、白皮书、案例集等实战精华
为开发者定制的Chrome浏览器插件
数字证书(或简称证书)是在Internet上唯一地标识人员和资源的电子文件。证书使两个实体之间能够进行安全、保密的通信。
证书有很多种类型,例如个人证书(由个人使用)和服务器证书(用于通过安全套接字层[SSL]技术在服务器和客户机之间建立安全会话)。有关SSL的更多信息,请参见关于安全套接字层。
证书是基于公钥加密的,公钥加密使用数字密钥对(很长的数字)对信息进行加密或编码,从而使信息只能被目标收件人读取。然后,收件人对信息进行解密(解码)即可读取该信息。
最重要的是,证书会将拥有者的公钥绑定到拥有者的标识。与护照将照片绑定到其持有者的个人信息类似,证书将公钥绑定到有关其拥有者的信息。
除了公钥以外,证书通常还包括以下信息:
数字证书受X.509格式的技术规范约束。要检验certificate领域中某个用户的身份,验证服务将使用X.509证书的通用名称字段作为主体名称来检验X.509证书。
1.哈希函数
哈希函数是一个具有以下输入和输出的数学函数H(X)=Y
H:哈希函数,其输入参数为X,输出为Y。
X:哈希方法的输入,可以是任意长度的任意数据。
Y:哈希方法的输出,是一段固定长度的二进制数据,长度可以是256,384,516...。
用于加密的哈希函数有下面的特征:
2.数字签名
公钥密码算法采用公钥进行加密,私钥进行解密,数字签名则采用私钥进行加密,用公钥进行解密来验证数字签名。
秘钥拥有者(发送者)首先将原文通过特定的哈希函数得到摘要信息,然后采用私钥对摘要进行加密,就得到了签名。然后将签名附加在原文后一起传送给接收者,接收者拥有公钥,对签名进行解密后得到原文的摘要信息,然后用HASH函数对收到的原文提炼出一个摘要信息,与解密得到的摘要进行对比,可以判断接收到的信息是否被篡改,确定信息的完整性。由于私钥是不公开的,只有发送者才能采用私钥对数据加密,所以这种方式可以确定消息的不可抵赖性。
在数字证书,区块链,比特币中就采用了数字签名来验证用户身份。下图展示了数字签名和验证的流程:
3.数字证书
从数字签名使用对象的角度分,目前的数字证书类型主要包括:个人身份证书、企业或机构身份证书、支付网关证书、服务器证书、安全电子邮件证书、个人代码签名证书,这些数字证书特点各有不同。
符合X.509标准的数字安全证书,证书中包含个人身份信息和个人的公钥,用于标识证书持有人的个人身份。数字安全证书和对应的私钥存储于E-key中,用于个人在网上进行合同签定、定单、录入审核、操作权限、支付信息等活动中标明身份。
符合X.509标准的数字安全证书,证书中包含企业信息和企业的公钥,用于标识证书持有企业的身份。数字安全证书和对应的私钥存储于E-key或IC卡中,可以用于企业在电子商务方面的对外活动,如合同签定、网上证券交易、交易支付信息等方面。
支付网关证书是证书签发中心针对支付网关签发的数字证书,是支付网关实现数据加解密的主要工具,用于数字签名和信息加密。支付网关证书仅用于支付网关提供的服务(Internet上各种安全协议与银行现有网络数据格式的转换)。支付网关证书只能在有效状态下使用。支付网关证书不可被申请者转让。
符合X.509标准的数字安全证书,证书中包含服务器信息和服务器的公钥,在网络通讯中用于标识和验证服务器的身份。数字安全证书和对应的私钥存储于E-key中。服务器软件利用证书机制保证与其他服务器或客户端通信时双方身份的真实性、安全性、可信任度等。
从数字证书的技术角度分,CA中心发放的证书分为两类:SSL证书和SET证书。一般地说,SSL证书(安全套接层)是服务于银行对企业或企业对企业的电子商务活动的;而SET(安全电子交易)证书则服务于持卡消费、网上购物。虽然它们都是用于识别身份和数字签名的证书,但它们的信任体系完全不同,而且所符合的标准也不一样。
4.数字证书的格式
数字证书的格式普遍采用RFC5280定义的X.509标准。下表列出了X.509标准格式的证书中的主要字段。
证书主要的文件类型和协议有:PEM、DER、PFX、JKS、KDB、CER、KEY、CSR、CRT、CRL、OCSP、SCEP等。Openssl使用PEM格式存储证书。
利用openssl生成公钥、私钥对,并生成自己的数字证书。密码算法不局限于RSA,这里鼓励大家利用openssl生成其他公钥密码算法的密钥对。
实验所需工具:OpenSSL
openssl是一个功能强大的工具包,它集成了众多密码算法及实用工具。我们可以利用它提供的命令台工具生成密钥、证书来加密解密文件,也可以在利用其提供的API接口在代码中对传输信息进行加密。
以RSA为加密算法,生成数字证书为例:
根据私钥生成证书签名请求。
查看证书签名请求内容。
发送证书签名请求到CA进行签发,生成X.509证书。(这里我们先生成一个CA服务器)
生成CA私钥
根据CA私钥生成CA的自签名证书(与生成证书签名请求有区别)。
查看自签名的CA证书。
使用CA的私钥和证书对用户证书签名。
阿里云免费SSL证书是DigiCert品牌的DV单域名证书,每个阿里云账号一年内均可申请20个免费SSL证书,只要你的阿里云账号通过实名认证即可,无论是新用户还是老用户,个人用户还是企业用户,均可申请免费SSL证书。
进入证书管理控制台
点击左侧栏的“SSL证书”–“免费证书”–“立即购买”,如下图:
产品选择“免费证书”,购买数量选择“20”,其他服务选择“不需要”,勾选同意协议,一共是0元,如下图:
如上图所示,点“立即购买”,支付0元即可。
每个实名主体个人/企业,一个自然年内可以领取一次数量为20的免费证书资源包。购买后在后台填写证书绑定域名、域名验证、联系人信息、密钥算法、CSR生成方式即可申请并下载SSL证书。
阿里云SSL证书申请信息填写
域名DNS验证,如果当前申请SSL证书和域名在同一阿里云账号下,选择自动DNS验证,系统会自动帮你添加DNS验证。但是,如果域名不在当前阿里云账号下,就需要选择手工DNS验证,如下图:
将提供的解析地址及解析值,添加进域名服务商的域名解析中即可进行验证。
文件验证需要首先下载提供的验证文件,之后去服务器的Tomcat目录的webapps文件夹中打开cmd执行命令,创建多级文件夹,再进行如下验证:
一般等待几分钟即可下发SSL证书,然后下载证书即可。阿里云SSL证书支持多种服务器类型,如:Tomcat、Apache、Nginx、IIS、JKS、其他及根证书下载。如下图:
审核成功后选择下载适用于Tomcat的证书格式,将证书文件复制到服务器。(依照个人情况)
进入服务器Tomcat目录找到conf/server.xml,若无以下内容就进行添加: