为程序集添加强名称签名与数字证书签名

1、强名称签名(StrongName Sign)

  

强名称是由程序集的标识加上公钥和数字签名组成的。其中,程序集的标识包括简单文本名称、版本号和区域性信息(如果提供的话)。 强名称是使用相应的私钥,通过程序集文件(包含程序集清单的文件,并因而也包含构成该程序集的所有文件的名称和散列)生成的。 Microsoft® Visual Studio® .NET 和 Windows 软件开发包 (SDK) 中提供的其他开发工具能够向一个程序集分配多个强名称。 强名称相同的程序集应该是相同的。

通过签发具有强名称的程序集,您可以确保名称的全局唯一性。 强名称还特别满足以下要求:

  • 强名称依赖于唯一的密钥对来确保名称的唯一性。 任何人都不会生成与您生成的相同的程序集名称,因为用一个私钥生成的程序集的名称与用其他私钥生成的程序集的名称不相同。
  • 强名称保护程序集的版本沿袭。 强名称可以确保没有人能够生成您的程序集的后续版本。 用户可以确信,他们所加载的程序集的版本出自创建该版本(应用程序是用该版本生成的)的同一个发行者。
  • 强名称提供可靠的完整性检查。 通过 .NET Framework 安全检查后,即可确信程序集的内容在生成后未被更改过。 但请注意,强名称中或强名称本身并不暗含信任级别,例如由数字签名和支持证书提供的信任。

  a):生成密钥对,生成的密钥由开发负责人保管

    Sn  -k Key.snk

  b):提取公钥,公钥分发给下属开发人员

    sn -p Key.snk  Key.public.snk

  c):生成强名称签名,并设置延迟签名的程序集

    在VS中配置强名称签名:

    打开项目属性页->签名,选择为程序集签名,浏览选择刚才创建的公钥。然后,选择延迟签名。

    

  c):开发完成后,由拥有私钥访问权限的人为程序集(A.dll)签名。

    SN.exe -Ra A.dll Key.snk

延迟签名:

  开发人员在日常使用中无法访问严密保护的密钥对。 公钥通常是可用的,但对私钥的访问权仅限于少数个人。 开发强名称程序集时,每个引用具有强名称的目标程序集的程序集中都包含了用于为目标程序集指定强名称的公钥的标记。 这要求公钥在开发过程中可用。

因此,可以在生成时使用延迟签名或部分签名,在可迁移可执行 (PE) 文件中为强名称签名保留空间,将实际签名延迟至后面某些阶段。

2、数字证书签名

  数字证书由可信任的第三方机构颁布,因此经过数字证书签名的程序集,可以标识唯一的发布者。还可以减少杀毒软件的误报

  有数字证书签名与无数字证书签名的程序集对比:

通过对属性页的对比,可以判断程序是否是来自于可信的的发布者。

  

  

时间: 2024-11-09 10:00:22

为程序集添加强名称签名与数字证书签名的相关文章

PHP利用数字证书签名

业务背景 在和支付方对接支付接口时,商户发送报文时需要根据订单内容和商户数字证书对订单内容进行签名.用于身份校验和防止数据被篡改. 这里涉及到如何使用支付接口提供商颁发的数字证书进行签名. workflow 根据支付接口文档,按文档规则得到带签名字符串 原文地址:https://www.cnblogs.com/aworkstory/p/12557128.html

自己封装的数字证书签名及签名验证方法,附带生成证书的语句

如果java环境搭建好,注释中内容可以新建一个bat来执行,或者直接粘贴到黑屏执行,即可生成私钥和公钥的证书 REM # create keystore filekeytool -genkey -dname "CN=Test Bank, OU=Test, O=Test, L=BeiJing, ST=BeiJing, C=CN" -alias testAlias -keyalg RSA -keysize 1024 -keystore TestPrivate.jks -keypass 12

无需苹果企业证书签名,IPA证书签名,ios证书签名,不用签名证书将网页封装成苹果描述文件

有什么办法能无需苹果企业签名,无需IPA证书签名,无需ios签名证书就能将网页生成苹果描述文件(此方法只支持网站封装描述文件生成,原生的用不了) 近期很多朋友想把网站变成app的方法,原因很多种,有的是灰色的网站产品不能用网页展示,有的是觉得网页太low想开发个app显得高的上. 其实网站变成app很简单,只需要您的网站是H5自适应的或者网站支持手机端访问,就可以,直接封装成APP发布出去. 封装打包生成app是很简单的,网上一堆生成描述文件工具,打包服务网站分分钟可以完成.价格也就是几百块钱.

自己生产签名和数字证书的方法

一.原因 1.如果apk发布到网上,系统默认的签名debug.keystore存在安全问题,所以要自己写签名. 二.方法 方法一:利用JDK中的keytool.exe工具 利用JDK中的keytool.exe工具 我的目录是: E:\JAVA\jdk\bin\keytool.exe 步骤 1.在windows命令行运行keytool,前提是之前配好了jdk 2.查看生产密钥对帮助 3.生产数字签名和证书 4.ok了,已经生产好了 方法二.利用eclipse的项目导出功能 步骤 1.右击项目空白处

数字证书的基础知识

在之前的<iOS开发者证书以及代码签名学习笔记>博文中介绍了iOS开发证书以及代码签名相关的知识点,为了更好理解其中证书的特性,这里对数字证书以及相关的知识进行了整理和总结. 在讲数字证书之前必须要讲非对称加算法和摘要算法,因为数字证书的基础就是各种加解密算法(非对称加密.摘要算法),而其中的核心就是非对称加密算法了.目前而言加密方法可以分为两大类.一类是单钥加密(private key cryptography)也可以称为对称加密,还有一类叫做双钥加密(public key cryptogr

[转]SSL协议与数字证书原理

1 SSL(Secure Socket Lclientyer)是netscclientpe公司设计的主要用于weserver的安全传输协议.这种协议在WESERVER上获得了广泛的应用. SSL在TCP之上建立了一个加密通道,通过这一层的数据经过了加密,因此达到保密的效果. SSL协议分为两部分:Hclientndshclientke Protocol和Record Protocol,. 其中Hclientndshclientke Protocol用来协商密钥,协议的大部分内容就是通信双方如何利

Java加密解密与数字证书的操作

1 keytool命令总结 一.创建数字证书 交互模式 使用默认的密钥库.keystore(文件夹是c: Documents and Settingusername)和算法(DSA) keytool -genkey 默认的别名mykey 密钥库中能够存放多个条目(公钥/私钥对和证书),它们在密钥库中以别名(alias)区分. [plain] view plaincopy keytool -genkey -alias mytest -keyalg RSA -keysize 1024 -keysto

『转载』 SSL协议与数字证书原理

SSL协议与数字证书原理 1 SSL(Secure Socket Lclientyer)是netscclientpe公司设计的主要用于weserver的安全传输协议.这种协议在WESERVER上获得了广泛的应用. SSL在TCP之上建立了一个加密通道,通过这一层的数据经过了加密,因此达到保密的效果. SSL协议分为两部分:Hclientndshclientke Protocol和Record Protocol,. 其中Hclientndshclientke Protocol用来协商密钥,协议的大

JAVA中数字证书的维护及生成方

Java中的keytool.exe可以用来创建数字证书,所有的数字证书是以一条一条(采用别名区别)的形式存入证书库的中,证书库中的一条证书包含该条证书的私钥,公钥和对应的数字证书的信息.证书库中的一条证书可以导出数字证书文件,数字证书文件只包括主体信息和对应的公钥.  每一个证书库是一个文件组成,它有访问密码,在首次创建时,它会自动生成证书库,并要求指定访问证书库的密码.  在创建证书的的时候,需要填写证书的一些信息和证书对应的私钥密码.这些信息包括 CN=xx,OU=xx,O=xx,L=xx,