阿里云SSL数字证书原理、使用、申请流程及部署方式

简介: 本文带您了解阿里云数字证书的基本原理、使用、申请流程及部署方式

背景知识


数字证书(或简称证书)是在 Internet 上唯一地标识人员和资源的电子文件。证书使两个实体之间能够进行安全、保密的通信。

证书有很多种类型,例如个人证书(由个人使用)和服务器证书(用于通过安全套接字层 [SSL] 技术在服务器和客户机之间建立安全会话)。有关 SSL 的更多信息,请参见关于安全套接字层。

证书是基于公钥加密的,公钥加密使用数字密钥对(很长的数字)对信息进行加密或编码,从而使信息只能被目标收件人读取。然后,收件人对信息进行解密(解码)即可读取该信息。

一个密钥对包含一个公钥和一个私钥。拥有者对公钥进行分发并使任何人都可以使用该公钥。但是拥有者永远不会分发私钥;私钥始终是保密的。由于密钥与数学相关,因此使用了密钥对中的一个密钥进行加密的数据只能通过密钥对中的另一个密钥进行解密。

证书就好像一本护照:它可以标识持有者并提供其他重要信息。证书由称为证书授权机构 (Certification Authority, CA) 的可信赖第三方发布。CA 类似于护照申领办公室:它将验证证书持有者的身份并对证书进行签名,以使他人无法伪造或篡改证书。CA 对证书进行签名之后,持有者可以提供该证书作为身份证明并建立经过加密的保密通信。

最重要的是,证书会将拥有者的公钥绑定到拥有者的标识。与护照将照片绑定到其持有者的个人信息类似,证书将公钥绑定到有关其拥有者的信息。

除了公钥以外,证书通常还包括以下信息:

  • 持有者的姓名和其他标识,例如使用证书的 Web 服务器的 URL 或个人的电子邮件地址。

  • 发布证书的 CA 的名称。

  • 失效日期。

数字证书受 X.509 格式的技术规范约束。要检验 certificate 领域中某个用户的身份,验证服务将使用 X.509 证书的通用名称字段作为主体名称来检验 X.509 证书。

实验原理

1. 哈希函数

哈希函数是一个具有以下输入和输出的数学函数 H(X)=Y

H:哈希函数,其输入参数为X,输出为Y。

X:哈希方法的输入,可以是任意长度的任意数据。

Y:哈希方法的输出,是一段固定长度的二进制数据,长度可以是 256,384,516...。

用于加密的哈希函数有下面的特征:

无法找到产生相同输出的输入。从数学理论上来说,我们可以找到有相同输出的输入,因为输入可以是任何数据,而输出则是固定长度的。但是对于一个好的哈希函数来说,希望的是即使使用地球上所有的计算机一起进行计算,也无法在可接受的时间范围内找出具有相同输出的输入。
无法通过输出反推出输入。当输入值的取值范围很大,就很难通过输出反推出输入。当输入值的取值范围是一个有限的集合时,很容易通过遍历尝试每一个输入值来推断。在这种情况下,我们可以为输入 X 加上一个随机值 R 来隐藏输入值,即 H(R|X)=Y。由于攻击者不知道 R 的值,因此无法再通过遍历尝试每个输入的方法推断出 Y 对应的输入。这种做法被称为“加盐”,例如我们在存储密码时就会通过“加盐”的方法来避免彩虹表攻击。
从哈希函数的特点可以看出,一段数据的哈希值就是该数据的一个固定长度的,独一无 二的“特征”,我们可以把哈希值看作该数据的“数字指纹”。

2. 数字签名

数字签名是附加在数据单元上的一些数据,或是对数据单元所作的密码变换。这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防 止被人进行伪造。它是对电子形式的消息进行签名的一种方法,一个签名消息能在一个通信网络中传输。基于公钥密码体制和私钥密码体制都可以获得数字签名,主要是基于公钥密码体制的数字签名。

公钥密码算法采用公钥进行加密,私钥进行解密,数字签名则采用私钥进行加密,用公钥进行解密来验证数字签名。

秘钥拥有者(发送者)首先将原文通过特定的哈希函数得到摘要信息,然后采用私钥对摘要进行加密,就得到了签名。然后将签名附加在原文后一起传送给接收者,接收者拥有公钥,对签名进行解密后得到原文的摘要信息,然后用 HASH 函数对收到的原文提炼出一个摘要信息,与解密得到的摘要进行对比,可以判断接收到的信息是否被篡改,确定信息的完整性。由于私钥是不公开的,只有发送者才能采用私钥对数据加密,所以这种方式可以确定 消息的不可抵赖性。

在数字证书,区块链,比特币中就采用了数字签名来验证用户身份。下图展示了数字签名和验证的流程:

image.png

3. 数字证书

数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在 Internet 上验证通信实体身份的方式,数字证书不是数字身份证,而是身份认证机构盖在数字身份证上的一个章或印(或者说加在数字身份证上的一个签名)。它是由权威机构—— CA 机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份,它的基本任务是将一个公钥与安全个体(个人、公司等)的名字绑在一起。

最简单的证书包含密钥、名称以及证书授权中心的数字签名。数字证书还有一个重要的特征就是只在特定的时间段内有效。数字证书是一种权威性的电子文档,可以由权威公正的第三方机构,即 CA(例如中国各地方的 CA 公司)中心签发的证书,也可以由企业级 CA 系统进行签发。

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

  • 个人身份证书

符合 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(安全电子交易)证书则服务于持卡消费、网上购物。虽然它们都是用于识别身份和数字签名的证书,但它们的信任体系完全不同,而且所符合的标准也不一样。

4. 数字证书的格式

数字证书的格式普遍采用 RFC5280 定义的 X.509 标准。下表列出了 X.509 标准格式的证书中的主要字段。

image.png

证书主要的文件类型和协议有:PEM、DER、PFX、JKS、KDB、CER、KEY、CSR、 CRT、CRL、OCSP、SCEP 等。Openssl 使用 PEM 格式存储证书。

数字证书的一个实例是 https 协议,用于网页加密。以下是百度网页的数字证书例子:

image.png


实验内容

利用openssl 生成公钥、私钥对,并生成自己的数字证书。密码算法不局限于 RSA,这里鼓励大家利用 openssl 生成其他公钥密码算法的密钥对。

实验所需工具:OpenSSL

openssl 是一个功能强大的工具包,它集成了众多密码算法及实用工具。我们可以利用它提供的命令台工具生成密钥、证书来加密解密文件,也可以在利用其提供的 API 接口在 代码中对传输信息进行加密。

以 RSA 为加密算法,生成数字证书为例:

根据私钥生成证书签名请求。

image.png

查看证书签名请求内容。

image.png

发送证书签名请求到 CA 进行签发,生成 X.509 证书。(这里我们先生成一个 CA 服务器)

生成 CA 私钥

image.png

根据 CA 私钥生成 CA 的自签名证书(与生成证书签名请求有区别)。

image.png

查看自签名的 CA 证书。

image.png

image.png

使用 CA 的私钥和证书对用户证书签名。

image.png


SSL证书申请流程

阿里云免费SSL证书是DigiCert品牌的DV单域名证书,每个阿里云账号一年内均可申请20个免费SSL证书,只要你的阿里云账号通过实名认证即可,无论是新用户还是老用户,个人用户还是企业用户,均可申请免费SSL证书。

阿里云SSL证书官方产品面:https://www.aliyun.com/product/cas

进入证书管理控制台

image.png

点击左侧栏的“SSL证书”–“免费证书”–“立即购买”,如下图:

image.png

产品选择“免费证书”,购买数量选择“20”,其他服务选择“不需要”,勾选同意协议,一共是0元,如下图:

image.png

如上图所示,点“立即购买”,支付0元即可。

每个实名主体个人/企业,一个自然年内可以领取一次数量为20的免费证书资源包。购买后在后台填写证书绑定域名、域名验证、联系人信息、密钥算法、CSR生成方式即可申请并下载SSL证书。

image.png

创建之后,列表出现一个带申请的证书,我们点击证书申请按钮,进行我们相关的网站配置

image.png

image.png

阿里云SSL证书申请信息填写

  • 证书绑定域名:填写你的网站域名,如www.aliyunbaike.com

  • 域名验证方式:如果你的域名是在当前的阿里云账号下申请的,就选“自动DNS验证”,如果不在当前账号下,就选“手工DNS验证”

  • 联系人:没有联系人,就新建一个联系人,根据事情情况填写

  • 所在地:根据实际情况填写

  • 密钥算法:RSA

  • CSR生成方式:系统生成

域名DNS验证,如果当前申请SSL证书和域名在同一阿里云账号下,选择自动DNS验证,系统会自动帮你添加DNS验证。但是,如果域名不在当前阿里云账号下,就需要选择手工DNS验证,如下图:

将提供的解析地址及解析值,添加进域名服务商的域名解析中即可进行验证。

image.png

文件验证需要首先下载提供的验证文件,之后去服务器的 Tomcat 目录的 webapps 文件夹中打开 cmd 执行命令,创建多级文件夹,再进行如下验证:

image.png

域名验证,提交审核。回到刚刚的SSL证书申请页面,点击“验证”,如果域名验证成功,点击“提交审核”即可,提交审核后会提示:已经成功提交到CA公司,请您保持电话畅通,并及时查阅邮箱中来自CA公司的电子邮件。如下图:

image.png

一般等待几分钟即可下发SSL证书,然后下载证书即可。阿里云SSL证书支持多种服务器类型,如:Tomcat、Apache、Nginx、IIS、JKS、其他及根证书下载。如下图:

image.png

审核成功后选择下载适用于 Tomcat 的证书格式,将证书文件复制到服务器。(依照个人情况)

进入服务器 Tomcat 目录找到 conf/server.xml,若无以下内容就进行添加:

<Connector port="8078" protocol="org.apache.coyote.http11.Http11Protocol"
      maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
      keystoreFile="conf/xxxxx.pfx"
      keystorePass="xxxxxxx"
        clientAuth="false" sslProtocol="TLS"/>

注:keystoreFile 写证书文件全名,keystorePass 写下载后随机生成的密码(打开 txt 文件,里面有写),其余的配置除了 port 端口号可以修改,其他的不需要修改。

image.png

至此结束,重启 Tomcat 即可使用 HTTPS 协议调用服务。

相关文章
|
2天前
|
弹性计算
阿里云备案流程和操作步骤详解(图文教程)
以下是内容摘要: 本文指导了阿里云账号注册、实名认证及服务器购买流程,并详细阐述了域名注册与备案步骤。首先,需注册阿里云账号并完成个人或企业实名认证,然后选购服务器。接着,进行域名注册与实名认证。备案阶段,用户需在阿里云备案系统中填写相关信息,包括主体信息、网站信息,并上传相关证件照片。提交备案后,系统将进行审核,用户可通过阿里云ICP代备案平台查看进度。整个过程需确保联系方式畅通,以便接收审核通知。
|
2天前
|
存储 小程序 数据库
阿里云学生云服务器申请,阿里云送每个大学生一台云服务器
2024年,阿里云为学生提供免费7个月的学生服务器,包括2核2G配置、1M带宽和独立IP。学生需通过学信网认证,完成任务可额外获得6个月免费时长。申请流程包括注册阿里云账号、实名认证和学生认证。此外,学生可免费领取300元无门槛优惠券,在阿里云高校计划中使用。学生服务器可用于建站、部署等多种场景。详细信息和申请入口见官方链接。
31 0
|
9天前
|
Java 应用服务中间件 Linux
在阿里云服务器上部署Tomcat详细图文详解
本文介绍了在阿里云服务器上安装和配置JDK和Tomcat的步骤。首先,需要注册阿里云账号并进行实名认证,然后购买并设置服务器。接着,通过File Zilla连接服务器,创建Java和Tomcat的安装目录,并将JDK和Tomcat的tar.gz文件上传到服务器,解压并重命名。之后,配置JDK的环境变量,将catalina.sh复制到/etc/init.d/目录下,并修改相关配置。最后,启动Tomcat并配置安全组规则,确保可以通过公网访问。
|
9天前
|
弹性计算 Java Linux
阿里云服务器搭建部署宝塔详细流程
该内容是一个阿里云服务器和域名的配置指南。首先,需注册阿里云账号并进行企业实名认证。接着,选购服务器如2核2G1兆的Linux系统,并购买域名。完成域名备案后,进行域名解析和ICP备案。然后,通过远程连接登录服务器,重置密码,安装宝塔面板。在安全组中开启宝塔面板随机生成的端口。最后,登录宝塔面板安装LNMP环境,配置数据库如MySQL和Redis,部署JDK、Tomcat,上传前端和后端项目以实现上线。
|
10天前
|
弹性计算 JavaScript Java
阿里云服务器搭建部署宝塔详细流程
以下是内容的摘要: 本文主要介绍了在阿里云上创建和配置服务器环境的步骤,包括注册阿里云账号、实名认证、购买和设置服务器、域名的获取与备案、以及使用宝塔面板安装和配置环境。首先,用户需要注册阿里云账号并进行实名认证,选择合适的服务器配置。接着,购买服务器后,要准备并备案域名,以便通过友好的网址访问网站。在服务器上安装宝塔面板,可以方便地管理和配置LAMP/LNMP/Tomcat/Node.js等应用环境。完成这些步骤后,用户还需要在宝塔面板中安装MySQL、Redis等数据库,部署Java或Vue项目,并配置相关端口。最后,将前端项目打包上传至服务器,并设置站点,即可实现网站的上线。
|
10天前
|
应用服务中间件 Linux 开发工具
如何在阿里云服务器快速搭建部署Nginx环境
以下是内容的摘要: 本文档主要介绍了在阿里云上购买和配置服务器的步骤,包括注册阿里云账号、实名认证、选择和购买云服务器、配置安全组、使用Xshell和Xftp进行远程连接和文件传输,以及安装和配置Nginx服务器的过程。在完成这些步骤后,你将能够在服务器上部署和运行自己的网站或应用。
|
10天前
|
人工智能 安全 云计算
阿里云服务器购买之后发票如何申请?申请发票流程及常见问题参考
申请发票是很多用户尤其是企业级用户在购买完阿里云服务器之后非常关注的问题,对于初次购买阿里云服务器的用户来说,往往并不清楚如何找阿里云申请发票,本文以图文形式为大家介绍阿里云服务器购买完成之后申请发票的详细流程以及常见问题。
阿里云服务器购买之后发票如何申请?申请发票流程及常见问题参考
|
2月前
|
域名解析 应用服务中间件 Linux
【服务器】使用域名解析服务器的IP地址并配置SSL证书
【服务器】使用域名解析服务器的IP地址并配置SSL证书
449 0
|
2月前
|
前端开发 应用服务中间件 Linux
nginx解决springcloud前后端跨域问题,同时配置ssl
nginx解决springcloud前后端跨域问题,同时配置ssl
|
6天前
|
安全 应用服务中间件 网络安全
SSL原理、生成SSL密钥对、Nginx配置SSL
现在,你的Nginx虚拟主机应该已经配置了SSL,可以通过HTTPS安全访问。确保在生产环境中使用有效的SSL证书来保护通信的安全性。
19 0

热门文章

最新文章