有人可以帮助我以下吗?
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) 我希望能够安装客户端证书(例如通过电子邮件),然后使用该证书对我的应用程序发送的请求进行身份验证.我觉得Apple不会允许这种访问,但找不到任何明确的答案.是真的,还是有办法从应用程序中访问设备上安装的客户端证书?
编辑:为了澄清,这是一个本机应用程序,而不是一个webapp.
我在垂直市场的Mac应用程序上工作,该应用程序使用USB加密狗来确保用户付费.它足够昂贵,并且在足够的需求下,"黑帽子"试图破解加密狗方案,因此应用程序在运行时检查可执行文件和关键资源文件,如果某些东西被篡改,程序将无法运行.
随着基于PKI(公钥基础设施)的代码签名在Mac世界中变得越来越普遍,我正在考虑转而使用它来进行运行时验证,这将产生使Gatekeeper高兴的良好副作用.
然而,Apple的兴趣与我的非常不同.他们的重点是让用户满意,因此如果应用程序的签名不正确,Mac OS X将只是询问用户是否要运行它.我的重点是挫败破解者,所以如果我的应用程序签名不正确,我根本不希望它做任何对最终用户有用的事情.
所以我希望我的应用程序能够在运行时使用Apple的签名验证自己的可执行文件和资源.
此外,根据我所读到的提供Mac OS X的库进行验证,他们只是对验证可执行文件的请求给出"是"或"否"的答案.让我感到震惊的是,它很容易受到"黑帽"攻击的影响 - 例如,人们可以简单地将Apple的工具替换为总是说"是的,这是有效的",无论是在系统目录中还是通过改变这些工具的搜索路径.所以我认为在我的应用程序中构建完整的签名验证代码可能是个好主意.
所以我有几个问题:
在此先感谢您的帮助.
是否可以使用由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为子域创建新证书.这个过程如何设计起作用?
我有一个由 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 日之后会发生什么?或者最好事先从链中排除这个中间体?
几乎是问题所在.这两类根有什么区别?这些根签署的证书之间的差异?第1类签署的证书有什么用途,而第3类没有,反之亦然?
通过指定-pe开关(使用Makecert实用程序),我们可以将私钥导出.
a)私钥可以出口是什么意思?我们可以将创建的.pvk文件(包含私钥)复制到另一个系统并在那里使用它?
b)如果是这样,那么我假设.pvk仅在要导出私钥时才创建?!因此,当我们不想导出私钥时如何使用/获取私钥,因此–pe在创建证书时不指定switch?
谢谢
我有一个Web应用程序,其中一些数据(不是文件)需要使用PKI私钥进行数字签名.PKI证书和私钥将位于USB Cryptotoken中,当插入USB插槽时,它会将证书注册到浏览器.这减轻了使用证书进行身份验证的痛苦,因为我通过在我的应用程序中进行ssl-renegotiation.
但是,使用证书进行数字签名似乎有点棘手.我可以想到几种方法来做到这一点
CAPICOM - http://en.wikipedia.org/wiki/CAPICOM 这适用于支持CAPICOM的浏览器(例如IE).但是,似乎微软已经停止了这一点.
Mozilla Crypto对象 - https://developer.mozilla.org/en-US/docs/JavaScript_crypto
WebCrypto API - 大多数浏览器尚不支持此功能.
自定义Java Applet或一些可自由开源的JavaApplet控件.
还有其他选择吗?
我试图找出在Web应用程序中执行此操作的常见,方便和安全的方法.
注意:
我的ssl证书的证书吊销列表有问题.
如何查看crl文件的截止日期?如何验证crl文件?
我有一个有两个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开心.
有没有人在这里使用CORS结合这样的2路SSL证书,并且有这个Firefox问题并在某处修复了它.我怀疑它不是服务器端修复,而是客户端需要做的事情.