标签: ocsp

Android中的OCSP证书装订

在过去的几天里,我一直在试着在Android上实施OCSP验证.

到目前为止,iOS已经很容易实现,但对于Android,我遇到的每一条信息都无法正常工作.我一直在使用我的客户的API端点和 这个网站来运行证书撤销测试,到目前为止,我还没有幸运地在我的Android应用程序中检测到已撤销的证书.我正在使用OKHTTPClient.这是我验证认证撤销的方法

public void checkServerTrusted(X509Certificate[] chain, String authType)
            throws CertificateException {

        assert (chain != null);
        if (chain == null) {
            throw new IllegalArgumentException(
                    "checkServerTrusted: X509Certificate array is null");
        }

        assert (chain.length > 0);
        if (!(chain.length > 0)) {
            throw new IllegalArgumentException(
                    "checkServerTrusted: X509Certificate is empty");
        }

        if (VERIFY_AUTHTYPE) {
            assert (null != authType && authType.equalsIgnoreCase(AUTH_TYPE));
            if (!(null != authType && authType.equalsIgnoreCase(AUTH_TYPE))) {
                throw new CertificateException(
                        "checkServerTrusted: AuthType is not " + AUTH_TYPE);
            }
        }

        if(chain[0]!=null){
            try {
                X509Certificate …
Run Code Online (Sandbox Code Playgroud)

android ocsp

16
推荐指数
1
解决办法
1213
查看次数

OCSP吊销客户端证书

如果仅使用客户端的java.security.cert.X509Certificate,如何使用OCSP手动检查java中的证书撤销状态?我看不清楚这样做的明确方法.

或者,我可以让tomcat自动为我做,你怎么知道你的解决方案是真的?

java security tomcat ocsp x509certificate

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

iOS/Security.Framework的CRL和OCSP行为?

我正在试图弄清楚在使用Security.Framework验证证书时证书的撤销时的iOS政策.我在iOS的文档中找不到相关信息.在我正在进行的iPad项目的背景下,有理由要求检查某些证书的撤销状态.有关如何使用Security.Framework在证书验证期间强制CRL/OCSP检查的任何想法?或者我是否需要"退回"OpenSSL才能实现这一目标?

似乎在Mac OS X 10.6 CRL/OCSP检查也是可选的,必须通过Keychain Access手动打开.

马亭

security ocsp certificate-revocation x509certificate ios

12
推荐指数
1
解决办法
6152
查看次数

我是否应该接受信托锚签署的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
查看次数

OCSP响应未提供证书状态

我使用Bouncy castle API创建了一个OCSP客户端.我无法从OCSP响应中找到证书状态(说是否已撤销).resp.getCertStatus()返回的值始终为null.这就是我创建OCSP请求的方式.

    private OCSPReq generateOCSPRequest(X509Certificate issuerCert, BigInteger serialNumber)
        throws CertificateVerificationException {

    //Add provider BC
    Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
    try {
        //  CertID structure is used to uniquely identify certificates that are the subject of
        // an OCSP request or response and has an ASN.1 definition. CertID structure is defined in RFC 2560
        CertificateID id = new CertificateID(CertificateID.HASH_SHA1, issuerCert, serialNumber);

        // basic request generation with nonce
        OCSPReqGenerator generator = new OCSPReqGenerator();
        generator.addRequest(id);

        // create details for nonce extension. The nonce extension is …
Run Code Online (Sandbox Code Playgroud)

bouncycastle ocsp

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

如何在iOS 7中使用SecPolicyCreateRevocation检查x.509吊销

我一直试图在不同的时刻使用OCSP和CRL检查iOS 7.0中的X.509证书撤销状态,并且评估返回kSecTrustResultUnspecified(这意味着证书是可信的),而不用实际检查OCSP或CRL源,当我通过链中的所有证书.我在下面提出了我认为相关的任何代码,请帮忙!

谢谢!

PS:ocspOnly和crlOnly是布尔值,表示是否只使用任何撤销检查方法; certs是一个NSArray,包含除锚证书之外的所有链中的证书; 之前正确设置了锚证书.

int evaluationMethod = kSecRevocationRequirePositiveResponse;

if (ocspOnly) {
    evaluationMethod |= kSecRevocationOCSPMethod;
} else if (crlOnly) {
    evaluationMethod |= kSecRevocationCRLMethod;
} else {
    evaluationMethod |= kSecRevocationUseAnyAvailableMethod;
}


if ((status = SecTrustCreateWithCertificates((__bridge CFArrayRef)certs, SecPolicyCreateRevocation(evaluationMethod), &trust)) != errSecSuccess) {
    NSLog(@"Failed to create trust with certificate and policy: %ld", status);
    return NO;
}

if ((status = SecTrustSetNetworkFetchAllowed(trust, YES)) != errSecSuccess) {
    NSLog(@"Failed to activate network fetch: %ld", status);
}


status = SecTrustEvaluate(trust, &trustResult);
if (status != errSecSuccess) {
    NSLog(@"Failed …
Run Code Online (Sandbox Code Playgroud)

ocsp certificate ios ios7

9
推荐指数
0
解决办法
1021
查看次数

基于 SSL/TLS 的 OCSP

据我所知,OCSP 只提供明确的请求和响应签名方式([RFC2560,第 7 页] 请求,[RFC2560,第 8 页] 响应),但它没有提及加密。通过 SSL/TLS 运行 OCSP 以保证其机密性是否是典型的(或者甚至可能,我认为当然是这样)?

谢谢。

ssl ocsp confidentiality

7
推荐指数
1
解决办法
3481
查看次数

如何使用 Python Requests 库检查 OCSP 客户端证书吊销?

如何使用 Python 请求库向 EJBCA OSCP 响应程序发出简单的证书吊销状态请求?

例子:

# Determine if certificate has been revoked

    ocsp_url = req_cert.extensions[2].value[0].access_location.value
    ocsp_headers = {"whatGoes: here?"}
    ocsp_body = {"What goes here?"}
    ocsp_response = requests.get(ocsp_url, ocsp_headers, ocsp_body)

    if (ocsp_response == 'revoked'):
       return func.HttpResponse(
           "Certificate is not valid (Revoked)."
       )
Run Code Online (Sandbox Code Playgroud)

python ocsp client-certificates python-requests ejbca

7
推荐指数
1
解决办法
7734
查看次数

为什么OCSP装订回调称为AFTER验证回调?

我不是OpenSSL专家,但我一直在尝试编写一些代码来处理连接到SSL安全服务器的客户端的OCSP装订.我对OCSP的理解是,它用于证明所提供的证书尚未被撤销,这意味着我不需要处理管理发行人发布的CRL.

我使用SSL_CTX_set_verify来设置回调以处理证书的验证(好吧,处理OpenSSL自己的内部验证过程的异常.我假设,但是找不到证明此内部过程不检查证书撤销状态的正面证据),并且当前我的代码利用这个机会来检查发行者是否受信任(如果没有,那么发行人的发行人是受信任的,依此类推,直到链被信任或被拒绝),以及其他东西,例如证书未过期.(这也可能已经检查过,但这对我的问题并不重要).

我修改了我的代码,添加了

SSL_set_tlsext_status_type(<the ssl object>, TLSEXT_STATUSTYPE_ocsp); 
SSL_CTX_set_tlsext_status_cb(<the context>, ssl_cb_ocsp_verify);
Run Code Online (Sandbox Code Playgroud)

然后我可以得到响应并在处理程序中检查它.到现在为止还挺好!

但奇怪的是,在获得SSL_CTX_set_verify处理程序后,我得到了OCSP回调.对我来说(诚然天真)的想法,这意味着我有两个选择:

1)使用CRL或自己的OCSP请求检查验证回调中的撤销状态.如果我这样做,那么在OCSP回调中做任何事都没有意义,因为我已经确定了证书的撤销状态2)不要检查验证回调中的撤销状态,并希望疯狂地认为OCSP处理程序是调用.

我注意到如果来自服务器的响应不包含装订的OCSP消息,则在验证处理程序之前调用OCSP处理程序.所以有一种可能性是我最初将某个标志'no_ocsp'设置为0,然后如果我得到没有附加消息的OCSP回调,则将其设置为1.然后在验证处理程序中我可以检查这个以尝试确定是否稍后将调用OCSP处理程序.这似乎有点像一辆汽车,当任何人接近时解锁自己,然后如果接近的人把错误的钥匙插入,它会锁定自己 - 换句话说,它肯定不是"正确"的安全方式?!

因此,我必须对如何使用OCSP,OpenSSL或两者都有一些基本的误解!我究竟做错了什么?

(我已经看到类似的问题解释了如何获取 OCSP装订的消息,但我的问题是关于如何以合理的方式实际使用它,给定回调的顺序.要明确:我可以获得OCSP_RESPONSE任何问题)

openssl ocsp

6
推荐指数
1
解决办法
722
查看次数

Nginx的; 如何使用OCSP验证SSL客户端证书

我正在使用Nginx创建一个安全的连接; 当我撤销客户端证书时,我也可以通过https连接到Nginx,我知道我应该配置ssl_crl指令,但我想使用OCSP来验证客户端证书,我该怎么办?我发现Nginx使用OpenSSL库来建立ssl连接,我应该用openssl.cnf文件做些什么?

ssl ocsp nginx

6
推荐指数
2
解决办法
2242
查看次数