您的位置:首页 > 运维架构

测试浏览器与OpenSSL的双向认证

2017-07-31 23:56 344 查看
测试浏览器与OpenSSL的双向认证

    一、背景

       在安全级别要求高的项目中,我们可能采取双向SSL认证的方案来保证数据在通信的过程中的安全。
 

    二、原理

       双向SSL认证需要客户端和服务器端都需要证书,并且证书都是同一个CA颁发的。认证的过程会互相认证,从而确定对方的身份是否合法。双向认证生成的密钥被用来加密数据,保证客户端与服务器端的通信数据私密性。
 

    三、测试过程

3.1)安装OpenSSL

              打开终端,进入解压后的OpenSSL目录。运行下面的命令

./config --prefix=/usr/local/ssl && make && make install

              如果需要更多OpenSSL功能,则需要更多的编译参数。具体的编译参数可以通过在终端输入./config –help 来查看。如下所示:

                   [root@localhostopenssl-1.0.1c-mp]# ./config --help

Operatingsystem: x86_64-whatever-linux2

Configuringfor linux-x86_64

Usage: Configure [no-<cipher> ...][enable-<cipher> ...] [experimental-<cipher> ...] [-Dxxx] [-lxxx][-Lxxx] [-fxxx] [-Kxxx] [no-hw-xxx|no-hw] [[no-]threads] [[no-]shared][[no-]zlib|zlib-dynamic] [no-asm] [no-dso] [no-krb5] [sctp] [386][--prefix=DIR] [--openssldir=OPENSSLDIR]
[--with-xxx[=vvv]] [--test-sanity]os/compiler[:flags]

      其中shared 和threads 是用的比较多的参数。分别表示安装后的OpenSSL有动态库、OpenSSL支持多线程。

          3.2)生成证书

              在Linux环境中制作证书。其中rsa1.key为私钥证书,rsa1.cer为公钥证书。具体生成证书可参考http://blog.csdn.net/xu_0705/article/details/34435445

              把生成的rsa1.p12拷贝到Windows系统。

              opensslpkcs12 -export -inkey rsa1.key -in rsa1.cer -out  rsa1.p12

  Enter Export Password:(输入密码)

  Verifying - Enter Export Password:(输入密码)

 

          3.3)导入证书

双击rsa1.p12证书。



浏览rsa1.p12证书。



输入生成rsa1.p12时的密码。



选择证书存放路径。



选择”个人“存储方式。



导入证书成功!



3.4)服务器端运行OpenSSL

[root@localhost bin]# ./ s_server -cert cert/rsa/rsa2.cer -key cert/rsa/rsa2.key -www -port 443  -Verify 1 -CAfile cert/rsa/rsaca.cer


verify depth is 1, must return acertificate

Using default temp DH parameters

Using default temp ECDH parameters

ACCEPT

3.5)在浏览器中地址栏中输入: https服务器IP:443

弹出如下的框,选择rsa1证书。



选择“高级”



选择“继续前往”



        3.6)浏览器输出如下信息:

s_server -cert cert/rsa/rsa2.cer -key cert/rsa/rsa2.key -www -port 443 -Verify 1 -CAfile cert/rsa/rsaca.cer


Secure Renegotiation IS supported


Ciphers supported in s_server binary


TLSv1/SSLv3:ECDHE-RSA-AES256-GCM-SHA384TLSv1/SSLv3:ECDHE-ECDSA-AES256-GCM-SHA384


TLSv1/SSLv3:ECDHE-RSA-AES256-SHA384  TLSv1/SSLv3:ECDHE-ECDSA-AES256-SHA384


TLSv1/SSLv3:ECDHE-RSA-AES256-SHA     TLSv1/SSLv3:ECDHE-ECDSA-AES256-SHA  


TLSv1/SSLv3:DHE-DSS-AES256-GCM-SHA384TLSv1/SSLv3:DHE-RSA-AES256-GCM-SHA384


TLSv1/SSLv3:DHE-RSA-AES256-SHA256    TLSv1/SSLv3:DHE-DSS-AES256-SHA256   


TLSv1/SSLv3:DHE-RSA-AES256-SHA       TLSv1/SSLv3:DHE-DSS-AES256-SHA      


TLSv1/SSLv3:DHE-RSA-CAMELLIA256-SHA  TLSv1/SSLv3:DHE-DSS-CAMELLIA256-SHA 


TLSv1/SSLv3:ECDH-RSA-AES256-GCM-SHA384TLSv1/SSLv3:ECDH-ECDSA-AES256-GCM-SHA384


TLSv1/SSLv3:ECDH-RSA-AES256-SHA384   TLSv1/SSLv3:ECDH-ECDSA-AES256-SHA384


TLSv1/SSLv3:ECDH-RSA-AES256-SHA      TLSv1/SSLv3:ECDH-ECDSA-AES256-SHA   


TLSv1/SSLv3:AES256-GCM-SHA384        TLSv1/SSLv3:AES256-SHA256           


TLSv1/SSLv3:AES256-SHA               TLSv1/SSLv3:CAMELLIA256-SHA         


TLSv1/SSLv3:PSK-AES256-CBC-SHA       TLSv1/SSLv3:ECDHE-RSA-AES128-GCM-SHA256


TLSv1/SSLv3:ECDHE-ECDSA-AES128-GCM-SHA256TLSv1/SSLv3:ECDHE-RSA-AES128-SHA256 


TLSv1/SSLv3:ECDHE-ECDSA-AES128-SHA256TLSv1/SSLv3:ECDHE-RSA-AES128-SHA    


TLSv1/SSLv3:ECDHE-ECDSA-AES128-SHA   TLSv1/SSLv3:DHE-DSS-AES128-GCM-SHA256


TLSv1/SSLv3:DHE-RSA-AES128-GCM-SHA256TLSv1/SSLv3:DHE-RSA-AES128-SHA256   


TLSv1/SSLv3:DHE-DSS-AES128-SHA256    TLSv1/SSLv3:DHE-RSA-AES128-SHA      


TLSv1/SSLv3:DHE-DSS-AES128-SHA       TLSv1/SSLv3:ECDHE-RSA-DES-CBC3-SHA  


TLSv1/SSLv3:ECDHE-ECDSA-DES-CBC3-SHA TLSv1/SSLv3:DHE-RSA-SEED-SHA        


TLSv1/SSLv3:DHE-DSS-SEED-SHA         TLSv1/SSLv3:DHE-RSA-CAMELLIA128-SHA 


TLSv1/SSLv3:DHE-DSS-CAMELLIA128-SHA  TLSv1/SSLv3:EDH-RSA-DES-CBC3-SHA    


TLSv1/SSLv3:EDH-DSS-DES-CBC3-SHA     TLSv1/SSLv3:ECDH-RSA-AES128-GCM-SHA256


TLSv1/SSLv3:ECDH-ECDSA-AES128-GCM-SHA256TLSv1/SSLv3:ECDH-RSA-AES128-SHA256  


TLSv1/SSLv3:ECDH-ECDSA-AES128-SHA256 TLSv1/SSLv3:ECDH-RSA-AES128-SHA     


TLSv1/SSLv3:ECDH-ECDSA-AES128-SHA    TLSv1/SSLv3:ECDH-RSA-DES-CBC3-SHA   


TLSv1/SSLv3:ECDH-ECDSA-DES-CBC3-SHA  TLSv1/SSLv3:AES128-GCM-SHA256       


TLSv1/SSLv3:AES128-SHA256            TLSv1/SSLv3:AES128-SHA              


TLSv1/SSLv3:SEED-SHA                 TLSv1/SSLv3:CAMELLIA128-SHA         


TLSv1/SSLv3:DES-CBC3-SHA             TLSv1/SSLv3:IDEA-CBC-SHA            


TLSv1/SSLv3:PSK-AES128-CBC-SHA       TLSv1/SSLv3:PSK-3DES-EDE-CBC-SHA    


TLSv1/SSLv3:KRB5-IDEA-CBC-SHA        TLSv1/SSLv3:KRB5-DES-CBC3-SHA       


TLSv1/SSLv3:KRB5-IDEA-CBC-MD5        TLSv1/SSLv3:KRB5-DES-CBC3-MD5       


TLSv1/SSLv3:ECDHE-RSA-RC4-SHA        TLSv1/SSLv3:ECDHE-ECDSA-RC4-SHA     


TLSv1/SSLv3:ECDH-RSA-RC4-SHA         TLSv1/SSLv3:ECDH-ECDSA-RC4-SHA      


TLSv1/SSLv3:RC4-SHA                  TLSv1/SSLv3:RC4-MD5                 


TLSv1/SSLv3:PSK-RC4-SHA              TLSv1/SSLv3:KRB5-RC4-SHA            


TLSv1/SSLv3:KRB5-RC4-MD5            


---


Ciphers common between both SSL end points:


ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES256-GCM-SHA384


ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES128-SHA       ECDHE-RSA-AES256-SHA     


AES128-GCM-SHA256          AES256-GCM-SHA384          AES128-SHA               


AES256-SHA                 DES-CBC3-SHA


---


New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256


SSL-Session:


    Protocol  : TLSv1.2


    Cipher    : ECDHE-RSA-AES128-GCM-SHA256


    Session-ID:


    Session-ID-ctx: 01000000


    Master-Key: 420A5C32CF8400962FF01388F1DD9A7C2950F88CD4C2585D77752D7FE59BA9FD3CCCFB2E289FBEA8B384349202F1F975


    Key-Arg   : None


    Krb5 Principal: None


    PSK identity: None


    PSK identity hint: None


    Start Time: 1501499886


    Timeout   : 300 (sec)


    Verify return code: 0 (ok)


---


   0 items in the session cache


   0 client connects (SSL_connect())


   0 client renegotiates (SSL_connect())


   0 client connects that finished


   5 server accepts (SSL_accept())


   0 server renegotiates (SSL_accept())


   2 server accepts that finished


   0 session cache hits


   0 session cache misses


   0 session cache timeouts


   0 callback cache hits


   0 cache full overflows (128 allowed)


---


Client certificate


省略。。。。。。。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  openssl