我对PKI,证书和所有相关的东西都比较新.
据我所知,在公钥加密中,用公钥加密并用私钥解密.只有一个私钥可以对应任何公钥,但反之则不然.这是对的吗?或者是一对一的映射?
因此,数字签名的工作方式是对证书的内容进行哈希处理,然后使用私钥"签名".然后使用相应的公钥验证签名.
所以,这是我感到困惑的地方.使用公钥加密邮件和使用私钥签名邮件摘要有什么区别?
我试图从客户端连接到一个Linux服务器,
openssl s_client -connect <IP of Server>:443
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
socket:连接拒绝
连接:errno = 111
ssl openssl digital-certificate ssl-certificate x509certificate
我在CSR文件(证书签名请求)中运行,我需要从中提取一些信息.
有一种方法可以使用.NET Framework对其进行解码吗?
如果有人能够对以下问题有所了解,我将非常感激.我已经阅读了keytool文档但是找不到任何关于这里可能出现问题的提示.
我创建了一个密钥库
keytool -genkey -alias privateKeyName -keyalg RSA -keystore privateKeyName.jks -validity 720 -keysize 1024
我创建了一个证书请求
keytool -certreq -alias privateKeyName -keystore privateKeyName.jks -file certReqFileName.csr
在签名机构给我.cer文件后,我试着用它导入它
keytool -import -alias privateKeyName -file certReqFileName_t_f.cer -keystore privateKeyName.jks
导入失败
keytool错误:java.lang.Exception:无法从回复建立链
我已经坚持了一段时间,所以任何帮助都会很棒.谢谢.
以下请求openssl
挂起
openssl req -key server.key -out server.csr
Run Code Online (Sandbox Code Playgroud)
知道问题可能是什么?
运行已经过数字签名的可执行文件时,我得到了一个非常奇怪的结果.
可执行文件使用signtool.exe使用适当的2级代码签名证书(非自生成)进行签名.
在Windows 7计算机上进行测试,如果我启动已签名的可执行文件,我会收到Windows警告对话框,说明Publisher Unknown(即未签名).
但是,如果我然后取消并右键单击可执行文件并转到属性 - >数字签名,签名列表将显示签名证书,然后我可以单击该选项并选择"详细信息"以查看签名的详细信息,显示为"数字签名正常".
此时,如果我启动可执行文件,现在所有突然的窗口都正确识别出exectuable已签名并报告正确的"已验证的发布者".
似乎Windows可能没有在线检查证书,直到我从可执行文件的属性对话框中查看实际的证书详细信息(请注意,启动可执行文件后它不仅仅是一个延迟,我等待的时间不长或者我启动它多少次,它将它视为未签名,直到我进入文件的属性/数字签名).
这是我用于测试的通用Windows 7安装 - 它没有以任何方式进行修改或调整.
这种行为似乎打破了Windows上代码签名的主要目的 - 除非用户知道进入右键单击属性并挖掘证书,否则可执行文件被视为无符号.
有什么我想念的吗?某些方法将可执行文件标记为Windows应该主动检查执行时的证书?
有没有办法创建.pfx文件才能签署文件,我找到了一个名为x509 Certificate Generate的程序,但我想知道它是否可以使用c#在代码中生成.
我想问一个关于数字签名的事情,我不太确定.我想获取已经验证过我的数据的SSL证书,而不是创建用于签署某些(PDF)文件的自签名证书.
但问题是:SSL证书可以用于数字签名文件还是以某种方式不兼容?
编辑:澄清一下,这个问题不是关于如何签署PDF,只是关于是否可以使用(或以任何方式转换)SSL证书来签署文件.
是否可以验证仅在层次结构中具有祖先或根证书的签名?
免责声明:我是证书处理的新手,所以请原谅天真的术语.
考虑以下情况.
我的问题是:SP是否可以验证CertIdP签名的邮件的签名只有其父证书CertCA?
背景故事,为什么要这样.
我们正在使用PicketLink实现基于SAML的SSO.我们使用PicketLink的SAML2SignatureValidationHandler来验证签名.为此,服务提供商(SP)需要在其密钥库中具有IdP证书.当签名的SAML断言传递给SP时,此处理程序使用IdP的证书来验证签名.
上述过程运作良好,但我们有一些组织问题.此过程假定SP具有IdP的验证证书.如果出现问题,必须在SP端更换IdP的证书.我们可能会有大量的SP(当数不是数千时),所以这是一个很大的努力.
由于CertIdP和CertSP均由IdP和SP明确信任的相同授权机构(CA)颁发,因此我们认为可以使用CA的证书进行签名验证.如果这样做,这可能消除了在IdP和SP之间交换证书的需要.CA的证书也非常"长寿",所以如果只需要在永恒中交换一次(永恒,在我们的情况下大约10 - 20年).
但是,我不确定在技术上是否可以验证使用CertIdP签名的签名只有父级CertCA.可能吗?或者我们在这里完全错误的轨道?
如果它是相关的,我们在SP方面的Java/JBoss平台上,IdP是第三方软件.
更新:
这是我从IdP获得的签名:
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<ds:Reference URI="#_...">
<ds:Transforms>
<ds:Transform
Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
<ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#"
PrefixList="ds saml samlp" />
</ds:Transform>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<ds:DigestValue>r...=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>X...==</ds:SignatureValue>
</ds:Signature>
Run Code Online (Sandbox Code Playgroud) 我已使用命令“mport-AzureKeyVaultCertificate -VaultName $vaultName -Name $certificateName -FilePath”成功将数字签名证书(附带根证书和链证书)导入到我的 Azure KeyVault 中。该证书是由公共证书颁发机构颁发给我的。
我尝试运行完全相同的命令来导入根证书和链证书,但我无法这样做。
我的问题是:有没有办法将根证书和中间证书导入到 KeyVault 中?或者它们需要从其他地方进口?
谢谢