本文的一部分:
什么是SSL,什么是TLS?官方说法是SSL是安全套接字层(secure sockets layer),TLS是SSL的后继者,称为传输层安全性(transport layer security). 说穿了,就是在明文的上层和TCP层之间增加一层加密,以保证上层信息传输的安全性. 例如,HTTP协议以纯文本格式传输,并且在添加SSL层之后,有一个优雅的名称HTTPS. 其唯一目的是确保用于上层通信安全性的一组机制. 它的发展又经历了以下时期. 像手机软件的升级一样,每次更新都会添加或删除功能,例如引入新的加密算法和修改握手方法.
SSL1.0: 已废除
SSL2.0: RFC6176已被取消
SSL3.0: RFC6101,基本上已取消
TLS1.0: RFC2246,其中大多数当前使用此方法
TLS1.1: RF346
TLS1.2: RFC5246,未广泛使用
TLS1.3: IETF正在酝酿中
接下来,我们将介绍TLS1.x如何确保通信安全.
如何确保安全?您是说安全性是安全的,如何实现?绝对安全吗?
哈,有人民,有江湖,有江湖,没有绝对的安全. 但是SSL / TLS确实可以在很大程度上保证信息安全. 以下是基于图1中的SSL / TLS工作流的实现过程的概述.
图1 SSL / TLS工作流程
CA: 证书颁发机构. 它类似于国家出入境管理部门,后者向他人发行护照. 它也类似于国家工商行政管理总局,后者向公司颁发营业执照.
它具有两个主要属性:
1)CA本身是受信任的// //国际认可的
2)向受信任的申请人颁发证书//与护照一样,要确定您的合法身份,您不能是分子或叛乱分子. 当然,您需要受到保护,同时ssl认证,CA可以随时吊销您的证书.
证书是什么样的?实际上,您的计算机中有一堆CA证书. 你可以看看吗:
360浏览器: 选项/设置->高级设置->隐私和安全性->管理HTTPS / SSL证书->证书颁发机构
Firefox浏览器: 首选项->高级->证书->查看证书->证书颁发机构
chrome浏览器: 设置->高级->管理证书->授权中心
ubuntu: / etc / ssl / certs
这些是CA证书!
CA的证书ca.crt与SSL服务器的证书server.crt之间有什么关系?
1)SSL Server自己生成一个私钥/公钥对. server.key / server.pub //私钥加密,公钥解密!
2)server.pub生成请求文件server.req. 请求文件包含一些服务器信息,例如域名/申请人/公共密钥等.
3)服务器将请求文件server.req提交给CA. CA验证正确之后,它将使用ca.key和请求文件来生成server.crt
4)由于ca.key和ca.crt是一对,因此ca.crt可以解密server.crt.
在实际应用中: 如果SSL客户端要验证SSL服务器,则SSL服务器必须将其证书server.crt传递给客户端. 然后,客户端使用ca.crt来验证server.crt的合法性. 如果这是网络钓鱼网站,则CA将不会向他颁发有效的server.crt证书,因此客户端将使用ca.crt进行验证,并且它将失败. 例如,如果浏览器是客户端,则您想访问合法的淘宝网站,但如果您不小心访问了该浏览器,则浏览器将检查此假淘宝网络钓鱼网站的非法性,并提醒用户不要继续访问!这样,可以确保客户端的所有https访问都是安全的.
什么是SSL / TLS单向认证和双向认证?
单向身份验证意味着只有一个对象可以验证对等证书的有效性.
通常使用客户端来验证服务器的合法性. 然后客户端需要一个ca.crt,服务器需要server.crt,server.key
双向认证是指相互验证. 服务器需要验证每个客户端,客户端也需要验证服务器.
服务器需要server.key,server.crt,ca.crt
客户端需要client.key,client.crt,ca.crt
图2证书详细工作流程
1)申请认证: 服务器需要生成公钥和私钥对pub_svr和pri_svr,并同时根据pub_svr生成请求文件csr并将其提交给CA. csr包含公钥,组织信息,个人信息(域名)和其他信息. (图1中的server.req是csr请求文件)
2)审核信息: CA通过各种方式(例如,组织是否存在,企业是否合法以及它是否拥有域)来验证申请人提供的信息的真实性,例如和离线名称.
3)颁发证书: 如果信息得到批准,则CA将向申请人颁发认证文件证书.
证书包含以下信息: 申请人的公钥,申请人的组织信息和个人信息,发行机构CA的信息,有效时间,证书序列号等信息,还包含签名.
签名生成算法: 首先,使用哈希函数来计算公共明文信息的信息摘要,然后使用CA的私钥对信息摘要进行加密,并且密文是签名. (server.crt在图1中生成)
4)返回证书: 如果客户端请求验证服务器,则服务器需要返回证书文件. (在图1中,握手返回到server.crt)
5)客户端验证证书: 客户端读取证书中的相关明文信息,使用相同的哈希函数计算消息摘要,然后使用CA的相应公钥对签名的数据进行解密,并对证书进行比较消息摘要,如果相同ssl认证,则可以确的有效性,即公钥合法. 然后,客户端将验证与证书有关的域名信息,是否取消了有效时间等.
客户端将具有内置的受信任CA证书信息(包括公共密钥). 如果不信任CA,则找不到相应CA的证书,并且该证书也将被确定为非法. (在图1中,检查是可选的,我们可以选择不验证服务器证书的有效性)
6)秘密密钥协商: 验证后,服务器和客户端将进行秘密密钥协商. 接下来,服务器和客户端将使用对称密钥加密. (对称的加密时间性能非常出色)(图1中的pre-master / change_cipher_spec / encrypted_handshake_message过程)
7)数据传输: 服务器和客户端使用对称密钥来加密和解密数据.
客户端发起一个请求,以明文形式发送请求信息,包括版本信息,密码套件候选列表,压缩算法候选列表,随机数,扩展字段和其他信息. 相关信息如下:
客户端计算所有接收到的信息的哈希值,并使用协商后的密钥对crypted_handshake_message进行解密,验证服务器发送的数据和密钥,并在验证后完成握手;
开始使用协商的密钥和算法进行加密通信.
我们构建的SSL / TLS服务器为192.168.111.100,客户端为192.168.111.101. 客户端需要验证服务器的合法性.
我们只查看TLSv1.1数据包:
第一个程序包(第25个)Client Hello程序包,即SSL / TLS单向身份验证过程的(1)
第二个软件包(第27号)服务器Hello软件包,包括服务器证书等. 这是SSL / TLS单向身份验证过程的(2)
第三包(第28号)服务器证书验证完成,并且客户端密钥交换+更改密码规范+加密握手消息同时发送. 这就是SSL / TLS单向身份验证过程的(4)
第四包(第29号)密钥协商,更改密码规范+加密的hanshake消息. 即SSL / TLS单向身份验证过程的(5)
第五个数据包(第30个)握手完成. 开始上层数据传输. SSL / TLS单向身份验证过程(7)
它与单向身份验证几乎相同,除了客户端对服务器证书进行身份验证之后,客户端会将自己的证书client.crt传递给服务器. 服务器通过身份验证后,密钥协商开始.
实际的wireshark分析:
与单向身份验证相同:
我们构建的SSL / TLS服务器为192.168.111.100,客户端为192.168.111.101. 客户端需要验证服务器的合法性,服务器还需要验证客户端的合法性!
我们只查看TLSv1.1数据包:
第一个程序包(第55号)Client Hello程序包,即SSL / TLS单向身份验证过程的(1)
第二个软件包(第57号)服务器Hello软件包,包括服务器证书等. 这是SSL / TLS单向身份验证过程的(2)
第三包(第60号)服务器证书验证完成,并且同时发送客户端证书client.crt,其中还包括客户端密钥交换+更改密码规范+加密的握手消息. 也就是说,SSL / TLS单向身份验证过程(4)
第四包(第61号)服务器验证客户端证书的有效性. 通过密钥协商后,更改密码规范+加密的hanshake消息. 即SSL / TLS单向身份验证过程的(5)
重发数据包(第62号)由于网络原因,TCP重发了60号数据包.
第五个数据包(第64个)握手完成. 开始上层数据传输. SSL / TLS单向身份验证过程(7)
扩展名是什么,例如crt / key / req / csr / pem / der?
1).crt表示证书,.key表示私钥,.req表示请求文件,.csr表示请求文件,.pem表示pem格式,.der表示der格式.
您可以根据需要命名文件扩展名. 命名不同的扩展名只是为了了解需求. 但是,文件中的信息已格式化. 与exe和PE格式一样,证书有两种格式.
pem格式和der格式. 所有证书,私钥等可以是pem或der格式,具体取决于应用程序的需求.
pem和der格式可以相互转换:
openssl x509 -in ca.crt -outform DER -out ca.der //pem -> der
openssl x509 -inform der -in ca.der -out ca.pem // der -> pem
pem格式:经过加密的文本文件,一般有下面几种开头结尾:
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
or:
-----BEGIN CERTIFICATE REQUEST-----
-----END CERTIFICATE REQUEST-----
or:
----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
der格式: 加密的二进制文件.
2)证书包含申请人的公钥,申请人的组织信息和个人信息,发证机关的CA信息,有效期,证书序列号和其他纯文本信息,还包含签名. 例如,查看百度证书的详细信息.
a)首先下载百度证书
要访问Firefox浏览器,请单击左上角的绿色小锁,单击向右箭头,单击更多信息,单击以查看证书,单击详细信息,然后单击导出. 您可以导出百度的证书baiducom.crt
b)查看证书详细信息的命令
openssl x509 -noout -text -in baiducom.crt
在详细信息中,存在一个字段: X509v3基本约束: CA: FALSE
此字段指示证书是CA证书还是常规的非CA证书. 有关详细说明,请参阅RFC5280#section-4.2.1.9,并且RFC5280还详细介绍了证书的工作方法.
3)私钥加密,公钥解密!
SSL / TLS是一个工作原理,openssl和mbedtls是SSL / TLS的特定实现,非常类似于TCP / IP协议和套接字之间的关系.
我们使用makefile.sh脚本在本地创建一个CA(ca.crt + ca.key),并使用该CA分别向服务器和客户端颁发证书.
makefile.sh
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the axTLS project nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
#
# Generate the certificates and keys for testing.
#
PROJECT_NAME="TLS Project"
# Generate the openssl configuration files.
cat > ca_cert.conf << EOF
[ req ]
distinguished_name = req_distinguished_name
prompt = no
[ req_distinguished_name ]
O = $PROJECT_NAME Dodgy Certificate Authority
EOF
cat > server_cert.conf << EOF
[ req ]
distinguished_name = req_distinguished_name
prompt = no
[ req_distinguished_name ]
O = $PROJECT_NAME
CN = 192.168.111.100
EOF
cat > client_cert.conf << EOF
[ req ]
distinguished_name = req_distinguished_name
prompt = no
[ req_distinguished_name ]
O = $PROJECT_NAME Device Certificate
CN = 192.168.111.101
EOF
mkdir ca
mkdir server
mkdir client
mkdir certDER
# private key generation
openssl genrsa -out ca.key 1024
openssl genrsa -out server.key 1024
openssl genrsa -out client.key 1024
# cert requests
openssl req -out ca.req -key ca.key -new \
-config ./ca_cert.conf
openssl req -out server.req -key server.key -new \
-config ./server_cert.conf
openssl req -out client.req -key client.key -new \
-config ./client_cert.conf
# generate the actual certs.
openssl x509 -req -in ca.req -out ca.crt \
-sha1 -days 5000 -signkey ca.key
openssl x509 -req -in server.req -out server.crt \
-sha1 -CAcreateserial -days 5000 \
-CA ca.crt -CAkey ca.key
openssl x509 -req -in client.req -out client.crt \
-sha1 -CAcreateserial -days 5000 \
-CA ca.crt -CAkey ca.key
openssl x509 -in ca.crt -outform DER -out ca.der
openssl x509 -in server.crt -outform DER -out server.der
openssl x509 -in client.crt -outform DER -out client.der
mv ca.crt ca.key ca/
mv server.crt server.key server/
mv client.crt client.key client/
mv ca.der server.der client.der certDER/
rm *.conf
rm *.req
rm *.srl
将以上代码另存为makefile.sh
进行以下修改,并执行终端.
-将CN域中的IP地址更改为主机/设备的IP地址
-[可选]将加密数字1024更改为所需的加密数字
您将看到:
ca目录: 保存ca的私钥ca.key和证书ca.crt
certder目录: 将证书另存为二进制文件,例如client.der server.der
客户端目录: client.crt client.key
服务器目录: server.crt server.key
$./makefile.sh
删除脚本rmfile.sh:
rm ca/ -rf
rm certDER/ -rf
rm client/ -rf
rm server/ -rf
将上述代码另存为rmfile.sh并在终端中执行,这将删除生成的目录和文件:
$./rmfile.sh
我们可以在本地使用CA证书来验证自己颁发的服务器证书server.crt和客户端证书client.crt.
$openssl verify -CAfile ca/ca.crt server/server.crt
$openssl verify -CAfile ca/ca.crt client/client.crt
本文来自本站,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-257141-1.html
……