• Java代码签名与授权


    本文将涉及到这几个概念: Digital signatures, certificates, and keystores

    在网上看到很多文章教人如何对applet签名,有很多命令让人看的费解,本文试图解释签名授权的基本概念,从而来理解

    类似下面这样的命令:

    jar -cvf abc.jar abc.class

    keytool -genkey -validity 7200 -keystore abc.store -alias abckey
    keytool -export -keystore abc.store -alias abckey -file abc.cer

    jarsigner -keystore abc.store abc.jar abckey

    Digital signatures:基本的用法

    1  你用自己的私匙(private key)给文档或代码签名

    2  你发送签好名的文档给接收方

    3  并且提供公匙(public key)给接收方,public key与private key相对应。

    4 接收方用你提供的public key保证在收到文档之前,文档没有被修改。

    但是接收方必须保证public key本身是可信的,因此你在提供public key的同时还需提供一个包含public key的certificates为你的public key提供担保。

    certificates:包含

    1 public key

    2 识别名信息 distinguished name information 比如姓名 公司名称 等等。(我认为如果是自认证就是自己随便写的,如果是第三方认证那就是第三方的一些信息)

    3 digital signature 用来担保包含的public key是真实的

    4 签名人的识别名信息

    接收方验证certificates是否合法的一种办法就是用public key来验证他包含的数字签名,public key可以被保存在另外一个数字签名也用public key验证的certificates里,无限循环,直到你信任的public key 为止。

    如果接收方不能建立一个信任链条,可以使用keytool -import or -printcert命令计算certificate fingerprint(s). fingerprint 是一个唯一的可靠的数字来验证certificate 。从技术上讲,fingerprint 其实就是certificate的hash值。接收方可以打电话给certificate的发布方,如果fingerprint的值相同,那么代表certificate的也是一样的。

    因此你可以保证certificate没有在传输过程中被修改。  另外一个使用certificate的潜在的不确定就是发布方的身份 。

    自签名的certificate 一般用来开发和测试程序 (application)   ,当部署给用户的时候,可以从第三方的certificate 权威机构获取一个可信任的certificate 。需要提交申请,可能还会验证驾照等其他信息。第三方权威机构会用自己的private key来签名,任何信任这个机构的人,可以用该机构的public key来验证certificate 上的签名。有时,该机构还有上级机构为其签名,从而形成一个验证的链条。

    如果你要发送签好名的文档或代码给其他人,你还要提供一个包含了public key的certificate ,用 keytool -export 命令,可以从keystore导出你的certificate变成一个文件。收到这个文件的人可以导入keystore,把这个certificate变成可以信任的certificate。可以用keytool -import命令实现。

    KeyStore:

    private key  以及相关联的public key certificate 保存在一个需要密码的数据库里,叫做keystore 。keystore可以包含2种内容,一个是上面提到过的可以信任的certificate,另外就是key/certificate,包含private key 以及public key certificate。 keystore里的每一项都用别名(alias)来标识。

    keystore的拥有者可以保存多个key,通过不同的别名来使用。 

    原文地址:http://docs.oracle.com/javase/tutorial/security/sigcert/index.html

  • 相关阅读:
    poj--2031--Building a Space Station(prime)
    nyoj--364--田忌赛马(贪心)
    nyoj--496--巡回赛(拓扑排序)
    nyoj--1100--WAJUEJI which home strong!(bfs)
    hdoj--5625--Clarke and chemistry(枚举)
    poj--1753--Flip Game(dfs好题)
    poj--1101--The Game(bfs)
    冒泡排序
    php常见错误
    php乱码
  • 原文地址:https://www.cnblogs.com/hmdrzql/p/3590295.html
Copyright © 2020-2023  润新知