精华内容
下载资源
问答
  • HTTPS加密机制详解 ...首先加密通信是一个什么样机制?加密通信会根据某些规则对数据进行加密和解密,以便在互联网上...目前有两种加密方式用于加密数据。 公钥加密方式(PKI) 这是一种使用不同密钥进行加密和...

    HTTPS加密机制详解

    以下内容由SSL盾小编整理发布,更多理论知识【www.ssldun.com】 网站安全之盾
    加密通信机制

    首先加密通信是一个什么样的机制?加密通信会根据某些规则对数据进行加密和解密,以便在互联网上进行数据交换而不会被第三方所窃取。从原文转变称密文称为加密,而从密文转换称原文被称为解密。目前有两种加密方式用于加密数据。

    公钥加密方式(PKI)

    这是一种使用不同的密钥进行加密和解密的方法。提前准备好一对密钥(公钥和私钥)分别用于加密和解密。当使用公钥进行加密后就只能使用私钥进行解密。

    HTTPS协议加密怎么进行的?HTTPS加密详解

    优点:公钥加密必须采用配对的私钥进行解密,只要保证私钥不被泄漏,就能保证数据的安全,这样管理密钥就会更加的容易,并且更加的安全。

    缺点:进行加密和解密时需要更多的时间。

    通用密钥加密方式

    使用相同的密钥进行加密和解密。

    HTTPS协议加密怎么进行的?HTTPS加密详解

    优点:加密解密的处理速度快。

    缺点:由于加密和解密使用同一个密钥,密钥存在泄漏的风险,导致数据存在被窃听和篡改的风险。

    使用SSL证书的HTTPS加密通信

    通常的互联网通信,是采用HTTP的明文通信协议。在这种通信协议下,信息会以明文的方式进行传输。这样就会存在被第三方窃取、篡改的风险。因此,我们采用HTTPS协议进行加密通信。

    HTTPS协议是采用加密的方式对数据进行传输,并且使用的是更适合互联网的公钥加密方式。互联网网站只要在服务器上安装部署上SSL证书,即可使网站实现HTTPS协议通信。

    HTTPS协议在通信时,首先会采用公钥加密的方式,把密钥进行公钥加密,然后传输给服务器,服务器使用私钥解密出密钥后,客户端和服务器即可建立起安全的访问通道。在接下来的通信就会采用速度更快的通用密钥的加密方式进行数据传输。

    这样HTTPS协议就既拥有公钥加密的安全性,同时也拥有了通用加密的高速的两个优点。HTTPS协议必然会取代HTTP成为日后互联网通信的主流通信协议。

    以上就是对HTTPS 机制详解了,那么https是什么你现在了解了吗?

    转载于:https://blog.51cto.com/14379936/2408262

    展开全文
  • 也许你实现了一个P2P,或者某个基于 UDP的协议,而缺乏一套完善的ARQ可靠协议实现,那么简单的拷贝这两个文件到现有项目中,稍微编写两行代码,即可使用。 技术特性 TCP是为流量设计的(每秒内可以传输多少KB的数据...
  • SSL/TLS协议是基于TCP socket,利用加密、基于数字证书身份验证等机制在传输层和应用层之间构建了一个端到端安全通道,保证了传输数据的加密性。 但是SSL/TLS协议并不能用于UDP协议,而UDP也有安全传输需求,...

     

    1.DTLS介绍

    1.1 DTLS的作用

    互联网先驱们最开始在设计互联网协议时主要考虑的是可用性,安全性是没有考虑在其中的,所以传输层的TCP、UDP协议本身都不具备安全性。SSL/TLS协议是基于TCP socket,利用加密、基于数字证书的身份验证等机制在传输层和应用层之间构建了一个端到端的安全通道,保证了传输数据的加密性。

    但是SSL/TLS协议并不能用于UDP协议,而UDP也有安全传输的需求,于是产生了DTLS协议(Datagram TLS)。

    即DTLS的作用为给UDP提供端到端的安全通道,就像SSL/TLS对TCP的作用一样。并且DTLS尽可能参考了SSL/TLS协议的安全机制,在具体实现上复用了70%的TLS代码。

    1.2 DTLS的特点

    UDP协议是不面向连接的不可靠协议,且没有对传输的报文段进行加密,不能保证通信双方的身份认证、消息传输过程中的按序接收、不丢失和加密传送。

    而DTLS协议在UDP提供的socket之上实现了客户机与服务器双方的握手连接,并且在握手过程中通过使用PSK或ECC实现了加密,并且利用cookie验证机制和证书实现了通信双方的身份认证,并且用在报文段头部加上序号,缓存乱序到达的报文段和重传机制实现了可靠传送。

    在握手完成后,通信双方就可以利用握手阶段协商好的会话密钥来对应用数据进行加解密。

    1.3 DTLS协议层次

    DLTS协议分为两层,下层为记录层(record层),record包的内容分为头部和载荷两部分。record包的载荷即为上层的内容。DTLS上层的包的类型分为三种,分别是握手消息,警告消息,应用数据;如图一所示。

     

    图一.DTLS协议的层次

    在整个DTLS协议的通信过程中,通信双方构造报文段的过程都是先产生上层的载荷消息(如握手消息,应用数据,警告消息),然后添加头部,构成完整的上层消息。接着再以此作为记录层的载荷,最后添加记录层的头部,构成完整的记录报文段,最后调用UDP的socket接口,发送给另一方。

    加密过程是只对记录层的载荷(即上层消息,此协议中被加密的消息是finished消息和应用数据两种)进行加密,所以接收方在收到记录消息后,首先要做的也是判断记录消息是否被发送方加密,若是,则应先解密才能读取出明文数据以进行后面的处理。

    2.client/server建立DTLS连接的握手过程

    2.1 整个握手阶段的交互过程

    DTLS的传输阶段分为两个:握手阶段和握手建立之后的传输应用数据阶段。

    DTLS的握手阶段如下图二所示:

     

    图二.DTLS协议客户机与服务器握手阶段的交互过程

    客户机向服务器发起连接,服务器可以根据配置选择是否验证客户机的cookie和证书(即是否向客户机发送client_hello_verify和certificate_request报文段)。

    2.2 DTLS的cookie验证机制

    由于DTLS是基于UDP的,所以可能会遭受两种形式的拒绝服务攻击。一种是类似于对TCP的资源消耗攻击,另一种是放大攻击,即恶意攻击者仿造被攻击者的IP地址发通信初始化报文段给服务器,而服务器会返回一个体积大很多的证书给被攻击者,超大量证书有可能造成被攻击者的瘫痪。

    cookie机制要求客户机重复发送服务器之前发送的cookie值来验证通信方的源IP地址确实可以通信,由此可以减少拒绝服务攻击的危害。

    cookie验证身份的具体机制为:

    协议规定客户机发送的第一个报文段client_hello中含有cookie的值这一项(有可能为空)。服务器检验收到的该报文段中的cookie值,如果cookie为空,则说明之前没建立过连接,服务器根据客户机的源IP地址通过哈希方法随机生成一个cookie,并填入client_hello_verify中发送给客户机。

    客户机再在第二次发送的client_hello报文段中填入服务器之前发过来的cookie,服务器第二次收到该报文段之后便检验报文段里面的cookie值和服务器之前发给该主机的cookie值是否完全相同,若是,则通过cookie验证,继续进行握手连接;若不是,则拒绝建立连接。

    2.3 client_hello报文段和server_hello报文段的内容

    client_hello报文段的内容除cookie外,还有客户机产生的32字节的随机数,其中前4字节为时间戳,后28字节为系统产生的随机数。此外,该报文段的内容还有客户机支持的加密方式(PSK或者ECC)和压缩方式,供服务器进行选择。

    在通过cookie校验后,服务器发送server_hello报文段给客户机。该报文段包含有服务器产生的32字节的随机数,和服务器选中的用来进行之后的会话的加密方式和压缩方式。

    2.4 certificate报文段的内容

    在服务器发给客户机的证书报文段中,包含有服务器证书的公钥;客户机接收到该报文段后,按照协议规定,从报文段的对应位置中读取出服务器证书的公钥存入相关变量中。

    2.5 基于ECC加密方式的ECDH秘钥交换协议和ECDSA数字签名算法

    若协议所选加密方式为ECC(椭圆曲线加密),则在server_key_exchange报文段的构造过程中会使用ECDH(椭圆曲线秘钥交换协议)和ECDSA(椭圆曲线数字签名算法)。ECDH和ECDSA分别是ECC和DH(diffie-hellman)秘钥交换协议、DSA(数字签名算法)的结合。

    在server_key_exchange报文段中,包含有所选用的椭圆曲线E,阶N和基点G的x,y坐标,客户机在收到这个报文段后,进行对应的格式检验,并读取数据,因此服务器和客户机共同获得约定好的用来进行ECDH秘钥协商交换协议的参数,从而可以共同协商出相同的对话秘钥用于加密之后的会话内容。

    同时,为了防范中间人攻击,服务器还在server_key_exchange报文段的末尾对整个报文段进行了ECDSA数字签名。具体签名过程为先用client_hello报文段和server_hello报文段中的2个32字节的随机数作为函数参数,利用sha256哈希算法对server_key_exchange报文段本身的载荷产生摘要,然后再用服务器的私钥和sha256哈希算法进行ECDSA数字签名,得到签名结果r和s,并写入server_key_exchange报文段的末尾。

    客户机在收到server_key_exchange报文段后,先进行各数值项格式的校验,然后提取出报文段末尾的签名值r和s。之后,用已经读取出的服务器的公钥的x,y坐标值来对server_key_exchange报文段进行ECDSA签名验证,若结果和报文段中的r和s值一致,则报文段通过验证。

    2.6 基于PSK加密方式的身份认证过程和会话秘钥产生过程

    整个DTLS协议的加密方式可选用ECC或PSK(预共享秘钥,PreSharedKey)两种。若为ECC,则通过ECDH协议来进行通信双方的秘钥协商;若为PSK,则直接以通信双方事先就已经约定好了的秘钥为基础来进行加密通信。

    对于PSK加密通信来说,验证对方的通信身份非常关键。所以通信双方会在本地存取对方的psk_id(即身份标志)和psk_id_length(身份标志长度),通过比较收到的报文段中的psk_id,psk_id_length和本地存储的是否完全一致来进行对方身份的验证。

    在整个通信过程中,采用PSK与ECC的区别主要体现在server_key_exchange报文段、client_key_exchange报文段的内容不同和双方计算得到预主秘钥方式的不同。

    当采用PSK加密时,server_key_exchange报文段和client_key_exchange报文段的内容分别是服务器与客户机各自的psk_id和psk_id_length,由此双方可以互相知道对方的psk_id和psk_id_length。

    之后,双方都会对收到的报文段进行检验,只有psk_id和psk_id_length与本地存储的完全一致才会进行后面的通信。

    当双方都通过身份验证后,双方再各自用相同的函数产生预主秘钥,而函数的参数包括之前通信阶段中双方各自产生的32字节的随机数,由此可以保证虽然本地存储的psk秘钥不变,但每次临时通信时的会话秘钥还是会一直变化的,从而增强了抗攻击性。

    双方产生预主秘钥后,再调用和使用ECC加密的相同方式来产生主秘钥,即用于之后会话通信的对称秘钥,该过程中依然会用到双方产生的32字节的随机数。

    由此,通信双方使用PSK加密方式来实现了身份认证和会话秘钥的产生。

    2.7 server_hello_done报文段和client_key_exchange报文段的内容

    服务器发送的server_hello_done报文段的载荷部分为空,只是发给客户机来作为标志,表示服务器当前阶段的报文段已经发送完毕。

    客户机在收到server_hello_done报文段后,发送client_key_exchange报文段给服务器,里面包含了用于秘钥协商的基点的x,y坐标,并且不同于server_key_exchange报文段,客户机并没有在报文段的末尾进行ECDSA数字签名。

    2.8 客户机产生会话秘钥

    之后,客户机再通过ecdh_pre_master_secret函数来产生用于之后会话的预主秘钥。其中函数的参数包括客户机自己的私钥,和服务器共享的用于ECDH秘钥协商算法的基点的x,y坐标。

    产生预主秘钥后,再根据之前阶段客户机和服务器分别产生的32字节的随机数产生主秘钥master_secret,此时主秘钥为对称秘钥,用于之后会话的加解密。

    2.9 change_cipher_spec报文段和finished报文段的内容

    客户机计算出会话秘钥后,发送change_cipher_spec报文段给服务器,这个报文段的有效载荷为空,用来作为标志通知服务器,表示客户机已经算出主秘钥,之后发送的报文段会采用主秘钥加密。

    握手阶段中客户机发送的最后一个报文段为finished报文段,载荷内容为MAC值(消息验证码),用于给服务器做认证。并且值得注意的是,finished报文段作为记录层的载荷部分在发送时已经用上一步产生的会话秘钥进行加密编码。

    2.10 服务器产生会话秘钥

    服务器在收到客户机发送过来的finished报文段后,也会和客户机用ECDH秘钥协商算法经过相同的流程,调用相同的函数先产生预主秘钥,再产生主秘钥。

    2.11 握手阶段的结束

    最后,服务器产生经会话秘钥加密后的finished报文段给客户机,标志整个握手阶段的结束。

    客户机收到服务器发过来的finished报文段后,便可发送应用数据。并且应用数据会一直用会话秘钥加密,从而实现了UDP所不具备的安全性。

    展开全文
  • linux之openssh协议

    2019-10-06 12:52:05
    SSH全称是Secure Shell,简单说来ssh是一种安全外壳协议用于两个计算机间安全远程登陆,说它安全,是因为ssh采用公钥加密的机制。最开始时用作远程管理工具是telnet,这个协议工作时在网络上传输数据全...

     

    SSH的全称是Secure Shell,简单说来ssh是一种安全的外壳协议,用于两个计算机间安全的远程登陆,说它安全,是因为ssh采用公钥加密的机制。最开始时用作远程管理的工具是telnet,这个协议工作时在网络上传输的数据全是明文,出于安全性的考虑,此协议的使用率越来越少。而ssh的安全性使用它成为一种互联网上远程登陆主机的解决方案。在windows系统上常用到的有Putty、SecureCRT、XManager中的Xshell工具,而XManager工具是我见到的IT工作者中使用频率极高的一个工具,在windows上好像没有ssh协议的服务器端的实现,ssh协议的实现也分为商业的实现和开源的实现,在这里将是对ssh协议的一个开源实现的学习与记录。Openssh即是Linux系统下开源的实现,它开放且免费。

     

    从客户端来看,SSH提供两种级别的安全验证。

    第一种级别(基于用户名和口令的安全验证)只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。

    第二种级别(基于密匙的安全验证也叫基于公钥的验证)需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在你在该服务器的家目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。

    用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令。

    上述2种方式一般选其一。

    putty这2种都支持,我们一般用putty的时候,需要输入用户名和密码,就是基于口令的验证。

    其过程:

    wKioL1LbXejDpvOFAAZV7FsCDpY940.jpg

     

     

    应对中间人攻击,SSH有2种方法应对,一是远程主机把自己的公钥拿到CA处做认证,申请一个数字证书;二是远程主机把自己公钥的指纹信息公布出来,比如公布在网站上,大家都可查看到公钥的指纹信息。这样用户在登陆时就可以鉴别主机的真伪了。提取主机的指纹信息的方法如下:

    [root@Server-A ~]# ssh-keygen -lf/etc/ssh/ssh_host_dsa_key.pub 
    102439:61:e5:80:e8:09:b3:83:10:39:c8:b4:5e:ca:45:7e /etc/ssh/ssh_host_dsa_key.pub(DSA)

    远程主机可以把这个采用dsa算法的指纹信息发布在一个网站上,那我用xshell去远程连接时就可对比一下指纹信息是不是一样,如果是一样的那就能证明我连接的是真实的主机。

    在linux下用ssh方式登陆另一linux主机时,如果第一次登陆会有如下的提示:

    [root@Server-A~]# ssh 192.168.0.201
    Theauthenticity of host '192.168.0.201 (192.168.0.201)' can't be established.
    RSAkey fingerprint is 4c:a3:2f:29:69:86:f6:0f:38:25:8c:7c:7c:3b:d5:91.
    Areyou sure you want to continue connecting (yes/no)?

    表示的意义与用xshell登陆时的提示相同,输入“yes”,再输入远程主机的口令即可登陆,登陆成功后本地主机会生成“~/.ssh/known_hosts”文件,这文件里保存着远程主机的公钥信息,这样下次再远程登陆时就不需要发送公钥信息了,直接输入口令即可。

     

    基于公钥的认证:

        基于用户口令的认证方式每次都要求用户提供正确的口令,比较麻烦,且增加了口令泄露的机率。而基于公钥的认证则不需要用户输入口令即可完成远程登陆。这种认证方式是这样工作的:用户把自己的公钥存储在远程主机上,在登陆时,远程主机向用户发送一段随机字符串,用户用自己的私钥加密这段随机数字,并把加密后的信息发送给远程主机,远程主机用事先存储的公钥来解密这个数据,如果解密成功,则说明请求登陆的用户是可信任的,这样就直接允许用户登陆,而不要求输入密码了。这种认证方式需要把用户自己的公钥保存到远程主机上。若没有现成的公钥,那就生成:

    [root@Server-A~]# ssh-keygen -t rsa
    Generatingpublic/private rsa key pair.
    Enterfile in which to save the key (/root/.ssh/id_rsa): 
    Enterpassphrase (empty for no passphrase): 
    Entersame passphrase again: 
    Youridentification has been saved in /root/.ssh/id_rsa.
    Yourpublic key has been saved in /root/.ssh/id_rsa.pub.
    Thekey fingerprint is:
    9b:ef:2c:6a:92:05:c7:f4:4b:b8:4e:b4:ce:05:2f:0croot@Server-A
    Thekey's randomart image is:
    +--[RSA 2048]----+
    |                 |
    |      .         |
    |     o o        |
    |    E * o       |
    |     * *S.      |
    |      B +o      |
    |     B oo       |
    |    o = .o      |
    |     o.. o+     |
    +-----------------+
    [root@Server-A~]# ls .ssh/
    id_rsa  id_rsa.pub known_hosts
     
    此时在家目录下的“./ssh”目录下生成了两个文件,一个id_rsa(私钥文件),id_rsa.pub(公钥文件)。接着把公钥文件拷贝到远程主机:

    [root@Server-A ~]# scp .ssh/id_rsa.pub 192.168.0.201:/root/.ssh/authorized_keys

    这里的“authorized_keys”这个文件名不能更改,这是由“/etc/ssh/sshd_config”文件定义的。

    测试一下能否不输入密码就能远程登陆Server_B主机:

    [root@Server-A ~]# ssh 192.168.0.201
    Address 192.168.0.201 maps to bogon, butthis does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!
    [root@Server-B ~]#
    没错,成功了,但有报告信息,这是因为在/etc/hosts文件里没有增加两主机的映射关系,增加就可以了,在两主机中的“/etc/hosts”文件中都增加以下两行:
    [root@Server-A ~]# echo"192.168.0.200  Server-A">> /etc/hosts
    [root@Server-A ~]# echo "192.168.0.201  Server-B" >> /etc/hosts
    上边用“scp”命令直接把主机的公钥文件拷贝到远程主机用户家目录下的“root/.ssh/authorized_keys”,其实还有一个更好的方法,ssh为我们提供了一个客户端工具,即“ssh-copy-id”,这个工具能将本地主机的公钥自动拷贝到远程主机上生成“authorized_keys”文件,且会让这个文件的权限为“600”这样更为安全,此命令的用法如下:
    [root@Server-A ~]# ssh-copy-id root@192.168.0.201
    建议用这个命令来实现无密码公钥登陆,因为用“scp”命令把公钥拷贝到远程主机后,不会把authorized_keys文件的权限修改成“600”,在某些linux版本下是无法实现基于公钥登陆的。
     
    wKioL1LbXg6i3chIAAWteYRXX8g912.jpg
     
     

     对于openssh,我们需要关注的配置文件分为两类,一类是公共配置文件,另一类是私有配置文件。公共配置文件又分为服务端的配件文件和客户端的配置文件。

    /etc/ssh/sshd_config   #服务端配置文件

    /etc/ssh/ssd_config    #客户端配置文件

    ~/.ssh/*               #私有配置文件

    我们主要关注的是服务端的配置文件和私有配置文件。

     

    SSH的配置文件主要分为服务器端和客户端:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
         服务器端:/etc/ssh/sshd_config
         客户端:/etc/ssh/ssh_config
     1.限制root用户远程登录
         # vi /etc/ssh/sshd_config
         PermitRootLogin no
     2.通过控制用户访问限制 SSH 访问
         # vi /etc/ssh/sshd_config
         AllowUsers fsmythe bnice swilson
         DenyUsers jhacker joebadguy jripper
     3.# vi /etc/ssh/sshd_config
         Protocol 2
     4.不要支持闲置会话,并配置 Idle Log Out Timeout 间隔:
    #当客户端连上服务器端后,若没有任何操作则,服务器端默认会
    #每隔一定时间发送一个alive消息给客户端寻求客户端应答,
    #默认一共发三次.若都没有回应,则断开连其中           
    #ClientAliveInterval设置每隔多少秒发送一次alive消息
    #ClientAliveCountMax 设置一共发多少次.
         # vi /etc/ssh/sshd_config
         ClientAliveInterval 600     
         # (Set to 600 seconds = 10 minutes)
         ClientAliveCountMax 0
     5.禁用基于主机的身份验证:(这种认证方式是不安全的)
         # vi /etc/ssh/sshd_config
         HostbasedAuthentication no
     6.使用 Chroot SSHD 将 SFTP 用户局限于其自己的主目录
         # vi /etc/ssh/sshd_config
         ChrootDirectory /home/%u
     7.禁用空密码:
         # vi /etc/ssh/sshd_config
         PermitEmptyPasswords no
     8.指令压缩
         Compression {yes|no|delayed}
     #默认是delayed 意思就是等到用户认证结束后再对数据进行压缩
     9.设置日志级别
     #LogLevel INFO 默认是INFO级别,调试的时候可以选择DEBUG
     #级别,这样调试信息更加详细
     10.支持图形界面操作
         X11Forwarding yes
     #对Xwindows的数据进行转发,开启该项并使用xshell程序远程登
     #录服务器是可以打开图形界面程序

    其它选项:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    PrintMotd no            
    # 登入后是否显示出一些信息呢?例如上次登入的时间、地点等,预设是 yes ,但是,如果为了安全,可以考虑改为 no !
    PrintLastLog yes     
    # 显示上次登入的信息!可以啊!预设也是 yes !
    KeepAlive yes    
    # 一般而言,如果设定这项目的话,那么 SSH Server 会传送
    # KeepAlive 的讯息给 Client 端,以确保两者的联机正常!
    # 在这个情况下,任何一端死掉后, SSH 可以立刻知道!而不会
    # 有僵尸程序的发生!
    Banner /to/somefile
    # 指定在用户完成认证前输出到终端的信息
    GSSAPIAuthentication no
    #指定是否使用基于GSSAPI的用户认证默认为no
    MaxAuthTries 默认值为6
    #每一个链接最多尝试验证的次数为这个值得一半,此外失败的信息还会记录在/var/log/message
    UseDNS yes
    #是否对主机名进行dns解析(常用与没有固定IP只有域名的场合)

     

     
     

    1.生成密钥(客户端操作)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    [root@wwww ~]# ssh-keygen -t rsa -b 4096
    #-t 指定生成密钥的算法 -b指定密钥的位数
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa):
    #询问生成的密钥放在的位置,默认放在家目录下的.ssh目录
    Enter passphrase (empty for no passphrase):
    #询问是否对私钥再进行加密
    Enter same passphrase again:
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    e7:60:45:fe:d8:09:24:c1:1e:ef:35:cc:c1:c3:24:e4 root@wwww.axhu.com
    #生成的指纹信息

    注: 这里使用ssh-keygen -t rsa -b 4096 -f /path/to/KEY_FILE -P '指定加密私钥的密码' 这样既可实现自动化,不要交互了

    2.传送密钥至远程服务器
    有两种实现方式:
       方式一:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    [root@wwww ~]# scp ~/.ssh/id_rsa.pub root@192.168.157.132:~/
    The authenticity of host '192.168.157.132 (192.168.157.132)' can't be established.
    RSA key fingerprint is 6e:0f:f8:f8:c7:c2:11:e6:4d:99:aa:16:6a:81:4a:02.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '192.168.157.132' (RSA) to the list of known hosts.
    root@192.168.157.132's password:
    id_rsa.pub                                                                                   100%  740     0.7KB/s   00:00
    然后远程连接到远程主机进行设置:
    [root@wwww ~]# ssh root@192.168.157.132
    root@192.168.157.132's password:
    Last login: Sat Jan 18 21:16:49 2014 from 192.168.157.128
    [root@bogon ~]# mkdir .ssh
    #这个目录默认不存在,但是这太机子若连接过其他服务器就会自动生成.ssh目录用来保存known_hosts文件
    [root@bogon ~]# chmod 700 .ssh
    #这个权限很重要,设置不对的话是没法通过验证
    [root@bogon ~]# cat id_rsa.pub >> ~/.ssh/authorized_keys
    #这里最好每次都是以>>追加的形式输出,不然会覆盖其他主机的公钥
    [root@bogon ~]# chmod 600 ~/.ssh/authorized_keys
    #修改权限放在其他用户修改查看
    到此配置完成


       方式二:

    1
    2
    3
    4
    5
    6
    [root@wwww ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.157.132
    root@192.168.157.132's password:
    Now try logging into the machine, with "ssh 'root@192.168.157.132'", and check in:
      .ssh/authorized_keys
    to make sure we haven't added extra keys that you weren't expecting.
    #直接通过命令完成.推荐使用,但是并不是每台机器上都会装有这个命令.

     

     

     

     

    转载于:https://www.cnblogs.com/kex1n/p/5220823.html

    展开全文
  • HTTP:超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最广泛一种网络协议,是一个客户端向服务端请求和答应标准(TCP),用于WWW服务器传输超文本到本地浏览器传输协议,他可以使浏览器...

    一、HTTP和HTTPS的基本概念

    HTTP:超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最广泛的一种网络协议,是一个客户端向服务端请求和答应的标准(TCP),用于WWW服务器传输超文本到本地浏览器的传输协议,他可以使浏览器更加高效,使网络传输减少。

    HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全办,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容内容就是SSL。

    HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

    二、HTTP和HTTPS的区别

    1.https协议主要到ca申请整数,一般免费整数很少,需要交费。
    2.http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
    3.http和https使用的事完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
    4.http的连接很简单,是无状态的;https协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全

    三、前端常用状态码

    类别 原因短语
    1xx Informational(信息性状态码) 接受的请求正在处理
    2xx Success(成功状态码) 请求正常处理完毕
    3xx Redirection(重定向) 需要进行附加操作以完成请求
    4xx Client error(客户端错误) 客户端请求出错,服务器无法处理请求
    5xx Server Error(服务器错误) 服务器处理请求出错

    四、get/post

    GET

    请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传参数据,多个参数用&连接;
    get就是获取数据

    POST提交

    把提交的数据放置在HTTP包的包体中。GET
    提交的数据会在地址栏中显示,而POSt提交,地址栏不会改变
    post就是修改数据

    区别:
    1.传输数据的大小:首先声明:HTTP协议没有对传输的数据大小进行限制,HTTP协议规范也没有对URL长度进行限制。而在实际开发中存在的限制主要有:

    GET:特定浏览器和服务器对URL长度有限制,例如 IE对URL长度的限制是2083字节(2K+35)。
    对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。
    因此对于GET提交时,传输数据就会受到URL长度的限制。

    POST:由于不是通过URL传值,理论上数据不受限。但实际各个WEB服务器会规定对post提交数据大小进行限制,Apache、IIS6都有各自的配置。

    2.安全性
    POST的安全性要比GET的安全性高。比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为(1)登录页面有可能被浏览器缓存;(2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击

    五、HTTP缓存机制

    http缓存分为强缓存和协商缓存

    强缓存
    Cache-Control (低版本浏览器用的是Expires,了解即可)

    是最重要的规则。常见的取值有private、public、no-cache、max-age,no-store,默认为private。

    private: 客户端可以缓存

    public: 客户端和代理服务器都可缓存(前端的同学,可以认为public和private是一样的)

    max-age=xxx: 缓存的内容将在 xxx 秒后失效

    no-cache: 需要使用对比缓存来验证缓存数据

    no-store: 所有内容都不会缓存,强制缓存,对比缓存都不会触发(对于前端开发来说,缓存越多越好,so…基本上和它说886)

    协商缓存(对比缓存)
    他用的不是时效时间max-age

    第一次请求的时候,返回给客户端数据和缓存的信息,也就是一个特定的缓存标识

    客户端把这个缓存标识放到缓存数据库

    再次请求时 客户端先把缓存标识也一起发给服务端,进行对比

    客户端将备份的缓存标识发送给服务器,服务器根据缓存标识进行判断,判断成功后,返回304状态码,通知客户端比较成功,可以使用缓存数据。

    分为两种缓存标识

    Etag (唯一标识)优先级更高

    Last-Modified/If-Modified-Since 返回给客户端最后这个资源的修改时间,优先级没有Etag高

    对比缓存标识生效不生效时,状态码200,服务端返回body和header

    在对比缓存标识生效时,状态码为304,并且报文大小和请求时间大大减少。

    原因是,服务端在进行标识比较后,只返回header部分,通过状态码通知客户端使用缓存,不再需要将报文主体部分返回给客户端。

    缓存总结
    强制缓存的优先级更高,如果没失效,就直接用缓存数据库里的东西

    如果时间已经失效了,就看用的是哪种标识(Etag服务端生成的唯一标识,还是last-modified资源最后修改时间标识)返回304就用缓存里的,返回200就返回body和新的header

    一般来说,无论如何都会协商缓存,浏览器必备的缓存不可能没有~

    展开全文
  • 5.3 用于调制和解调调制解调器硬件 21 5.4 租用模拟数据线路 22 5.5 光学、无线和拨号调制解调器 22 5.6 载波频率和多路复用 23 5.7 基带和宽带技术 24 5.8 波分多路复用 24 5.9 分布频谱 25 5.10 时分多路复用 25...
  • HTTP:是互联网上应用最为广泛一种网络协议,是一个客户端和服务器端请求和应答标准(TCP),用于从WWW服务器 传输超文本到本地浏览器传输协议,它可以使浏览器更加高效,使网络传输减少。 HTTPS:是以安全为...
  • 而这类协议的竞争者相对较多,使用IPFS又没有特别奖励机制,且http底层协议还是目前互联网的主流,使得IPFS一直处在一个很尴尬地位。 打破这一局面是在协议实验室(ProtocolLabs)在设立激励机制之后。Fileco
  • 6.3 OpenSSH

    2019-02-18 22:06:13
    一、什么是SSHSSH全称是Secure Shell,简单说来ssh是一种安全外壳协议用于两个计算机间安全远程登陆,说它安全,是因为ssh采用公钥加密的机制。最开始时用作远程管理工具是telnet,这个协议工作时在网络上...
  • 而是主攻企业供求信息关注度,让企业能够得到真实有效产品信息,并通过互联共享机制,让企业发布信息最广泛为人所知,让企业感觉到网络所能带来实际利益,才能扭转企业的互联网应用观念,引导企业深入到...
  • 区块链是分布式数据存储、点对点传输、共识机制加密算法等计算机技术新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益数学算法。区块链(Blockchain)是比特币一个重要概念,...
  • KArchive:用于创建,读写和操作文件档案(例如zip和 tar)库,它通过QIODevice一系列子类,使用gzip格式,提供了透明压缩和解压缩数据。 libarchive:多格式存档和压缩库。 LZ4 :非常快速压缩算法。...
  • 这涉及到从钱包、交易所、私钥保存到共识机制协议及整个系统安全性,在这些方面区块链安全问题依然没能得到很好解决。 随着区块链技术广泛应用,随之而来安全问题也愈发增多。由于区块链技术拥有全球性、...
  • java开源包1

    千次下载 热门讨论 2013-06-28 09:14:34
    7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不需要修改主类就可以添加新的API支持) 注入型解释器(依据不同的返回格式注入相应的解释器) ...
  • java开源包12

    热门讨论 2013-06-28 10:14:45
    7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不需要修改主类就可以添加新的API支持) 注入型解释器(依据不同的返回格式注入相应的解释器) ...
  • Java资源包01

    2016-08-31 09:16:25
    7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不需要修改主类就可以添加新的API支持) 注入型解释器(依据不同的返回格式注入相应的解释器) ...
  • Java生成密钥实例 1个目标文件 摘要:Java源码,算法相关,密钥 Java生成密钥、保存密钥实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥密钥对(keyPair)、如何保存公钥字节数组、...
  • java开源包101

    2016-07-13 10:11:08
    7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不需要修改主类就可以添加新的API支持) 注入型解释器(依据不同的返回格式注入相应的解释器) ...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
    例如,容易实现协议的设计。 Java EJB中有、无状态SessionBean两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象引用,创建EJB对象,计算利息等;...
  • java开源包11

    热门讨论 2013-06-28 10:10:38
    7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不需要修改主类就可以添加新的API支持) 注入型解释器(依据不同的返回格式注入相应的解释器) ...
  • java开源包6

    热门讨论 2013-06-28 09:48:32
    7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不需要修改主类就可以添加新的API支持) 注入型解释器(依据不同的返回格式注入相应的解释器) ...
  • java开源包10

    热门讨论 2013-06-28 10:06:40
    7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不需要修改主类就可以添加新的API支持) 注入型解释器(依据不同的返回格式注入相应的解释器) ...
  • java开源包8

    热门讨论 2013-06-28 09:55:26
    7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不需要修改主类就可以添加新的API支持) 注入型解释器(依据不同的返回格式注入相应的解释器) ...
  • java开源包9

    热门讨论 2013-06-28 09:58:55
    7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不需要修改主类就可以添加新的API支持) 注入型解释器(依据不同的返回格式注入相应的解释器) ...
  • java开源包7

    热门讨论 2013-06-28 09:52:16
    7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不需要修改主类就可以添加新的API支持) 注入型解释器(依据不同的返回格式注入相应的解释器) ...
  •  课程中所有讲解的源码都提供,课程的上课的ppt也提供,PPT提供pdf版,只可以用于学习,不得商用,代码可以用于商用软件项目,涉及到开源系统部分,需要遵守开源的协议,但不得用于网络教学。要观看全部内容请点击...
  •  (49)在公钥密码体制中,用于加密的密钥为  A)公钥 B)私钥 C) 公钥与私钥 D) 公钥或私钥  Key: 未确定  (50)在公钥体制中,不公开是  Ⅰ.公钥 Ⅱ. 私钥 Ⅲ 加密算法  A).Ⅰ B)Ⅱ C)Ⅰ和Ⅱ D)Ⅱ...
  • asp.net知识库

    2015-06-18 08:45:45
    .NET的插件机制的简单实现 我对J2EE和.NET的一点理解 难分难舍的DSO(一) InternalsVisibleToAttribute,友元程序集访问属性 Essential .NET 读书笔记 [第一部分] NET FrameWork的Collections支持 .NET的反射在软件...
  • 异常处理 - 异常机制的重要性 / try-except代码块 / else代码块 / finally代码块 / 内置异常类型 / 异常栈 / raise语句 数据持久化 - CSV文件概述 / csv模块的应用 / JSON数据格式 / json模块的应用 Day12 - 字符...

空空如也

空空如也

1 2
收藏数 31
精华内容 12
关键字:

互联网用于加密机制的协议是