• java-信息安全(十六)-双向认证


    原文地址

    http://snowolf.iteye.com/blog/510985

    对于双向认证,做一个简单的描述。 
    服务器端下发证书,客户端接受证书。证书带有公钥信息,用于验证服务器端、对数据加密/解密,起到OSI五类服务的认证(鉴别)服务和保密性服务。 

    这只是单向认证,为什么?因为客户端可以验证服务器端,但服务器端不能验证客户端! 
    如果客户端也有这样一个证书,服务器端也就能够验证客户端,这就是双向认证了! 

    换言之,当你用银行的“U盾”之类的U盘与银行账户交互时,在你验证银行服务器的同时,服务器也在验证你!这种双重验证,正是网银系统的安全关键! 

    单向认证见Java加密技术(十) 
    双向认证需要一个CA机构签发这样的客户端、服务器端证书,首先需要CA机构构建一个根证书。keytool可以构建证书但不能构建我们需要的根证书,openssl则可以! 

    根证书签发客户端证书,根私钥签发服务器端证书! 

    我们直接使用linux下的openssl来完成CA,需要修改openssl.cnf文件,在ubuntu下的/etc/ssl/目录下,找到[ CA_default ]修改dir变量。 

    [ CA_default ] 

    #dir = ./demoCA # Where everything is kept 


    我们把c盘的ca目录作为CA认证的根目录,文件修改后如下所示: 

    [ CA_default ] 
    dir = $ENV::HOME/ca # Where everything is kept 


    我们需要在用户目录下构建一个ca目录,以及子目录,如下所下: 
    ca 
    |__certs 
    |__newcerts 
    |__private 
    |__crl 

    执行如下操作: 

     View Code

    这个脚本就是最重要的结晶了!
    执行结果,如下: 

    引用
     View Code

    来看一下这3套证书,如下两幅图所示: 
    CA证书 
     
     
     

    服务器证书 
     
     
     

    客户证书 
     
     
     

    证书链 
     

    "ca.zlex.org"证书充当了CA根证书,"www.zlex.org"充当服务器端证书,"zlex"充当客户端证书 

    使用keytool将其导入本地密钥库 
    导入CA证书 

    keytool -import -v -trustcacerts -alias ca.zlex.org -file ca.crt -storepass 123456 -keystore ca.keystore       

    控制台输出 

    复制代码
    所有者:CN=ca.zlex.org, OU=zlex, O=zlex, L=BJ, ST=BJ, C=CN 
    签发人:CN=ca.zlex.org, OU=zlex, O=zlex, L=BJ, ST=BJ, C=CN 
    序列号:989b27ef00e53a99 
    有效期: Wed Jul 18 17:53:51 CST 2012 至Sat Jul 16 17:53:51 CST 2022 
    证书指纹: 
             MD5:BA:14:1F:89:3A:1E:63:7B:20:AC:5A:50:FE:65:7E:16 
             SHA1:E0:A4:0E:6F:09:7E:01:27:C0:FC:62:26:1A:0C:C6:7B:BF:6A:18:B3 
             签名算法名称:SHA1withRSA 
             版本: 1 
    信任这个认证? [否]:  y 
    认证已添加至keystore中 
    [正在存储 ca.keystore] 
    复制代码

    导入服务器端证书 

    keytool -import -v -trustcacerts -alias www.zlex.org -file server.crt -storepass 123456 -keystore server.keystore  

    控制台输出 

     View Code

    导入客户端证书 

    keytool -import -v -trustcacerts -alias client -file client.crt -storepass 123456 -keystore client.keystore  

    以下是输出内容:

     View Code

    PS 吊销证书:

    echo 吊销客户端证书  
    openssl ca -revoke $certs_path/client.crt -cert $certs_path/ca.crt -keyfile $private_path/ca.pem   
    Using configuration from /etc/pki/tls/openssl.cnf 
    Enter pass phrase for private/ca.pem: 
    Revoking Certificate 02. 
    Data Base Updated

    生成证书吊销列表文件(CRL) 
    执行命令如下: 

    openssl ca -gencrl -out ca.crl -config "$HOME/testca/conf/testca.conf"  

    crldays和-crlhours参数,说明下一个吊销列表将在多少天后(或多少小时候)发布。 

    可以用以下命令检查testca.crl的内容: 

    openssl crl -in testca.crl -text -noout  

    引用 
    http://blog.csdn.net/gothicane/articles/2865818.aspx 
    http://www.5dlinux.com/article/7/2009/linux_35291.html 
    http://www.tc.umn.edu/~brams006/selfsign_ubuntu.html 
    http://www.tc.umn.edu/~brams006/selfsign.html 
    http://zhouzhk.iteye.com/blog/136943 
    http://bbs.cfan.com.cn/thread-743287-1-1.html 
    http://www.iteye.com/problems/4072 
    http://blog.csdn.net/jasonhwang/archive/2008/04/26/2329589.aspx 
    http://blog.csdn.net/jasonhwang/archive/2008/04/29/2344768.aspx 

  • 相关阅读:
    2020系统综合实践 第三次实践作业
    2020系统综合实践 第二次实践作业
    2020系统综合实践 第一次实践作业
    第03组 Beta版本演示
    第03组 Beta冲刺(4/4)
    第03组 Beta冲刺(3/4)
    OO第四次博客作业
    OO第三次博客作业
    OO第二次博客作业
    OO第一次博客作业
  • 原文地址:https://www.cnblogs.com/guweiwei/p/8005840.html
Copyright © 2020-2023  润新知