【无数字签名】linux平台数字签名实现无示例

励志句子
评论 2023-07-22 07:12:53 浏览
一、编程高手来啊!!!!!急啊!!!!!

1、第一步,登录洛克王国,点击右上角的任务档案。

二、求助:战网安装失败和星际2无法启动ubuntu平台,用lutris安装战网失败,提示战网数字签名失效【linux游戏吧】

1、求助、战网安装失败和星际2无法启动ubuntu平台,用lutris安装战网失败,提示战网数字签名失效,按照战网官方操作导入数字签名证书依然无效使用wine直接安装,成功安装并成功登录,但下载完星际2后无法启动星际2。

2、据网上搜索,很多战网出现提示数字签名失效之类的问题,好像都是网络服务器问题。

三、linux下使用openssl检测PE文件数字签名的证书是否有效

1、第一个坑、有效期  windows在判断证书是否有效时不检测证书的有效期,即使该证书超过有效期好几年了,只要没有被吊销,微软仍然认为它是有效的.但在openssl提供的X509_verify_cert函数会验证证书的有效期,因此需要注释掉验证有效期的那部分代码并重新编译openssl...  OK,从openssl官网上下载新的版本,好吧,现在还是刚刚修复Heartbleed漏洞的0.1g版本...  下载,解压,看下INSTALL文档,先试试可以编译不、./configmake  运气不错,不用安装什么依赖直接编译成功.将代码根目录产生的libcrypto.a添加到项目中测试下,OK,可以使用,下面开始折腾了~  在crypto/x509/x509_vfy.c的153行找到X509_verify_cert函数(在线查看),局部变量ok缓存每一步验证是否通过,它依次调用了、check_issuedcheck_chain_extensionscheck_name_constraintscheck_trustcheck_revocationinternal_verifycheck_policy  其中internal_verify(在线查看)验证了证书的有效期,进入这个函数,在1654行找到这个代码、ok=check_cert_time(ctx,xs)if(。

2、ok)gotoend  看看check_cert_time函数,确认是检查notBefore和notAfter,因此将上面三行代码注释掉,验证证书时就不会检测有效期了.  然后就是重新编译openssl,将libcrypto.a集成到项目里了~  第二个坑、unhandledcriticalextension  搜索了下,在openssl官网上找到这个、-ignore_criticalNormallyifanunhandledcriticalextensionispresentwhichisnotsupportedbyOpenSSLthecertificateisrejected(asrequiredbyRFC5280).Ifthisoptionissetcriticalextensionsareignored.  原来是当openssl遇到证书中有它不支持的未处理的关键扩展(unhandledcriticalextension?)时,它会拒绝加载该证书.  再搜索下-ignore_critical,在verify.c中找到如下代码片段、elseif(strcmp(*argv,"-ignore_critical")==0)vflags|=X509_V_FLAG_IGNORE_CRITICAL  然后再使用X509_STORE_set_flags函数设置标志位、X509_STORE*ctx...X509_STORE_set_flags(ctx,vflags)  即可.  第三个坑、certificatesignaturefailure  这个坑填不上了,openssl说、7X509_V_ERR_CERT_SIGNATURE_FAILURE、certificatesignaturefailurethesignatureofthecertificateisinvalid.  在windows下导出证书文件,直接用openssl验证,在加载证书就会出错,PEM_read_bio_X509返回为空....  第四个坑、Acertificatewasexplicitlyrevokedbyitsissuer.  Acertificatewasexplicitlyrevokedbyitsissuer.是Sysinternals提供的工具sigcheck.exe的检测结果,把文件拎出来一看,证书真的被撤销了...  OK,只好根据证书上的CRLDistributionPoint(CRL分发点)提供的URL下载撤销证书列表文件,然后在调用X509_verify_cert验证证书链之前,设置填充被撤销的证书列表、X509_CRL*d2i_X509_CRL_fp(FILE*fp,X509_CRL**crl)//读取被撤销的证书列表STACK_OF(X509_CRL)*sk_X509_CRL_new_null()#definesk_X509_CRL_push(st,val)SKM_sk_push(X509_CRL,(st),(val))//sk_X509_CRL_push(STACK_OF(X509_CRL)*crls,X509_CRL*crl)voidX509_STORE_CTX_set0_crls(X509_STORE_CTX*c,STACK_OF(X509_CRL)*sk)//设置被撤销的证书列表  同时,也要设置检查被撤销证书列表的标志位X509_V_FLAG_CRL_CHECK,然后再调用X509_verify_cert验证证书链即可.  填了第四个坑后又引起了第五个坑(如何获取撤销证书列表)和第六个坑(设置检测撤销证书列表的标识位后,如果该证书没有撤销证书列表则直接报错)...  第五个坑、获取撤销证书列表文件  证书上的CRLDistributionPoint(CRL分发点)属于扩展属性,在PKCS#CryptographicMessageSyntaxV5上没有相关介绍.  在StackOverflow上找到这个问答Openssl-Howtocheckifacertificateisrevokedornot,其中第二个回答说CRL是在RFC5280中定义的,除了证书中附带被撤销的证书列表以外还有使用OCSP协议的,即使证书撤销列表也分为使用URL分发点和LDAPDNs(???)提供的,目前先考虑使用URL作为CRL分发点的情况吧.  然而openssl没有提供直接获取CRL分发点URL的API,那个回答说Apache的mod_ssl模块有本地CRL和OCSP检测的实现代码,但没有说明哪里有检测使用URL作为CRL分发点的实现方法.  然后又在frank4dd.com上找到这个代码certextensions.c,他给出了一个如何使用openssl从X.509v3版本的证书文件中提取扩展内容的示例程序,太感谢Frank4DD这位仁兄了~~~  到这里后,可以直接使用他的示例程序,根据关键字FullName和URI定位CRL分发点的URL,也可以看看openssl是如何提取这个URL的,然后自己实现一个接口.  如果自作孽使用第二种方法的话,就编译个debug版的openssl库,然后调试跟进X509V3_EXT_print函数,一步一步的向下走,直到走到GENERAL_NAME_print函数,这里就是终点了...然后就知道了CRL分发点的URL的编号为6,也就是GEN_URI,直接取结果吧.  第六个坑、CRL有效期  在windows环境下每次查看PE文件的数字签名时,windows都会从CRL分发点下载吊销证书列表做验证, 一般来说,每个CRL的有效期是短的, 大概只有 5~20天的有效期吧,然而我们不可能像windows一样每次查看数字签名时就从 CRL分发点 下载新的吊销列表.  另外,windows遇到过期的CRL时不会产生证书链无效的结果,但openssl在遇到过期的CRL时就会导致证书链验证失败,因此在加载和验证CRL时,要忽略CRL的有效期.  分析openssl源代码,X509_verify_cert调用check_revocation,之后调用check_cert,然后再调用check_crl,在这个函数里有检测CRL有效期的代码、if(。

3、(ctx->current_crl_score&CRL_SCORE_TIME)){ok=check_crl_time(ctx,crl,1)if(。

4、ok)gotoerr}  将其注释掉即可忽略检测CRL有效期.  第七个坑、CRL列表为空导致openssl认为没有加载CRL    9初始化顺序  10证书名、key_id​。

四、linux下使用openssl检测PE文件数字签名的证书是否有效

1、第一个坑、有效期  windows在判断证书是否有效时不检测证书的有效期,即使该证书超过有效期好几年了,只要没有被吊销,微软仍然认为它是有效的.但在openssl提供的X509_verify_cert函数会验证证书的有效期,因此需要注释掉验证有效期的那部分代码并重新编译openssl...  OK,从openssl官网上下载新的版本,好吧,现在还是刚刚修复Heartbleed漏洞的0.1g版本...  下载,解压,看下INSTALL文档,先试试可以编译不、./configmake  运气不错,不用安装什么依赖直接编译成功.将代码根目录产生的libcrypto.a添加到项目中测试下,OK,可以使用,下面开始折腾了~  在crypto/x509/x509_vfy.c的153行找到X509_verify_cert函数(在线查看),局部变量ok缓存每一步验证是否通过,它依次调用了、check_issuedcheck_chain_extensionscheck_name_constraintscheck_trustcheck_revocationinternal_verifycheck_policy  其中internal_verify(在线查看)验证了证书的有效期,进入这个函数,在1654行找到这个代码、ok=check_cert_time(ctx,xs)if(。

五、课程帮助

1、简介JavaTMWebStart是基于Java技术的应用程序的一种部署解决方案。

2、它是连接计算机和Internet的便捷通道,允许用户在完全脱离Web的情况下运行和管理应用程序。

3、JavaWebStart提供一次单击激活应用程序的简易方法,并始终运行应用程序的新版本,从而可避免复杂的安装或升级过程。

4、传统情况下,通过Web发布软件需要用户在Web上查找、下载,而后在系统中存放并执行安装程序。

5、执行安装程序后,将提示指定安装路径和安装选项,例如完全、典型或小安装。

6、这是一项耗时而又复杂的任务,并且在安装软件的每个新版本时都必须重复进行。

7、相反,通过Web部署的应用程序,例如您喜爱的基于HTML的电子邮件客户软件和日历、拍卖站点等等,都容易安装和使用。

8、Web浏览器使整个过程自动完成。

9、没有复杂的下载、安装和配置过程,并且您始终使用新版本。

10、JavaWebStart技术可为全功能应用程序提供与如上所述的Web浏览器为HTML应用程序提供的相同的好处。

11、JavaWebStart技术是一种面向Web的应用程序部署解决方案。

12、使用全功能应用程序替代基于HTML的客户软件具有多种好处、高度交互的用户界面,可与传统应用程序(如文字处理和电子表格软件)相媲美。

13、较低的带宽需求。

14、应用程序无须在每次单击时都与Web服务器进行连接,它可以缓存已经下载的信息。

15、这样,它可以在低速连接上实现更好的交互性。

16、支持脱机使用。

17、当然,在悔芦第一次使用时仍得下载应用程序。

18、基于HTML的应用程序因而具有激活的开销。

19、典型情况下,打开一个Web页面需要几秒钟。

20、基于JavaTM技术的应用程序通过典型的调制解调器连接下载将需要几分钟。

21、JavaWebStart将下载的所有文件缓存在本地计算机上。

22、这样,尽管应用程序的激活开销高于HTML页面,但此后便可在瞬间完成应用程序的启动,因为所需的全部资源都可在本地获得。

23、每次启动时,JavaWebStart将检查Web服务器是否有应用程序的更新版本,如果有,则自动将其下载并启动。

24、这样,应用程序将自动更新。

25、没有复杂的升级过程。

26、安全性JavaWebStart构建于Java2平台之上,该平台提供完善的安全体系结构。

27、在缺省情况下,通过JavaWebStart启动的应用程序将在受控的环境(“沙箱”)中运行,只能对文件和碧笑带网络进行有限的访问。

28、因此,通过JavaWebStart启动应用程序可保持系统的安全性和完整性。

29、应用程序可请求对系统进行无限制访问。

30、这种情况下,JavaWebStart将在应用程序第一次启动时显示安全警告对话框。

31、安全警告将显示开发应用程序的供应商的有关信息。

32、如果选择信任供应商,将启动应用程序。

33、应用程序的来源信息取决于数字代码签名。

34、安装说明有关此发行版的安装说明和系统要求,请参见安装指南。

35、使用JavaWebStart软件JavaWebStart使您可以直接通过Web启动基于Java技术的应用程序。

36、应用程序可以通过以下三种方式启动、通过单击链接从Web浏览器启动。

37、从JavaWebStart的内置“应用程序管理器”启动,管理器将跟踪升盯近使用的应用程序,并提供对喜好应用程序的快速访问。

38、从桌面图标或“开始”菜单(仅适用于MicrosoftWindows)启动。

39、无论使用何种方式,每次启动应用程序以检查是否有应用程序的更新版本时,JavaWebStart都将重新连接到Web服务器。

40、从Web浏览器启动在JavaWebStart的演示页上(http、//java.sun.com/products/javawebstart/demos.html),提供了到许多应用程序的链接,可以通过鼠标单击来启动这些应用程序。

41、请尝试单击启动按钮来启动不同的应用程序。

42、Web浏览器将启动JavaWebStart,它将下载、缓存并执行指定的应用程序。

43、您将注意到第二次启动应用程序时速度明显加快,因为它已在本地存在而无须重新下载。

44、页面上的大部分演示程序均可直接下载并执行,无须用户干预。

45、这些应用程序在受限环境中运行,不能访问本地磁盘和网络,并且可以它们不会在计算机上安装任何病毒。

46、某些演示程序需要额外的权限,例如访问本地硬盘。

47、对于这些应用程序,将弹出安全对话框,根据代码的数字签名显示有关应用程序的来源信息。

48、应用程序只有在您决定信任供应商才将运行。

49、这的确就是使用JavaWebStart的全部需求,但是它是如何工作的?启动应用程序的HTML链接实际上就是标准的HTML链接。

50、但是,它不是指向其他Web页,而是链接到称作JNLP文件的特殊配置文件。

51、Web浏览器检查文件的扩展名和/或MIME类型,确定它属于JavaWebStart。

52、然后以下载的JNLP文件为参数启动JavaWebStart。

53、JavaWebStart按照JNLP文件的指示进行下载、缓存和运行应用程序。

54、从内置“应用程序管理器”启动“应用程序管理器”为JavaWebStart产品的内置部分。

55、它使您可以快速简便地启动曾经通过JavaWebStart启动的应用程序。

56、管理器由“历史”菜单和“开始/程序”菜单组合而成,为通过Web部署的基于Java技术的应用程序提供相应的功能。

57、还可通过“应用程序管理器”链接到应用程序的主页,以查看其附加信息。

58、您可以双击应用程序图标或单击启动按钮从“应用程序管理器”启动应用程序。

59、“应用程序管理器”另一个重要功能是“首选设置”对话框,该对话框使您可以查看并修改JavaWebStart使用的设置。

60、例如,它包括使您可以进行下列设置的选项卡、指定HTTP代理(或告诉JavaWebStart使用缺省的浏览器设置)。

61、清除已下载的应用程序缓存。

62、指定JavaRuntimeEnvironment不同版本的位置。

63、指定是否显示Java控制台。

64、查看根安全证书集合。

65、“应用程序管理器”可通过单击桌面上的JavaWebStart图标或MicrosoftWindows“开始”菜单中的图标启动。

66、在SolarisTM操作环境及Linux上,通过调用JavaWebStart安装目录中的javaws命令启动。

67、也可从Web浏览器启动“应用程序管理器”。

68、有关示例,请参阅演示页(http、//java.sun.com/products/javawebstart/demos.html)。

69、从桌面图标或“开始”菜单(仅适用于MicrosoftWindows)启动JavaWebStart技术可在MicrosoftWindows桌面和“开始”菜单中自动创建快捷方式,供通过Web部署的基于Java技术的应用程序使用。

70、在缺省情况下,如果应该创建快捷方式,JavaWebStart将在第二次启动应用程序时提示。

71、该参数可通过“首选设置”面板更改。

72、快捷方式还可以通过“应用程序管理器”使用应用程序/创建快捷方式和应用程序/删除快捷方式菜单项添加和删除。

73、在代理服务器/防火墙后面使用JavaWebStart软件JavaWebStart软件必须用正确的代理设置配置以启动来自防火墙之外的应用程序。

74、JavaWebStart软件将自动尝试检测系统缺省浏览器(MicrosoftWindows上为InternetExplorer或NetscapeTM浏览器,Solaris操作环境及Linux上为Netscape浏览器)的代理设置。

75、JavaWebStart技术支持大多数Web代理自动配置脚本。

76、它几乎可检测所有环境中的代理设置。

77、如果无法自动检测到代理设置,则会在使用JavaWebStart时,提示您指定代理设置。

78、JavaWebStart还将提示输入访问身份验证代理服务器所需的用户名和口令。

79、该用户名和口令将存储为JavaWebStart的当前入口信息。

80、但是,在调用新的Java虚拟机时,如果访问一个安全Web站点将提示输入用户名和口令,因为该信息随Java虚拟机实例存储。

81、也可以使用JavaWebStart“首选设置”面板查看或编辑代理配置。

82、通过单击(MicrosoftWindows)桌面上的图标或在JavaWebStart安装目录(Solaris操作环境及Linux)下键入./javaws命令启动“应用程序管理器”,然后选择“编辑/首选设置”。

83、如果处于通过代理服务器访问Web的环境中,建议使用JavaWebStart首选设置面板检查是否设置正确。