标签: pki

我是否应该接受信托锚签署的OSCP响应者证书?

有人可以帮助我以下吗?
RFC2560定义何时可以接受OCSP响应者证书(签署响应):

   1. Matches a local configuration of OCSP signing authority for the
   certificate in question; or

   2. Is the certificate of the CA that issued the certificate in
   question; or

   3. Includes a value of id-ad-ocspSigning in an ExtendedKeyUsage
   extension and is issued by the CA that issued the certificate in
   question."
Run Code Online (Sandbox Code Playgroud)

我的问题是:
如果OCSP响应者的证书是由验证路径的信任锚签名的,它是否也被认为是被接受的?
我的印象应该是,但这并没有在RFC上明确说明,也没有找到明确的参考.

从我对RFC的阅读来看,即使它是由TA签署的,它仍然对OCSP响应无效.
感谢任何帮助
注意:我正在使用java,以防万一

更新:
在RFC的2.2节中:

所有明确的响应消息都应进行数字签名.
用于签署响应的密钥必须属于以下之一:

- 颁发相关证书 的CA--
请求者信任其公钥的可信响应者
- CA指定响应者(授权响应者),持有由CA直接颁发的特殊标记证书,表明响应者可能发布该CA的OCSP响应

第2点对我来说似乎含糊不清.
它可能意味着:
a)任何PK可信任,因此Trust Anchor是可接受的

b)在第一个引用中具有point(1)的含义,这意味着预先配置证书(any)以信任为OCSP响应者,例如在这里完成:

   Security.setProperty("ocsp.responderCertSubjectName",ocspCert.getSubjectDN().getName));
   List<X509Certificate> list = new …
Run Code Online (Sandbox Code Playgroud)

java security cryptography ocsp pki

9
推荐指数
1
解决办法
1705
查看次数

是否可以在我的应用程序中使用安装在iOS设备上的客户端证书?

我希望能够安装客户端证书(例如通过电子邮件),然后使用该证书对我的应用程序发送的请求进行身份验证.我觉得Apple不会允许这种访问,但找不到任何明确的答案.是真的,还是有办法从应用程序中访问设备上安装的客户端证书?

编辑:为了澄清,这是一个本机应用程序,而不是一个webapp.

certificate pki client-certificates ios

9
推荐指数
1
解决办法
2348
查看次数

Mac OS X代码签名和可执行验证

我在垂直市场的Mac应用程序上工作,该应用程序使用USB加密狗来确保用户付费.它足够昂贵,并且在足够的需求下,"黑帽子"试图破解加密狗方案,因此应用程序在运行时检查可执行文件和关键资源文件,如果某些东西被篡改,程序将无法运行.

随着基于PKI(公钥基础设施)的代码签名在Mac世界中变得越来越普遍,我正在考虑转而使用它来进行运行时验证,这将产生使Gatekeeper高兴的良好副作用.

然而,Apple的兴趣与我的非常不同.他们的重点是让用户满意,因此如果应用程序的签名不正确,Mac OS X将只是询问用户是否要运行它.我的重点是挫败破解者,所以如果我的应用程序签名不正确,我根本不希望它做任何对最终用户有用的事情.

所以我希望我的应用程序能够在运行时使用Apple的签名验证自己的可执行文件和资源.

此外,根据我所读到的提供Mac OS X的库进行验证,他们只是对验证可执行文件的请求给出"是"或"否"的答案.让我感到震惊的是,它很容易受到"黑帽"攻击的影响 - 例如,人们可以简单地将Apple的工具替换为总是说"是的,这是有效的",无论是在系统目录中还是通过改变这些工具的搜索路径.所以我认为在我的应用程序中构建完整的签名验证代码可能是个好主意.

所以我有几个问题:

  1. 有哪些PKI库/ API可以让应用程序验证自己的可执行文件和使用Apple的代码签名系统签名的资源?
  2. 这些库是否有可用的源代码?
  3. 我的安全问题是关于使用Apple随Mac OS X提供的PKI库有效,还是比我想的更安全?
  4. 有没有人有这种他们愿意分享的东西的经验?还有其他问题或提示吗?

在此先感谢您的帮助.

macos xcode code-signing pki

9
推荐指数
1
解决办法
2381
查看次数

使用CA签署的另一个证书签署证书

是否可以使用由CA签名的证书作为其他证书的CA签署新证书,并且仍然由根CA验证它们?

例:

# create new key
openssl genrsa -des3 -out server.key 2048
openssl req -new -key server.key -out server.csr
....
# send csr to ca for signing
....
# now what if we make a new key and sign it with the received crt?
openssl genrsa -des3 -out newkey.key 2048
openssl req -new -key newkey.key -out newkey.csr
openssl x509 -req -in newkey.csr -CA server.crt -CAkey server.key -CAcreateserial -out newcert.crt -days 500
Run Code Online (Sandbox Code Playgroud)

为什么不能这样做?我尝试将这个新证书用于服务,浏览器抱怨证书缺少CA链.基本上我想使用一个为域签名的证书,并使用域证书作为子域的CA为子域创建新证书.这个过程如何设计起作用?

openssl pki x509

9
推荐指数
2
解决办法
8348
查看次数

如果我在具有备用信任路径的链中使附加证书过期,会发生什么情况?

我有一个由 Sectigo(前 Comodo Positive SSL 产品)颁发的证书。它状况良好,有效期为 1 年零 7 个月。此证书由Sectigo RSA 域验证安全服务器CA 颁发。CA 链中有两个中间证书,由供应商提供:最近的 Sectigo RSA 域验证安全服务器 CA 和下一个中间的 USERTrust RSA 证书颁发机构,将于 2020 年 5 月 30 日到期。

中级 USERTrust RSA 证书颁发机构的到期日期非常接近,并由受信任的浏览器 AddTrust 外部 CA Root 签名。

同时,最接近我的域证书中间 Sectigo RSA 域验证安全服务器 CA 由另一个具有相同名称的根签名 USERTrust RSA 证书颁发机构,但这与之前提到的 CA 证书不同。并且这个根被普通浏览器信任。

证书链

我尝试通过 ssllabs.com 的检查器检查它,我发现今天一切正常。但我不明白未来。如果我在链中留下过期的中间件,5 月 30 日之后会发生什么?或者最好事先从链中排除这个中间体?

browser ssl certificate pki

9
推荐指数
1
解决办法
2433
查看次数

1级和3级根之间的区别是什么,以及它们签署的证书?

几乎是问题所在.这两类根有什么区别?这些根签署的证书之间的差异?第1类签署的证书有什么用途,而第3类没有,反之亦然?

certificate pki certificate-authority

8
推荐指数
2
解决办法
1万
查看次数

"导出私钥"是什么意思(Makecert -pe)?

通过指定-pe开关(使用Makecert实用程序),我们可以将私钥导出.

a)私钥可以出口是什么意思?我们可以将创建的.pvk文件(包含私钥)复制到另一个系统并在那里使用它?

b)如果是这样,那么我假设.pvk仅在要导出私钥时才创建?!因此,当我们不想导出私钥时如何使用/获取私钥,因此–pe在创建证书时不指定switch?

谢谢

.net certificate pki

8
推荐指数
1
解决办法
2035
查看次数

在Web应用程序中对数据进行数字签名

我有一个Web应用程序,其中一些数据(不是文件)需要使用PKI私钥进行数字签名.PKI证书和私钥将位于USB Cryptotoken中,当插入USB插槽时,它会将证书注册到浏览器.这减轻了使用证书进行身份验证的痛苦,因为我通过在我的应用程序中进行ssl-renegotiation.

但是,使用证书进行数字签名似乎有点棘手.我可以想到几种方法来做到这一点

  1. CAPICOM - http://en.wikipedia.org/wiki/CAPICOM 这适用于支持CAPICOM的浏览器(例如IE).但是,似乎微软已经停止了这一点.

  2. Mozilla Crypto对象 - https://developer.mozilla.org/en-US/docs/JavaScript_crypto

  3. WebCrypto API - 大多数浏览器尚不支持此功能.

  4. 自定义Java Applet或一些可自由开源的JavaApplet控件.

  5. 还有其他选择吗?

我试图找出在Web应用程序中执行此操作的常见,方便和安全的方法.

注意:

  1. 我很乐意支持流行的浏览器.
  2. 我正在签署一小段数据 - 比如100-200字节而不是文件.
  3. 我更喜欢PKCS#7签名.

security web-applications pki digital-signature pkcs#7

8
推荐指数
1
解决办法
3795
查看次数

如何检查crl文件的到期日期

我的ssl证书的证书吊销列表有问题.

如何查看crl文件的截止日期?如何验证crl文件?

pki ssl-certificate x509certificate

8
推荐指数
1
解决办法
1万
查看次数

CORS与客户端https证书

我有一个有两个https服务器的站点.一个(前端)提供由静态页面组成的UI.另一个(后端)提供微服务.他们俩都碰巧使用相同的(测试)X509证书来识别自己.单独地,我可以通过https连接到它们,需要客户端证书"tester".

到目前为止,我们通过nginx设置隐藏了CORS问题,这使得前端和后端看起来是相同的Origin.我已经为所有请求实现了标题'Access-Control-Allow-Origin','Access-Control-Allow-Credentials'; 使用方法,预检检查请求的标题(OPTIONS).

  • 在Chrome中,像这样的跨站点工作得很好.我可以看到前端URL和后端URL是不同的站点.我看到在发出后端请求之前发出了OPTIONS请求.

  • 即使Chrome似乎不需要它,我确实找到了将用于执行请求的xmlhttprequest对象并对其执行了操作xhr.withCredentials = true,因为这似乎是fetch.js在它获取时所做的事情"credentials":"include".我注意到有一个xhr.setRequestHeader可用的功能,我可能需要用来让Firefox开心.

    • Firefox对UI调用的行为相同.但对于所有后端调用,我得到405.当它这样做时,没有与服务器建立网络连接.浏览器刚刚决定这是405而没有执行任何https请求.尽管这与Chrome的行为不同,但这种做法还是有意义的.前端UI和后端服务都需要选择客户端证书.当我连接到UI时,我选择了证书"tester".当它发出后端请求时,它可以假设应该使用相同的客户端证书来到达后端.但也许它假设它可能会有所不同,而且我还需要告诉Firefox.

有没有人在这里使用CORS结合这样的2路SSL证书,并且有这个Firefox问题并在某处修复了它.我怀疑它不是服务器端修复,而是客户端需要做的事情.

https pki cors

8
推荐指数
1
解决办法
6221
查看次数