当前位置: 奥门金沙手机娱乐网址 > 数据库 > 正文

MsSQL使用加密连接SSL,服务器的加密技术

时间:2019-11-04 22:31来源:数据库
说明 应用程序通过未加密的通道与数据库服务器通讯,那或然会促成重大的汉中风险。在此种景象下, 攻击者能够修正客商输入的多少,以致对数据库服务器实行任意 SQL 命令。 比方,当

说明

应用程序通过未加密的通道与数据库服务器通讯, 那或然会促成重大的汉中风险。在此种景象下, 攻击者能够修正客商输入的多少, 以致对数据库服务器实行任意 SQL 命令。

比方,当你使用以下连接字符串时,就恐怕存在此种风险:

<connectionStrings>  
<add name="Test" connectionString="Data Source=210.10.20.10,1433; Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;" providerName="System.Data.SqlClient" /> 
</connectionStrings>

 

!!!
!!! 你们那几个旱红鸭比自身想象得要矢志多了,看来小编要认真一些了 !!!

图片 1

重拳先生

启用SSL/TLS加密连接

大部分数据库服务器都提供援助使用SSL/TLS来加密传输全数数据,您应该尽恐怕的接纳它。在你的接连字符串上充裕Encrypt=True就可以。就算您的成本情状还未有可相信证书,加上TrustServerCertificate=True来撤销验证证书是不是受信。

<connectionStrings>  
<add name="Test" connectionString="Data Source=210.10.20.10,1433; Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;Encrypt=True;" providerName="System.Data.SqlClient" /> 
</connectionStrings>

 

有关链接:

原稿链接:

前段时间来聊天服务器的加密,那著作会覆盖整个 Node.js 加密的来因去果,所以会比较长,内容分成:

  • <a>从 OpenSSL 开始</a>
  • <a>TLS HTTPS 服务器</a>
  • <a>Crypto 加密解密</a>

在此以前呢,先回答弹指间繁杂的标题。

什么是 SSL ?

Secure Sockets Layer,那是其姓名,他的成效是说道,定义了用来对互联网发出的数据开展加密的格式和法则。

      +------+                                            +------+
服务器 | data | -- SSL 加密 --> 发送 --> 接收 -- SSL 解密 -- | data | 客户端 
      +------+                                            +------+   

      +------+                                            +------+
服务器 | data | -- SSL 解密 --> 接收 <-- 发送 -- SSL 加密 -- | data | 客户端 
      +------+                                            +------+   

1995年,Mozilla 前身 NetScape 公司拟订出 1.0 版本。
1995年,NetScape 正式发布 SSL,版本是 2.0。
1999年,NetScape 发表 3.0,获得普及应用。
一九九七年,ISOC 接管 SSL,制定世界规范还要进级 SSL 版本,改称 TLS,版本 1.0。
2004年,ISOC 的较新本子 TLS 1.2。

注:TLS 1.0 等同于 SSL 3.1,TLS 1.1 等同于 SSL 3.2,TLS 1.2 等同于 SSL 3.3。

哪些是说道?

您应当听新闻说过 IP 协议,TCP 商量。
所谓公约,是程序猿在编制程序时,大家对发送的多寡格式接收的朝气蓬勃种共同通讯协会,约等于正式数据结构。

举个例子说, HTTP 乞请头的评论使用

GET /demo HTTP/1.1n
Host: www.google.comn
Connection: keep-aliven 

这么的格式,每三个厂家在开拓的网络软件都遵循那意气风发正规。那样在另一个选择端,能够使用雷同的解析代码来编制程序。

什么是 OpenSSL?

OpenSSL 是在程序上对 SSL 规范的叁个达成,提供了:

  • libcrypto 通用加密库
  • libssl TLS/SSL 的实现
  • openssl 命令行工具

技术员能够通过无偿开源的 OpenSSL 库来对友好的应用程序提供 SSL 加密。OpenSSL 由 Eric A. Young 和 Tim J. 赫德森 在 壹玖玖肆年提议。1996年,OpenSSL 项目组接管,并拟订标准标准。

什么是 SSH?

你或者应该听他们说过 telnet,贰个不安全的通过命令行实行服务器客商端通讯的工具。
SSH 是选拔 OpenSSL 加密的这么的通讯工具,提供了越来越多安全功用。

服务器安装 $ sudo aptitude install openssh-server
服务器启动 $ sudo service ssh start

客户端连接 $ ssh xiaoming@192.168.1.101

Now, let's go.

<h2 id="openssl">从 OpenSSL 开始</h2>

首先,Node.js 是全然选拔 OpenSSL 举办加密的,其有关的 TLS HTTPS 服务器模块和 Crypto 加密模块都是透过 C++ 在底层调用 OpenSSL 。

OpenSSL --> crypto --> tls --> https

OpenSSL 完成了对称加密:

AES(128) | DES(64) | Blowfish(64) | CAST(64) | IDEA(64) | RC2(64) | RC5(64)

非对称加密:

DH | RSA | DSA | EC

以至一些音讯摘要:

MD2 | MD5 | MDC2 | SHA | RIPEMD | DSS

中间音讯摘假诺生机勃勃对选择哈希算法的加密方法,也表示这种加密是单向的,无法反向解密。这种措施的加密基本上是用来掩护安全口令,比方登陆密码。那其间大家最长用的是 MD5 和 SHA (提议采纳更平稳的 SHA1)。

  1. 安装

    设置很简短,从 openssl.org 下载后:

    $ ./configure
    $ make
    $ make install
    

    抑或您也能够省略的通过

    $ apt-get install openssl
    $ aptitude install openssl
    

    其他,你或然必要安装一些依赖包:

    $ aptitude install libssl-dev
    
  2. 常用命令

    前方说了,OpenSSL 提供了加密库和三个下令行工具用来保管加密,我们前日来看一下 OpenSSL 的部分常用命令:

    $ openssl s_client -connect 127.0.0.1:8000          // 连接服务器
    
    $ openssl version -a                                // 显示版本和编译参数
    $ openssl ?                                         // 显示支持的子命令
    $ openssl ciphers                                   // 显示 SSL 密码组合列表
    
    $ openssl speed [name]                              // 测试算法速度
    
    $ openssl enc -e -rc4 -in ./file1 -out ./file2      // 加密文件
    $ openssl enc -d -rc4 -in ./file2 -out ./file1      // 解密文件
    
    $ openssl sha1 < ./file1                            // 计算 hash 值 
    
    $ openssl genrsa -out ./a.key 1024                  // 生成 RSA 密钥对
    $ openssl rsa    -in  ./a.key -pubout -out ./a.pub  // 从密钥中提取公钥
    
              密钥位数 : 1024 | 2048 | 4096
    

    openssl genrsa 是常用的变动密钥公钥的吩咐,-out 文件路径 是出口的文书路线。

<h2 id="tls">TLS HTTPS 服务器</h2>

想要创设一个 Node.js TLS 服务器,需求动用 tls 模块:

var Tls = require('tls');

在初叶搭建服务器从前,大家还有些主要的办事要做,这正是表明,签字证书。

据悉 SSL 加密的服务器,在与客商端起来建构连接时,会发送多个签字证书。顾客端在友好的中间存储了一些公众承认的高雅证书认证单位,即 CA。顾客端通过在团结的 CA 表中搜寻,来协作服务器发送的证件上的具名机构,以此来剖断面前碰着的服务器是或不是叁个可信赖的服务器。

若是这几个服务器发送的证书,上边的签订公约机构不在客商端的 CA 列表中,那么那几个服务器很有望是冒充的,你应该据书上说过“中间人抨击”。

+------------+                                
| 真正的服务器 |             选择权:连接?不连接?  +-------+
+------------+             +------------------ | 客户端 |
                    https  |                   +-------+
+--------------+           | 拦截通信包       
| 破坏者的服务器 | ----------+
+--------------+  证书是伪造的

黄金年代旦你利用 $ openssl s_client -connect www.site.com,会发掘显示器上为您来得 self signed certificate。

设若您以前使用 firefox 浏览器拜谒过著名的 12306,会接到二个“不信的接连,是或不是还是三番五次”的页面,来给你提供三个康宁提醒的拈轻怕重。

OO,有些东西就是很逗,不是么!

留存便是合理的!

让我们作弄这一个逗比相通的话,有的时候候存在是因为愚不可及,并非有理。

好狗保护四邻安.
近水楼台先得月.

这种自身冲突的蠢话多的是呀!不要当真!

总的来看这里,你也相应精晓为什么如今 谷歌(Google卡塔 尔(英语:State of Qatar) 和 Mozilla 平素在推动 HTTPS 和 HTTP 2.0。

  1. 让大家来充数证件

    依据测量试验的目标,我们以后上演一下全部制作证书的进程。营造 TLS HTTPS 服务器,须求:

    • 密钥
    • 证书签发申请
    • 权威机构对注明签发申请签字后的证书

    第3个必要每一年缴纳几千元毛伯公,以保全安全申明的印证开支。从技师角度来说,大家能够和谐具名,进而开创多个不受信赖的证件。(只限于切磋接纳,倘让你用在自身的服务器上,你的服务器就能够有被旁人冒充的高风险卡塔尔国

    持有这个需求选择 OpenSSL 来贯彻:

    1. 扭转密钥

      $ openssl genrsa -out ./ca-key.pem 1024

    那条命令为您生成一个 1024 位长度的加密密钥,放在你的当前目录中的 ca-key.pem 文件中。
    其一文件的内容是相同那样的,每行以三个 'n' 换行符:

    -----BEGIN RSA PRIVATE KEY-----
    MIICXQIBAAKBgQDEw2LYED8+AgLHOtrwXLCXCm2okHOh6Wx7FJ5GVlsdMysJRD8r
    dTfTr3kRo/wKssZgGBydIrUPxk6Nvywdcp0V2yp5NjlruvgIkTFL/tkecJumuLc3
    XtQ1J2GwLCqkUjpnll9MzKENCpNeX1BDSJNJ6QRkXRk/13nY4HArdrHdEQIDAQAB
    AoGAGnNRlE4K0mEe0n189Rbgvk0ulJxmjvt8E8efx0DQmspIHMTJ4SOuz4wlMFPl
    C+Mge8aCAjWqNWapJLDwUz0XFJ6yd/nvF7Ludc97NB95uSDeuY/nFVQnAbSAd9sS
    uD/cCJLLZ+8XmeUktUSP9cCR6zGgkvPEPOXreFg3xqVDjIkCQQDolDRT14UvaxMC
    f6JyjHZ8bj7FDQyqBj+hQFAB4WVA2q4pZ+WGUJpqwTb4WvfW27tX/DnHZkVSuFGa
    j2z8mc67AkEA2JPd5DYIqIu3m5D0YaWdIIYi5FyL5ecRuXEKv5GexIlhePBZqT2l
    zXt9yI6YUOQjeOusOy2kRSqm9IMnDhv0owJBAMdpYuBMFo6MkNUAmEj8tA6F+926
    DZSuHNpmKPMjzUvo85De2wXpkCxeE4KnhH49EgkjYmrb/i4piRYrSTffrEcCQQCx
    I8gyVyufx58mY1ou38lzh6LUSwm1wdgSZ+4Vn+JO99q8k0GSljSdq6rGtjLIvsBw
    r7oQMRWR6P/jL75q4NynAkBYQKBDWPiSCGmu0vr0uf3qLhtZjMenBZ2Z9qWdBGKW
    CNGxpKgdFeM05XpUg/cJOS/fcvMV2GcMldI62k3JwoBF
       -----END RSA PRIVATE KEY-----
    
    1. 变化证书签发申请

      $ openssl req -new
      -key ./ca-key.pem
      -out ./ca-csr.pem

    那条命令,通过对方刚才生成的密钥 ca-key.pem,生成一个证件签发申请 ca-csr.pem,然后您应有把这一个发送给认证单位为你具名,并缴纳花销,得到多少个凌驾的表明证书。

    以此文件的从头到尾的经过相近那样:

     -----BEGIN CERTIFICATE REQUEST-----
     MIIBhDCB7gIBADBFMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEh
     MB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEB
     AQUAA4GNADCBiQKBgQDEw2LYED8+AgLHOtrwXLCXCm2okHOh6Wx7FJ5GVlsdMysJ
     RD8rdTfTr3kRo/wKssZgGBydIrUPxk6Nvywdcp0V2yp5NjlruvgIkTFL/tkecJum
     uLc3XtQ1J2GwLCqkUjpnll9MzKENCpNeX1BDSJNJ6QRkXRk/13nY4HArdrHdEQID
     AQABoAAwDQYJKoZIhvcNAQEFBQADgYEAMs/iPk5wyhpp6LUib4d93d8Yv5/5hIt+
     EiPTU0KQRIhJtt+mGAipgsPC5KWgIPii+/cQbx0M/1/QJLnlW2DiNKc7sOQiJza3
     7BoO9VtJl+ufZ7B1CjEfTWNHHOvA2vYhCKcBPOQXf+E9MbjWznAPwTmjmCznHtWo
     RVQ8R4sSCKo=
     -----END CERTIFICATE REQUEST-----
    
    1. 对证件签发申请进行具名,生成具名证书

    那边,大家来创设一个自签订的证书,那是三个不受信任的证书,实际服务器中您不该接纳。

     $ openssl x509 -req  
                    -days    9999             
                    -signkey ./ca-key.pem     
                    -in      ./ca-csr.pem     
                    -out     ./ca-cert.pem
    

    动用前素不相识成的密钥、证书签发申请,生成 ca-cert.pem 文件。那几个文件的内容附近那样:

     -----BEGIN CERTIFICATE-----
     MIICATCCAWoCCQCphVNXJELjIjANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJB
     VTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0
     cyBQdHkgTHRkMB4XDTE1MDcxMTAxMTg1OVoXDTQyMTEyNTAxMTg1OVowRTELMAkG
     A1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0
     IFdpZGdpdHMgUHR5IEx0ZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAxMNi
     2BA/PgICxzra8FywlwptqJBzoelsexSeRlZbHTMrCUQ/K3U30695EaP8CrLGYBgc
     nSK1D8ZOjb8sHXKdFdsqeTY5a7r4CJExS/7ZHnCbpri3N17UNSdhsCwqpFI6Z5Zf
     TMyhDQqTXl9QQ0iTSekEZF0ZP9d52OBwK3ax3RECAwEAATANBgkqhkiG9w0BAQUF
     AAOBgQAjNF0fWyI/XLegpj2dnk+RQXJTljRtcBuJ+qU2IGknTT5NpqiRaCxWyH52
     rD4ZEV8GVPJ8BqarKuYPubqumd7KXa2Ulyf73dGHyvaykgqxi8Vm+B9G2Sfukdt8
     vLQ1fy39qF5ZnTVMR/4KaYbFa7jXHSxdJak395D1OUNJBv3rqA==
     -----END CERTIFICATE-----
    
    1. 表达证书的签字

生龙活虎经您想尝试的话,能够动用 OpenSSL 对申明签字进行认证:

     $ openssl verify -CAfile ca-cert.pem ca-cert.pem

 这是对两个签名证书核对,一个是服务端发送的证书,一个是客户端自己的证书,实际过程中更像是这样:

     $ openssl verify -CAfile server-cert.pem client-cert.pem

 浏览器内部会为你完成这个过程。如果你有使用过淘宝安全证书的话,会对此有一些理解。
 Node.js TLS HTTPS 服务器也会在内部完成这一过程。
  1. TLS 服务器 HTTPS 服务器

    创设 TLS 服务器特别轻便,并且是依靠 epoll kqueue 这样的高 IO 模型。

    var Tls = require('tls');
    var Fs  = require('fs');
    
    var server = Tls.createServer({
        key                : Fs.readFileSync('./ca-key.pem'),   // 服务器密钥
        cert               : Fs.readFileSync('./ca-cert.pem'),  // 服务器签名证书
        handshakeTimeout   : 120,                               // 握手超时时间,default=120s
        ca                 : [],                                // 有效证书认证机构
        passphrase         : '123456',                          // 服务器密钥解析密码
        requestCert        : true,                              // 客户端需要发送签名证书
        rejectUnauthorized : true                               // 客户端发送的证书必须是有效认证机构签名
        // ciphers          : '',                               // 加密组件
        // ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:AES128-GCM-SHA256:RC4:HIGH:!MD5:!aNULL
        // secureProtocol : secureProtocol,                     // 强制使用版本的安全协议
        // secureOptions  : secureOptions                       // 安全方法配置 
    });
    server.listen(10010);
    server.on('secureConnection', function (socket) {
        console.log('Authorized: ',         socket.authorized);            // 客户端签名证书是 CA 签名?
        console.log('AuthorizationError: ', socket.authorizationError);    // 验证错误原因
        console.log('Certificate: ',        socket.getPeerCertificate());  // 客户端签名证书信息
        console.log('Cipher: ',             socket.getCipher());           // 当前加密组件的信息
    
        socket.setEncoding('utf8');
        socket.on('data', function (data) {
            console.log('Data: %j', data);
        });
        socket.on('end', function () {
            console.log('End');
        });
    
        process.stdin.pipe(socket);
        process.stdin.resume();
    });
    server.on('newSession', function (sessionId, sessionData) {
        console.log('SessionId',            sessionId);
        console.log('SessionData',          sessionData);
    });
    

    假设愿意的话,你能够团结写二个 SSH!

    TLS.Server 模块世襲自 Net.Server,为其扩大了 SSL 内容,全部的其余操作跟 Net.Server 一模二样。

    Tls.createServer(options, [listener]) 其中的 options 提供了 SSL 配置。

    • ca 是一个权威认证机构的列表,用于服务器查找顾客端的具名证书是还是不是佛头着粪的
    • key 你的密钥字符串或许 Buffer,只必要 readFileSync() 你的密钥文件就能够
    • cert 你的证书字符串大概 Buffer,只供给 readFileSync() 你的证件文件就可以
    • handshakeTimeout 服务器顾客端连接认证会实行加密算法操作,要是时间过长,就断开连接。假诺您不想自个儿配置这大器晚成项,那么暗中同意是 120 秒
    • passphrase 当生成密钥时,会请您为文件输入多少个深入分析密码,也足以输入空,那意气风发项就是为服务器提供剖判文件的密码
    • requestCert 必要顾客端必须发送证书,不然就断开连接
    • rejectUnauthorized 必要顾客端的注明必须是 CA 认证的,否则就断开连接,当测量检验的时候理应安装为 false,当用于临蓐时,应该设为 true
    • ciphers 使用的 OpenSSL 加密组件,那么些能够不设置,采用系统私下认可的。除非碰珍视大漏洞须要修改的时候

    亟需器重设想的配备项大假若以上内容。

    'secureConnection' 是 TLS 服务器特有的平地风波,当安全申明成功的时候接触。

    您能够接纳 OpenSSL 来测量检验下你的 TLS 服务器:

    $ openssl s_client -connect 127.0.0.1:10010  
    

    对此 HTTPS 服务器,更简便了,他是 TLS 服务器的接轨,

    var Https = require('https');
    https.createServer(options);
    

    在那之中的 options 跟 TLS 服务器大同小异,其他的操作跟 http.Server 是大同小异的。

    net.socket --> net.Server --> http.Server
    
    net.socket --> tls.TLSSocket + net.Server --> tls.Server + http.Server --> https.Server
    
  2. TLS HTTPS 客户端

    编纂 TLS 顾客端,相比较 TCP 顾客端,也只限于 options 上的变型:

    var Tls = require('tls');
    var Fs  = require('fs');
    
    var socket = Tls.connect({
        port               : 10010,
        key                : Fs.readFileSync('./ca-key.pem'),   // 客户端密钥
        cert               : Fs.readFileSync('./ca-cert.pem'),  // 客户端签名证书
        ca                 : [],                                // 有效证书认证机构
        passphrase         : '123456',                          // 客户端密钥解析密码    
        rejectUnauthorized : true                               // 服务器发送的证书必须是有效认证机构签名
        // secureProtocol   : ''                                // 安全协议
    }, function() {
        console.log('client connected', socket.authorized ? 'authorized' : 'unauthorized');
        process.stdin.pipe(socket);
        process.stdin.resume();
    });
    socket.setEncoding('utf8');
    socket.on('data', function (data) {
        console.log('Data: %j', data);
    });
    socket.on('end', function () {
        console.log('End');
        socket.end();
    });
    socket.on('error', function (err) {
        console.log('Error: ', err);
    });
    

<h2 id="crypto">Crypto 加密解密</h2>

Node.js 中的 TLS HTTPS 服务器的加密操作都来源于 crypto 模块,而 crypto 则是对 OpenSSL 库的调用。首要的内情不再探讨了,只交给实际的行使办法,具体参数能够参照官方文档。

  1. 哈希加密 (单向)

    • Hash 普通哈希加密
    • Hmac 带有密钥的哈希加密

    Hash 加密:

    var hash   = Crypto.createHash('sha1');
    var result = hash.update('a')
                     .update('a') 
                     .digest('hex'); 
    

    输出 e0c9035898dd52fc65c41454cec9c4d2611bfb37 那样使用 sha1 算法的16进制字符串。

    您会看出 update() 调用两回,实际上那一个艺术能够不停调用,上边的

    .update('a')
    .update('a')
    

    等同于

    .update('aa')
    

    Hmac 加密:

    var hmac   = Crypto.createHmac('sha1', '123456');
    var result = hmac.update('a')
                     .update('a') 
                     .digest('hex');
    

    出口 ba0572b07799c0fa754a669604323537cdabeb79。这么些加密提供了 '123456' 那样的能够安装密钥,你可感觉其设置方面通过 OpenSSL 生成的密钥字符串,那样的加密等级更加高。

  2. 加密解密 (双向)

    Cipher 和 Decipher 分别是 Node.js 提供的可操作的加密和解密抽象。使用格局如下:

    Cipher 加密 abc010:

    var cipher = Crypto.createCipher('aes192', '123456');
    cipher.update('abc',  'utf8'); 
    cipher.update('010', 'binary');
    var result = cipher.final('hex');
    

    输出 a16a2e4e1b22f3c824f159d3b5800c06。一个行使 aes192 算法加密过的字符串。

    Decipher 解密 a16a2e4e1b22f3c824f159d3b5800c06:

    var decipher = Crypto.createDecipher('aes192', '123456');
    decipher.update('a16a2e4e1b22f3c824f159d3b5800c06', 'hex'); 
    var result   = decipher.final('utf8');
    

    输出 abc010,原始的多少。

  3. 签字和表达

    Sign 和 Verify 是对 OpenSSL 签字认证的卷入。

    Sign 签名:

    var sign   = Crypto.createSign('RSA-SHA256');
    var result = sign.update('abc')
                     .update('010')
                     .sign(
    // 密钥
    `-----BEGIN RSA PRIVATE KEY-----
    MIICXQIBAAKBgQClyE/ApYk91LDdnhM8qIyukbl1p1Ek3z/5bAKq7bCyfevtw3DI
    JIwJIyHpGjnosR6/4phApcOqTpLNVJ/Nc0AKWwZcEFlRO7Uty3EFBU8EbTTiCV2N
    NKYJIvGnxV+43ubyuYla/RjwylOktUyTVHvMz4o3mVohW4FLaEiRu6rEIQIDAQAB
    AoGBAJGdLE/uFmn005UVL5hsA4WiAeBRonhcj3ipYn54YGenKv+gVwO09jtgXHy+
    yHaWfIfWpBzEfOSuN0ubNPHkdS45cEtgWtvX6OYuMWNr64YRW6YevxDr4Ui7bGdh
    a+Zk0fkmchjvrgycD8MDLbqTFIyFkMAd6VUOY7YVRNlxMq8xAkEA0HcxdeUCrruS
    JkXmGMt5g1HkJXrqpbRuQ4vPwQM+q6QuT5fk44MGj0U42feqFWfwMnPGAh6dkN0E
    nS3kC6UyuwJBAMuVkRmeAM0HkB883e9rCdnsIzfqLdCFiOKKmdrBlxqfHlEqp8bD
    2DgMYTS3s+3yQqQuBjkRxNQ5/Fw7E+lInNMCQC+PghFLtlj3IljpCZ4OjiKPxGVo
    rbAwgheXBkca3ml6g7ZVCTt+4Tg+qsHP51YK6JoaH8rMAVbTlgHmPmkJv5ECQGmz
    l2nQkqPheF/vr19+mNfP9h0y9mSc4IyW3/knqHfHA+uqlP/rcVjwfIvtkXtK3HT3
    /H0nD6YNEU0l01m9PMcCQQCGtxn5szckko+6ketDhuJpNlUxU4gux0TidgDRkDQp
    iF8QnAVbE6kDLlw/M1/Kf5mXS4+EssVzy1pUx0fZpgAw
    -----END RSA PRIVATE KEY-----`, 
    // 签名编码
    'hex');
    

    如你所看见的,那一个艺术须求二个使用 OpenSSL 生成的密钥,然后为其生成二个不受信任的具名。
    变化一个字符串:

    53e8f22eb539be7d37a2c1d2dc5c0d7c1f974626e11dee
    8085f47d4b7afb004e7d06639c431be622070786cc4d68
    dbc3f22f69bc3bc431d60128c78657045108b5068e9f54
    e1af6966330852857e5f697a2e4d3b9a30849f3b373344
    5f7c76251f88ddd48fbf53be444f6d817f1e7ef2784d67
    556e39310e1cc405f5ddef2dfc
    

    Verify 认证证书:

    var verify = Crypto.createVerify('RSA-SHA256');
    var result = verify.update('abc')
                       .update('010')
                       .verify(
    // 公钥
    `-----BEGIN CERTIFICATE-----
    MIICWDCCAcGgAwIBAgIJAO5P5yii8BuLMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV
    BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX
    aWRnaXRzIFB0eSBMdGQwHhcNMTUwNzA5MTAzNDI3WhcNMTUwODA4MTAzNDI3WjBF
    MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50
    ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
    gQClyE/ApYk91LDdnhM8qIyukbl1p1Ek3z/5bAKq7bCyfevtw3DIJIwJIyHpGjno
    sR6/4phApcOqTpLNVJ/Nc0AKWwZcEFlRO7Uty3EFBU8EbTTiCV2NNKYJIvGnxV+4
    3ubyuYla/RjwylOktUyTVHvMz4o3mVohW4FLaEiRu6rEIQIDAQABo1AwTjAdBgNV
    HQ4EFgQUGsVvaLFUxW+hMc/jVpvQXH5hzL0wHwYDVR0jBBgwFoAUGsVvaLFUxW+h
    Mc/jVpvQXH5hzL0wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOBgQAXS8da
    q3Ybw3+KvIZz/tAGLkPshv4J7jwIKNvlZeMX0dGZsd1faZJyrCmzZ7Go43L24zqg
    rAwXOlfz+pjoGEaQSyTXOJX23ZozCGEzI2OgmLxLuk2Wfn3OUiQK8RqjrOzXosTR
    3RcofenE7hTk17gjs50aDHc/hu363U3gklxnWA==
    -----END CERTIFICATE-----`, 
    // 签名
    '53e8f22eb539be7d37a2c1d2dc5c0d7c1f974626e11dee' + 
    '8085f47d4b7afb004e7d06639c431be622070786cc4d68' + 
    'dbc3f22f69bc3bc431d60128c78657045108b5068e9f54' + 
    'e1af6966330852857e5f697a2e4d3b9a30849f3b373344' + 
    '5f7c76251f88ddd48fbf53be444f6d817f1e7ef2784d67' + 
    '556e39310e1cc405f5ddef2dfc', 
    // 签名编码
    'hex');   
    

    输入双方承认的公钥,对方的签订,然后输出 true 大概 false 表示双方的申明是不是相仿。


图片 2

That's all!

编辑:数据库 本文来源:MsSQL使用加密连接SSL,服务器的加密技术

关键词:

  • 上一篇:没有了
  • 下一篇:没有了